万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

日本Androidの会10月のイベント

ソフトハウスの社長
 Blogの中の人
 パームパイロット
 H03 G-1、GDDPhone、ADP
 magic
 4機種(??、H03A,SUMSUNG、??)
 Twitter(@tao_gaku)
・まとめ方
 キャリア&機種

○ホリデーシーズン
 11月第4木曜日(26日)感謝祭から元旦

 アメリカのキャリア
 Verizon Wireless
 AT&T Mobility
 Sprit Nexttel
 T-Mobile USA

・HTC-DREAM(最初のAndroid端末)G1、ADP-1

・HTC-MAGIC
 docomo8月

・HTC-HERO
 Googleから離れた、実験的な

・HTC SPRINT HERO
 アメリカのSPRINT
 HEROとCPUは少し違う
 Cellular South

・HTC-TATTOO
 Vodaphone UK
 動かないプログラムが多い

・SUMSUNGーGALAXY
 最初にHTCが出して、二番目に出したメーカ
 Android1.5
 ソフトキーボード
 5Mのカメラ
 入手困難

SAMSUNGーMOMENT
 SUMSUNGの2機種目
 速い

・SUMSUNG-BEHOLD II
 Touch With
 詳細なスペックはまだ分かってない

・SUMSUNG-GALAXY Lite

T-Mobile-PULSE HUAWEI
 SUMSUNGやモトローラに勝てなかった
 特賞は普通

MOTOROLAーCLIQ
 力を入れている

MOTOROLA-TAO
 Sholes、Droid
 10/30に発表or発売
 アメリカで一番大きなキャリア

・LG-GW620
 公式発表している
 出るのが確実

○アメリカのまとめ
T-Mobile
 Dream Magic Behind II.Cliq

・SPRINT
 Hero Moment

・VERIZON
 ??

ACER-LIQUID A1
 レッドカラー

・Sony EricssonRachel
 11or1月海外で発売


○中国
→現在2つ機種出ている出す
・OPhone(1.1か1.2をベースにしている)
 Lenobo O1
・Droid AG188(HTC Magic)

・DEL
 出す?

T-Mobile Fender

・Covia-SmartQ 5

Android 5 Internet tablet

・アクロス フランスのメーカ
 日本で直接買うことができない。

・Zii Egg
 Andoid動かない

Acer Notebook
 XPとのデュアルブート

 Insyde Market
 →Appleの用に承認・非承認
  無料でやっている

・電子ブック(バーンアンドノーブル)
 Androidベース
 →日本時間10月21日に発表会

・Japan
 有料ソフト購入可
 新形態端末
 携帯以外のデバイス
 新キャリア
 Android Developer Challenge 2
 Kyocera

・本日
 au本日残念でした
 Docomo Android 1.6アップデート

・Android2.0
 DROIDDOES ANDROID

Android Notebook
 もうAmazonで売っている


●日本システム開発 第2事業部 石原さん
Androidの画面描写機構をチューニングする!
 Androidミドルウェア部分を。

 Androidオープンソースなので、誰かのために最適化されたわけではない

・画面描画は要求が大きい

・SurfaceFilingerコンポーネント
 デジタルテレビでAndroidを動かす
 
SurfaceFilingerとは?
・OpneGLなどの描画エンジンを呼び出し、FrameBufferに描画を行う。

・書くアプリケーションに対して領域領域(Surface)にを割り当てる

・SurfaceFilingerのチューニングポイント
・NativeアプリケーションでAndroidに描画してみる

・各アプリはSurfaceに描画データの書き込みを行います。

SurfaceFlingerのチューニングポイント
・色震度
 Androidは16bitカラーのみをサポートしている
 昨今は携帯電話をはじめ32bitカラー

●16bitカラー以上にするには?
・どこに修正を入れればよいか?
 ・SurfaceFlingerのFrameBuffer設定
  アプリの生成する

・現在の設定手順
 システムの起動時に
IOcontrol
FB情報取得
FBIOGET_VSCREENINFO
FBIOPUT_VSCREENINFO
FBIOGET_VSCREENINFO

16bitカラーで固定されている

→つまり
FrameBufferを32bit化

PIXEL_FORMART_RGB_565(default)

PIXEL_FORMART_RGB_BGRA_8888の実装が存在している

32ビットカラーで動作するように設定する

・アプリの生成するSurface
Surface 32bppバッファ割当て

アプリが16bitカラーでは
SurfaceFlinger→FrameBufferを32bit化しても意味がない

・OPEQUE(default)
 16bitRGB(565)のバッファ
・TRANSPARENT
 
・TRANSLUCENT
 32bit

○描画速度
・32bitカラー化により次の問題が発生した
 16bitカラーのときに比べて描画性能が1/10に低下

・デモ
 描画が遅い状態
 もっさりした状態

○なぜ?
 Androidの描画エンジンは16bitカラーを前提としている

○描画速度
・描画速度の改善にはどのような方法があるのか?

○Copybitライブラリの使用
・Copybitライブラリとは?
 /system/lib/hw/copybit/ro_hardware

 存在していたらCopybitエンジン呼びだし!

○しかし
 ・AndroidオープンソースプロジェクトにはCopybitライブラリは含まれていない!

○Copybitライブラリがなかった場合は?

OpenGLの性能問題
・1/10に低下したのはOpenGLライブラリが原因
・16bitカラーを想定した高速化カラーは存在するか?

OpenGL汎用レートは何故遅い?
・すべての描画パターンに対応しているため、ピクセル単位で条件判定が発生

○16bppの場合は?
Surfaceの条件枚に描画する関数が用意している

○さらにARMアーキテクチャの場合は?
アセンブラにして高速化されている

OpenGLの高速化には?
Surface単位に条件に応じたモジュールを作成
アセンブラ化して無駄なロジックを削る
 C言語にて作るだけでもかなりの性能アップ

→ballsのベンチマークで5fpsから60、70fpsになる

○1アプリケーションのメモリ
Surfaceに割り当てられる描画メモリは1アプリ単位で最大で8MBとなっている。

・8MBを超える描画領域を必要とするアプリケーションはメモリ確保ができず起動に失敗する
・32bitカラー化した場合、描画領域が16bitカラーの杯以上速度が必要

Surfaceバッファのメモリの上限を8MB以上にする
 マクロの値が8MBに固定化しているのでそれを書き換える

?Nativeアプリケーション
・通常Javaで実装を行います。

・JavaVMではC/C++のコードが呼び出されている。

・NativeアプリでもJavaと同じようにGUIを持たせて共存できるのでは?

Surface Flinger

○仕組みをもう少し詳しく
JavaアプリとSurfaceFlingerはサーバ/クライアントの形式で接続を行っています。

SynbianOSに似ている

○祖結合的
・SurfaceFlingerからはJavaアプリと同じに見える。(GUI共存が可能)

・シェルから起動させても実行できない

・Nativeアプリでの注意・補足

Javaアプリで使用していたCanvasやSurfaceViewといった描画クラスは、準備されていない・

・レイヤの重なり具合は整数値で管理されている。

・性能がどれだけか分かる

・Nativeアプリで描画ができる

LinuxCUIアプリもできるかも?

●「スポットメッセージ(仮)β」の紹介(株式会社バンプール 家庭用ゲーム会社の開発会社)
Android Developer Challenge2(ADC2)登録アプリ

Androidは市場への参入がしすい


・アプリケーションの概要
 コミュニケーションツール
 GPSを使っている
 GoogleMapを使って好きな位置(スポット)を選ぶ
 指定した場所でバイブレーションで通知する。
 指定した位置でメッセージが読める

 スポットメッセージ=URI
 あらゆる媒体を使って送受信できる。
 アプリ独自のURI
 GMailが起動

 受信側にWebページが付属

・現在地とスポット位置

●日本Androidn会 近藤
・スパイラル開発
4月にプロトタイプ作成
8月に2週間ちょっと開発し、実質1ヶ月半の開発

Androidの弱点
・体系的にまとまった日本語情報が少ない
・実践的なノウハウの蓄積、共有が少ない
・進化のスピードが速いので情報の陳腐化も速い

・アニメーションGIFに対応してない
 パラパラアニメにするにはXMLファイルにアニメーションを定義してコードで制御する

・LocationManagetのProxymityAlertが使い物にならなかった
・指定した場所に到達すると知らせてくれる
 ProximityAlertを使うと頻度を設定できない上に

Simカードが刺さってないと室内での位置情報の検知が難しい

・IMES(屋内GPS)が有望

○環境の移行が楽
Eclipseのプロジェクト
・OSに依存しない開発環境

○リソースのローカライズなどが簡単

Androidのアプリは見た目がいまいち
・標準のUIパーツがしょぼい

・WebViewで構築すればHTMLなのでとっかかりがいい

有料のアプリケーションができるようになったが、ユーザはダウンロードできない
Googleは諸事情で
 ある日突然ダウンロードできるようになる?
 →アップロードしてしまえばいい。

11/30 カンファレンス
場所代々木 青少年センター