[Android] 豆ナイト「Android の可能性」に参加しました

Androidが様々な顔を持っている理由は、Androidが広範な範囲をカバーするソフトウェアスタックであることためですが、大きな可能性がある反面、様々な要素を効果的に組み合わせてうまく利用するには、様々なノウハウや試行錯誤が必要であることも事実です。

ここでは、Androidに取り組まれているお二人の識者の方をお招きし、Androidを使いこなすために実践されている内容についてお話し頂きます。

豆ナイト「Android の可能性」に参加しました。
内容は、渡辺知男さんの「Androidでサクサクプロトタイプ開発」と、石原正樹さんの「Androidの画面描画機構をチューニングする」の二つに、おまけとして江川さんの「インテントの勧め」と、andzaurusさんのZiiを触ろうのコーナーがありました。

渡辺知男さんの「GainerをAndroidと組み合わせる」てプロトタイプの話は、組込み屋さんからみると、ともて共感できる話でした。組込みデバイスにいろいろなセンサーを付けるというは、とても普通のことなのですが、それをユーザーインタフェースに使用するとなると、また、違った苦労があるのです。やはり、物理的なものは、頭で考えていてもわからないことがたくさんあります。そのような視点でみると、簡単にセンサーをつなげて試せる環境と言うのは、とても価値があると感じます。また、最後にデモを見せていただいたTwitter機能は、いろいろなアイデアのベースになりそうだなぁと思います。
石原正樹さんのチューニングの話は、現実的にいろいろな苦労をしたのだろうなぁというところがとてもよく伝わってきました。特に、最初に速度の低下から、チューニング後の動作のデモのあたりは、なかなか感動ものでした。やはり、見た目で早くなるのが体感できるというのは、とても気持ちがよいですね。
内容としては、SurfaceFlingerの説明とチューニングのポイントでした。

  • 携帯電話ではない組込み機器にAndroidを適用するために、16pdiカラーから32dpiカラーに変更する必要があった
  • Androidは、16bitカラーしかサポートしていないが、内部の実装としては、32bitカラーも考慮されている
  • 32bit化で必要なのは、Surfaceのインタフェースと、SurfaceFlingerのFramBufferへのアクセスの部分
  • 単純にそこだけを変更すると、描画性能が1/10になってしまう。
  • 製品版の端末では、copybitというモジュールが使われているが、オープンソース版には含まれないので、2Dの描画にもOpenGLが使用されている。
  • 汎用的な実装では、1ピクセル毎の判定が入っているため、非常に遅い。それぞれの変換に特化した関数を用意することがチューニングが可能。チューニングの結果、高速化ができた。
  • そのほかの方法として、Nativeでの描画にチャレンジ。SurfaceFingerはクライアントサーバー型で実装されているので、Nativeからも正しく要求を出せば使用可能。ただし、レイヤの調整が必要

とてもわかりやすい説明で、参考になりました。