2012年2月1日水曜日

Flash Builder 4.6でのiOSアプリ開発を試してみる

Flash Builder 4.6でiOSアプリの開発を試してみた。

適当なアプリを作ってデバッグしようとすると、早速つまづいた(^^);


証明書とプロビジョニングファイルの設定

ターゲットでiOSを選んだら、デスクトップ上かデバイス上かを選ぶ。デスクトップ上は何も問題なく起動できる。やはり問題はデバイス上だ。早速「パッケージ化設定がされていません」とエラーが。


そこで「設定」をクリックすると、証明書とプロビジョニングファイルが必要なようだ。


証明書は、「キーチェーンアクセス」を開く>「ログイン」キーチェーンを開く>「証明書」分類で表示される「iPhone Developer: xxx xxx(xxx)」という証明書を右クリックして「書き出す」>「p12」ファイル形式を選んで保存という感じで用意する。

証明書についてはここが参考になる。

Adobe Flash Platform * P12 ファイルへの開発用証明書の変換

プロビジョニングファイルはAppleから発行してもらったXcodeでいつも使っているプロビジョニングファイルでいい。


App IDの設定

とりあえずパッケージ方法で「高速」を選んで起動させようとするとまたエラー。ちなみに、ここで「標準」を選ぶと誇張でなくホントに数分待たされることになる。


プロビジョニングファイルで指定した「App ID」にアプリの設定のどこかを一致させる必要があるらしい。

ならエラーメッセージで教えてくれよと(^^); ホントにエラーダイアログって使えたためしがない。自分も気を付けないと。

一致させるべきは、$PROJECT_HOME/src/XXX-app.xmlの次の箇所。


もしプロビジョニングに「jp.co.xxx.*」とワイルドカードで指定してたなら「jp.co.xxx.Test」など、最後は適当なアプリ名でいい。もしプロビジョニングに「jp.co.xxx.Test」と固定で指定していたなら、その通りに入力する。


IPA(アプリ)をiTunesにインストールして同期(ノ∀`)

すると今度はこんなウインドウが出てくる。


要するに、アプリをデバッグするには、まずコンパイル済みのIPAファイルをiTunes>ライブラリ>Appに登録し、AppStoreからダウンロードしたアプリをインストールするように同期してインストールせよ、と(ノ∀`)

おい、まじかよ・・・と思いつつもやってみる。当然の事ながら、同期した後は自動的に起動するわけもなく、普通にデバッグすべきアプリを探して起動する(ノ∀`)


IPアドレスを入力してFBのデバッガーに接続(ノ∀`)

すると、実機でこんなウインドウが。


なるほど。実機側からIPでFBのデバッガーに接続するのか・・・


iOS向けの開発は相当キビシイ

というわけで、AIRやAndroid向けの開発に比べるとiOS向けの開発は相当キビシイ。どうしても無理矢理やってる感が否めない。ネイティブに絡んでくるところまで開発しようとすると、もうホントにデバッグが大変そうだ。iOSのシステムを考えれば、こうならざるを得ないのは良く分かるのだけど。

ただ、Android向けの開発はフツーにできるので、エミュである程度開発して、Androidで実機で動く感覚を掴んで、iOSではデバッグしなくてもいいくらいに完成度を高めておくのがいいだろう。それで上手くいけばいいけど・・・(^^);

そもそもAIRで動く機能がAndroidやiOSでどれくらい動くのかまだ未知数というのもある。

とりあえず、YouTubeのAS3 Playerについては、Androidでは動いたけどiOSでは動作しなかった。ファイルAPIなどのネイティブ機能関連など、他にも色々と動かない機能がありそうだ。

これはiOSに限った話ではないけれど、ドキュメントにはTLFは使わない方がいいと書いてある。

Adobe Flex 4.6 * モバイルアプリケーションでのテキストの使用

・・・デスクトップ用および Web ベースのこれらのコントロールの場合のように TLF を使用しないでください・・・

ていうことは、縦書きは・・・こりゃ痛いな(ノ∀`)


じゃ、ダメか?

しかしそれでも、コードを全く変更せずにAIRでもAndroidでもiOSでも同じアプリが動作しているところは感動したし、可能性を感じた。

まずFBでモバイルアプリを開発する前に、FBでのモバイル開発に向くアプリかどうかを慎重に判断する必要があるだろう。

「向くアプリ」なら、2倍、3倍の開発効率を得られるはずだ。

「向くアプリ」とは、例えば・・・

・軽い(パフォーマンスはあまり期待できないから)
・ネイティブ機能に依存しない(デバッグが大変そうだから)
・グラフィック中心(Flashはグラフィックが得意だから)

要するに、軽いゲーム的なものが向きそうだ。