強火で進め

このブログではプログラム関連の記事を中心に書いてます。

「Google Developer Day 2010」に参加してきました

遅ればせながら9/28に「Google Developer Day 2010」に参加したので講演のメモをアップしておきます。急いでメモしたので抜けや間違いが有るかも知れませんのでその可能性を理解した上でお読み下さい。

Google Developer Day 2010
http://www.google.co.jp/events/developerday/2010/tokyo/

高性能な Android アプリを作るには

  • 読み込みを速く
  • アプリ自身の速度
  • ダメなアプリはGoogleでは"A janky app"と呼ばれる
  • アプリケーションとUIを同じスレッドに置かない
  • UIによるイベント5秒レスポンスが返ってこないとき
  • 1byteのアクセスでも25ms
  • 108/350/500/800ms 3Gでのping
  • ストレージの読み書きはUIのスレッドで行わない
  • indexを使うと読み込みは速くなるが更新処理は遅くなるのに注意(SQLiteの話)
  • ロギングではSQLiteを使うより、テキストファイルを使った方が速い
  • "Fire and forget" mode
  • 必ずUIスレッドから行う必要が有る。
  • メモリ不足の場合、DL中の処理が中断してしまう可能性が有る→IntentServiceを使う
  • すべてのボタンを無効にする
  • 200ms以上かかるときはプログレスダイアログを表示する
  • 推定では無く特定が重要
  • プロファイルツール→Traceview
  • 今回の様な小さな処理をTraceしただけでも8MBになる。注意が必要な部分。
  • データのJSON形式への変換に時間がかかってるのが分かる
質疑応答
  • Androidの今後のロードマップについて。ブラックベリーに比べAndoridはセキュリティについて遅れている印象が有るがDBなどの暗号化が載ることは有るのか→専用チームが有り(筆者注:以降、メモれず)
  • C2DMのスケーラビリティ。10万〜100万の端末に対し、送信は可能か→我々はGoogleですから。同時にとは行かないがその速度に驚くでしょう。Gmailに使われてるいるので拡張性という面では大丈夫なはず
  • さまざまデバイスが出る今の状況について→Android Develper Blogで質問を答えている。様々な海賊度、加速度メータが入っていないものなども含めた対応についての記述あり。提供するガイダンスを読んで欲しい。
  • (筆者注:質問、メモれず)→サービス上でコールをしている場合は優先順位を重視。音楽を再生している場合はアラートを表示する。一番の優先はUI。

Google JavaScript API でクールなハック

  • Client-side APIの歴史
  • 1999: XHR

JSONLint - The JSON Validator.|
http://jsonlint.com/

JSONView for chrome - Google Chrome 拡張機能ギャラリー
https://chrome.google.com/extensions/detail/chklaanhfefbnpoihckbnefhakgolnmc?hl=ja

プレゼン資料はこちらにアップされています。

Android でリアルタイムゲームを開発する方法: リベンジ

  • 機種が多くなると対応が大変なのでは?→綺麗に2つの世代に分ける事が出来る
  • 第二世代には30ヘルツを越えられない端末も有る(ピクセル数が多いため)
  • テクスチャ圧縮は端末毎にフォーマットが異なる
  • OpenGL ES2.0以降であればETC1に対応
  • マルチタッチが必要なのはAndroid2.0から。それまでは対応する端末が無かった
  • Android1.5は解像度はHGAのみ対応。逆にそれ以外には対応していなかった
  • 必ずVBOを利用
  • 浮動小数点の頂点を利用
  • 第二世代のみにリリースするならGLES2.0を利用
  • Xperia だとOpenGLの描画が完了するまで必ず 30ms かかる
  • GLサーフェスを使っている場合はアプリが切り替わった後にVRAMの内容が変わっている可能性が有る
  • 20万人のテストデータ
  • インプレッション(ストアの説明画面を開いた数)はゲームが一番高い


3DのシェーダはAndroidがWebサーバーになり、そこの専用ページにアクセスし、ゲームを起動したまま変更可能に作成。


ゲーム画面


プレイヤーがやられた場所のデータをサーバへ送信、集計したデータをヒートマップとして表示し、この情報を元に難易度の調整。


描画方法はそれぞれのパーツに適したものを使い分け。

ライトニングトーク前の日本Googleの部活紹介

ラーメン部有ります。


二郎に特化したラーメン二郎部有ります。

Android2.1プログラミングバイブル

Android2.1プログラミングバイブル