モバイルAdobe AIR開発の技術選定
最強のマルチプラットフォーム技術Adobe AIR、というといいすぎですかね。Adobe AIRを使っている開発者なら必ずしも皆が言うのは「やっぱ、Flashは作りやすいですよね」ということです。
Adobe AIRはデスクトップ(Windows, OS X)のみならず、モバイルアプリ(iOS, Android)を開発することができます。しかし、一概に「Flashを作る」といってもその作り方は何種類もあります。作り方によっては思ったようにパフォーマンスがでなかったり、開発工程が肥大化し延期に延期を重ねるという危険性もあります。そうならないためにも技術選定の参考までに、モバイルAIRそれぞれの作り方の特徴をまとめます。
Flash Professional で開発
Adobe CCのひとつFlash Professional CC(通称、Flash Pro CC)を使う方法です。タイムラインとステージというデザインツールに加えて、ActionScriptも書ける便利な制作ツールです。
メリット
- タイムラインでアニメーションを作れる
- ステージでデザインが描ける
- 簡単なActionScriptを書ける
デメリット
- パフォーマンスが優れない
- CPUで動くため (GPUの選択肢もあるが、限度もある)
- 中・大規模なActionScript開発に向かない
Apache Flex フレームワークで開発
Flex フレームワークはMXMLというマークアップ言語でFlashを開発できるフレームワークです。Adobe Flex 4.6まではアドビのものでしたが、手放されて今はApache Flexとして開発が継続しています。エンタープライズ方面でFlexフレームワークが使われることが多いですが、モバイルFlexも有効な選択肢の一つです。
メリット
- 中・大規模なActionScript開発に適する
- コンポーネントが揃っているため、ツール系UIの開発が容易
デメリット
- パフォーマンスが優れない
- CPUで動くため (GPUの選択肢もあるが、限度もある)
- デザインの組み込みが手間
- Flexフレームワークに対する理解が必要 (学習コストが高い)
Starlingフレームワークで開発
FlashではGPUをより活用できる技術として「Stage3D」があります。Stage3Dを使った場合のFlashのパフォーマンスは非常に良好です。「iOSにおけるSwift/Unity/PhoneGap/Adobe AIRのパフォーマンス比較検証 - ICS MEDIA」という記事ではAdobe AIR (Stage3D)はネイティブについで高いパフォーマンスを有しており、Unityよりも良好な結果が得られています。
StarlingはStage3D上にDisplayListを構築するフレームワークです。
メリット
- パフォーマンスに優れる
- Flashを作る上で最大のパフォーマンスを得られる
デメリット
- デザインの組み込みが手間
- Flash Pro CCからアセットを出力する独自ワークフローの構築が不可欠
- Starlingフレームワークに対する理解が必要 (学習コストがやや高い)
- OpenGLの特性にあわせた最適化が必要
- レンダリング時のドローコールを抑えるなど最適化が必要
- 電力消費を抑えたり、パフォーマンスを上げる必要がある
- 電力消費が大きい
- 毎フレーム、画面領域全体を描き直すので。
StarlingとFeathersで開発
先ほどのStarlingはStage3D上にDisplayListを構築するフレームワークです。対してFeathersはStarling上のUIパーツを提供するライブラリです。
メリット
- パフォーマンスに優れる
- Flashを作る上で最大のパフォーマンスを得られる
- UIパーツなどのコンポーネントを利用できる
デメリット
- デザインの組み込みが手間
- Starlingフレームワークに対する理解が必要 (学習コストがやや高い)
- Feathersフレームワークに対する理解が必要 (学習コストがやや高い)
- OpenGLの特性にあわせた最適化が必要
- 電力消費が大きい
まとめ
メリット・デメリットをまとめると次の方針で技術選択するのが良さそうです。
- パフォーマンス優先なら「Starling + Feathers」が定番
- Flexフレームワークの知識があり、パフォーマンスを必要としないなら「モバイルFlex」
- カジュアルにミニマムアプリを作るなら「Flash Professional」
次回からはそれぞれの方法について詳しく掘り下げていきます。