「iPhoneでFlash」をもっと詳しく(Developing for the Apple iPhone using Flash | Adobe Developer Connection)
Developing for the Apple iPhone using Flash | Adobe Developer Connection
AdobeのAditya Bansodさんが上記の記事でより詳しく「iPhoneでFlash」を語ってくれている。
AdobeはAppStoreでFlashアプリを売りたい!とFlash開発者たちから相当プッシュされていたそうだ。
そして,AppStoreの規約を考慮した結果,FlashアプリをiPhoneネイティブアプリにコンパイルするというのがベストな選択肢だと考えたそうだ。
LLVMコンパイラがキモ
技術のキモはLLVMコンパイラだそうだ。これについては良く知らないが,確かCやC++のコードをFPで高速に動かすAlchemyも同じ仕組みだったはず。
FPやJavaなどではJust In Time(JIT)コンパイラが使われているのに対して,予めターゲットCPU(ARM)用のネイティブアセンブリコードを出力しておく事をAhead of Time(AOT) compilationと呼ぶそうだ。
この手法によって,高速なパフォーマンスと最終的なアプリケーションはランタイムを必要としてはならない,という規約の遵守が両立できるようになった,と。
この手法で作成されたアプリケーションは本物のネイティブiPhoneアプリであるわけだから当然と言えるだろう。
どの程度のFlash APIが利用できるのか?
開発言語はAS3のみ。APIはほとんど全てのようだ。
・AIR 2.0
・FP 10.1 API(Open Screen ProjectのFPと同等)
・RTMP(ストリーミング用)
・Remote Shared Objects
・AMF
・SQLite
・ファイルシステムのアクセス
・AIRのwebkit経由の埋め込みHTMLコンテンツ
・ActionScriptを含むSWFの動的ロード(ただしASコードは無視される)
・PixelBenderのフィルタ
・マイクアクセス
・ビデオカメラアクセス
・Flex Framework(モバイル用に最適化されていないため非推奨。モバイル用Flex Frameworkに着手中。)
凄まじい柔軟性だ。
今後iPhoneでもFlashアプリケーションを動かす事を考えると,Flexのフレームワークを使う事はあまり良い選択肢ではないようだ。もしモバイル用のFlex Frameworkが出たとしても,コードのバイト数や速度がある程度犠牲になりそうだし。
Flex BuilderがFlash Builderと名を変えた事も,この事と関係がある気がする。
どの程度iPhoneのネイティブ機能にアクセスできるか?
・マルチタッチ
・スクリーンの方向
・フォトライブラリにイメージを保存
・加速度センサー
・GPS
・カット/コピー/ペースト
・グラフィックスのハードウェアアクセラレーション(OpenGL ESのレンダリングパイプライン使用)
・iPhoneのネイティブビデオプレイヤー経由によるH.264ビデオ再生(ダイレクト再生不可)
当然の事ながら,iPhone OSの標準コントロールは使えないので,UI等は基本的に全て自分で作る事になるだろう。
より詳しくは下記のFAQ参照。
Applications for iPhone:Developer FAQ
AdobeのAditya Bansodさんが上記の記事でより詳しく「iPhoneでFlash」を語ってくれている。
AdobeはAppStoreでFlashアプリを売りたい!とFlash開発者たちから相当プッシュされていたそうだ。
そして,AppStoreの規約を考慮した結果,FlashアプリをiPhoneネイティブアプリにコンパイルするというのがベストな選択肢だと考えたそうだ。
LLVMコンパイラがキモ
技術のキモはLLVMコンパイラだそうだ。これについては良く知らないが,確かCやC++のコードをFPで高速に動かすAlchemyも同じ仕組みだったはず。
FPやJavaなどではJust In Time(JIT)コンパイラが使われているのに対して,予めターゲットCPU(ARM)用のネイティブアセンブリコードを出力しておく事をAhead of Time(AOT) compilationと呼ぶそうだ。
この手法によって,高速なパフォーマンスと最終的なアプリケーションはランタイムを必要としてはならない,という規約の遵守が両立できるようになった,と。
この手法で作成されたアプリケーションは本物のネイティブiPhoneアプリであるわけだから当然と言えるだろう。
どの程度のFlash APIが利用できるのか?
開発言語はAS3のみ。APIはほとんど全てのようだ。
・AIR 2.0
・FP 10.1 API(Open Screen ProjectのFPと同等)
・RTMP(ストリーミング用)
・Remote Shared Objects
・AMF
・SQLite
・ファイルシステムのアクセス
・AIRのwebkit経由の埋め込みHTMLコンテンツ
・ActionScriptを含むSWFの動的ロード(ただしASコードは無視される)
・PixelBenderのフィルタ
・マイクアクセス
・ビデオカメラアクセス
・Flex Framework(モバイル用に最適化されていないため非推奨。モバイル用Flex Frameworkに着手中。)
凄まじい柔軟性だ。
今後iPhoneでもFlashアプリケーションを動かす事を考えると,Flexのフレームワークを使う事はあまり良い選択肢ではないようだ。もしモバイル用のFlex Frameworkが出たとしても,コードのバイト数や速度がある程度犠牲になりそうだし。
Flex BuilderがFlash Builderと名を変えた事も,この事と関係がある気がする。
どの程度iPhoneのネイティブ機能にアクセスできるか?
・マルチタッチ
・スクリーンの方向
・フォトライブラリにイメージを保存
・加速度センサー
・GPS
・カット/コピー/ペースト
・グラフィックスのハードウェアアクセラレーション(OpenGL ESのレンダリングパイプライン使用)
・iPhoneのネイティブビデオプレイヤー経由によるH.264ビデオ再生(ダイレクト再生不可)
当然の事ながら,iPhone OSの標準コントロールは使えないので,UI等は基本的に全て自分で作る事になるだろう。
より詳しくは下記のFAQ参照。
Applications for iPhone:Developer FAQ
コメント
コメントを投稿