株式会社ライブキャストロゴ 株式会社ライブキャスト

F-siteの「迎春!スマートフォン&タブレット端末向けアプリ開発ことはじめ」に行ってきた(その2)の続きです。

最後は@clockmakerさんのプレゼンです。

AIR for Android入門

前回の@fladdictさんのプレゼンから一転して、技術色の強い内容でした。

AIRをAndroid上で起動させるには、AIRパッケージを作成後、Android上で起動するアプリのファイル形式である.apkファイルに変換しなければいけません。通常このプロセスはFlash Professional CS5やFlash Builder Burritoのようなオーサリングツールや開発ツールがやってくれます。

また、この.apkファイルの形式の実機で起動するには、AIR 2.5のランタイムが必要になります。

Android版のAIRランタイムは、Android Marketからダウンロード/インストールすることができます。



稼働環境はAndroid 2.2以上なのですが、Adobeの推奨しているスペックが必要で、中には動かない端末もあるそうです。

モバイルの必要システム構成

* Google Android™ 2.2オペレーティングシステム
* ARMv7-Aプロセッサー(ベクターFPU搭載)
* OpenGL ES 2
* H.264およびAACハードウェアデコーダー
* 256MB以上のRAM

リッチインターネットアプリケーション | Adobe AIRの必要システム構成より引用。

AIR 2.5のランタイムがインストールされていない場合には、

このアプリケーションを使用するには Adobe AIR が必要です。
今すぐ Adobe AIR をインストールしますか?



というメッセージが表示されるので、アプリの起動時にAIRランタイムをインストールすることも可能です。

また、先日発表されたITmediaの記事を引き合いに、スマートフォンの普及率を紹介されていました。
Androidのシェア上昇、iPhoneと互角に——メディアインタラクティブ調べ – ITmedia プロフェッショナル モバイル

相変わらずiPhoneのシェアは高いですが、Androidの普及率もずいぶん上がってきています。中でもXperiaの普及率が目立って高いですね。そういえば、Android Bazaar and Conference 2011 Winterに行ったときも、Xperiaを持っている方が多かったような気がします。
※ HTC Desireは変に独自実装も入っておらず、使いやすくてよい端末だと思いますが、普及率がそんなに高くないのにはビックリしました。

AIR for Androidの開発環境には、以下の3つの方法があります。

  • SDKのみで開発する
  • Flash Professional CS5で開発する
  • Flash Builder Burrito

SDKのみで開発するのはちょっと敷居が高いということで、今回はFlash Professional CS5でのAIR for Android開発環境の構築手順を紹介されていました。

  1. 拡張機能のインストール
    Adobe Labs – Adobe Flash Professional CS5 Extension for Adobe AIR 2.5
  2. ランタイムを実機にインストール
  3. 実機の設定(USBデバッグの許可)
  4. ドライバの設定

3.の実機の設定は、PCにUSB経由で接続をした際のデバッグを可能にする設定です。「不明な提供元」アプリをインストール可能にする設定と「USBデバッグ」を可能にする設定を選択します。

「すべてのアプリケーション」→「設定」→「アプリケーション」を選択するとアプケーションの設定画面が開きます。



「不明な提供元」を選択して、Androidマーケットのアプリ以外もインストールできるようにします。

さらに、この画面の「開発」を選択すると開発の設定画面が開きます。



「USBデバッグ」を選択すると、実機でデバッグすることができるようになります。

また、話の中で.apkファイルはAndroid Market以外にも、自分の所有するサーバなどに配置してWebで公開することもできるが、よろしくない設定をするのであまりお勧めしないと説明されていましたが、この設定のことを言っているのだと思います。これをすることで、どんなアプリもインストールできてしまうようになります。それが、セキュリティ的にあまりよろしくないということでお勧めしない、ということをおっしゃっていたのだと思います。

ただ、サンプルアプリなどを簡単にインストールできたり、エミュレータにインストールできたりして便利です。自己責任の範囲でやるのであれば、問題ないかと思います。

4.のようにドライバの設定が必要な環境があるようです。

  • Nexus One
  • Nexus S
  • Galaxy S
  • Galaxy Tab

などが、例としてあげられていました。
私の場合、Mac OS X 10.6.6とHTC Desire、SHARP GALAPAGOS 003SHを利用していますが、ドライバの設定は特に必要ありませんでした。

それと、以前は、拡張機能の他にAndroid SDKが以前は必要だったようですが、最新のAdobe Flash Professional CS5 Extension for AIR 2.5ではいらなくなったようです。
Android SDKには便利なデバッグ時などに便利な機能があるので別途インストールするのもいいでしょう、と説明されていました。
※ 私もそう思います!便利です。

Flash Professional CS5を使って、サンプルアプリをGaraxy Tabで動かすデモがありましたが、いくつか注意事項がありました。

  • 有効期限が2033年までの証明書じゃないとMarketで公開できない?
  • アプリケーションIDにアンダースコアがあるとエラーになる

私はFlash Builder Burritoを使っています。Flash Builder Burritoの証明書の作成には、有効期限の設定項目がありませんでした。



Adobe Flash Professional CS5 Extension for AIR 2.5に限った話なのでしょうか?

ちょっと調べてみました。

証明書の有効期間指定

ADT -certificate コマンドで、作成する証明書の有効性が持続する年数を指定できます。使用する引数は -validityPeriod <年数> です。証明書の作成時にはデフォルトで 5 年の有効期間が設定されますが、Android Market では、少なくとも 2033 年まで有効な証明書を使用して署名することがアプリケーション提出時の要件になっています。-validtyPeriod 引数を使用すれば、この要件を満たす自己署名証明書を作成できます。詳しくは、『Adobe AIR アプリケーションの構築』ガイドで ADT を使用した自己署名入り証明書の作成のトピックを参照してください。

Adobe AIR 2.5 開発者向けリリースノートより引用。

とりあえず、コマンドラインで実行すれば、有効期限が2033年までの証明書を生成することができそうです。

また、アプリケーションIDに”_”(アンダースコア)があると、Flash Builder Burritoでも同じようにエラーになりました。



それと、Android Marketアップ時の注意点として、デベロッパーの連絡先(電話番号)を載せるので注意が必要、とありました。

加えて、インターネットに接続するようなアプリなどの場合、インストールする際にそれを許可するか、確認のメッセージが表示されますが、ちょっとわかりにくいのです。パケット通信料が発生する旨などは、Android Marketの説明文か、または案内ページなどがあれば、そこに明記することをお勧めします。

また、見応えのあったデモがありました。CPUレンダリングモードとGPUレンダリングモードでコンパイルされたアプリケーションを実機で比較したものです。

Galalxy Tabで20〜30個ぐらいのだるまが上から転がりながら落ちてくるというアニメーションです。
違いは、歴然でした。

CPUレンダリングモード:フレームレート7〜9くらいを行ったり来たりして、安定しない。
GPUレンダリングモード:フレームレートは29出ており、安定した感じで滑らかに動く。

GPUレンダリングモードでの注意点を、いくつかあげていただきました。

  1. フレームレートの設定を大きくしていても、最大フレームレートが出るわけではない(このデモでは最大60フレームレートの設定をされていたようです)。
  2. ぼかしなどのフィルターはサポートされない。
  3. ブレンドモードもサポートされない(レイヤー、アルファ、オーバーレイなどなど)。
  4. ソフトウェアキーボードがでているとき、画面が隠れてしまう。
  5. ハードウェアデコードがサポートされているので、デバイスよりにフレームレートが異なる結果となる。

4.については、最後の質疑応答でもあらためて質問が出ていましたが、どういうことかと言いますと、テキストフィールドなどにフォーカスがあり、キーボード入力が可能な状態の時のことを言っています。Androidでは、このような状態のとき画面自体が上にスクロールします。GPUレンダリングモードの場合にはそうならないようです。

ちょっと試してみました。

●通常の状態



●CPUレンダリングモードで、テキストフィールドにフォーカスがある場合



ソフトウェアキーボードが表示されている分だけ、画面が上にずれているのがわかります。

●GPUレンダリングモードで、テキストフィールドにフォーカスがある場合



このようにGPUレンダリングモードの場合には、画面がスクロールしないので、画面下部のテキストフィールドがほとんど隠れてしまっています。これでは下のテキストフィールドに入力した内容はほとんど見えません。

※ この情報も、今回のセミナーに参加していなければ、なかなか気づくことはなかったと思います。こういった先駆者的な方の貴重な経験を聞けるというのも、IT系セミナーの面白いところだと思います。

なので、GPUレンダリングモードの場合には、テキストフィールドなどのコントロールを、画面の下の方に配置しない方が良いとおっしゃっていたのだと思います。

ただ、Flash Builder Burritoでは、この設定をするところが見つかりませんでした。

ちょっと調べてみたところ、プロジェクト配下のsrcフォルダにある「アプリケーション名-app.xml」という設定ファイルに記述するということがわかりました。
こちらを参考にさせていただきました。
AIR for Android でGPUチューニングするメモ – PHP,MySQL,Flexな日々+イラストとか

6行目の部分です。

	<initialWindow>
		<content>[この値は Flash Builder の出力ファイル app.xml に上書きされます。]</content>
		<autoOrients>true</autoOrients>
		<fullScreen>false</fullScreen>
		<visible>false</visible>
		<renderMode>gpu</renderMode>
	</initialWindow>

最後に質疑応答がありましたが、その時に出た内容も踏まえつつ前述していますので、ここでは割愛させていただきたいと思います。

と言った感じで非常に内容の濃いプレゼンでした。

多少Androidアプリをかじっていることもあり、わかる部分も多少あったのが良かったのではないかと思います。

セミナーやハッカソンなどに参加する際は、完全無知な状態で参加するより、基礎知識をつけてから参加すると理解も深まり、より有意義なものになるのではないかと思います。

今回のセミナーで大変貴重な情報が得られましたので、これを生かして何か作ってみたいと思います!