cutmail's blog

write the code

GDD2010JPに参加してきました。

平日の昼間でしたが、GDD2010に参加してきました。
簡単にですが、下記メモです。

基調講演

▽Chrome &HTML5

   - 人々がWebの上で生活し始めている
   - Webがアプリケーション化する
      - それに対応するのがHTML5
   - HTML5によりWebがパワフルに
   - W3C活動報告
      - HTML5でいこう
   - 進むブラウザの対応(HTML5)
      - IE9
      - FF
      - Opera
      - Safari
      - Google Chrome
   - 実用に耐える高いパフォーマンス
   - 実用化に向けてのフェーズ
   - ハードウェアとの連携
      - GPUアクセラレーション
   - ローカル資源の活用
      - 画像のファイルサイズなど
   - CSS3のトランスフォーム
   - 音声認識による検索@ブラウザ
   - デバイスオリエンテーション
      - デバイスの方位をDOMイベントとして定義
   - マイクアクセスおよび音声認識
      - @speech属性の追加
      - <input type="search" name="q" speech required onchange="startSearch">
   - ファイルアクセス
      - File API
      - FileSystem API
   - 課題(webアプリケーションの課題)
    1. みつけやすさ
    2. 再アクセスの容易さ
    3. マネタイゼーション
   - Chrome Web Store
   - スマートフォンで加速するモバイルHTML5
      - 北米では、HTML5のトラフィックが従来のものを超えた
   - Input
      - Google日本語入力
      - Mozc
      - Google日本語入力Cloud API
         - Transliteration API
            - 本日公開
            - バックエンドのみ
            - フロントエンド/web uiは後日公開
         - 10/23にコードリーディングを含む、テクニカルイベント開催

▽Android

   - Why?
   - Tim Bray
   - spectral souls
   - New In Android
      - Market search suggestions
      - New "similar" tab in Market display
      - Comments visible in Market publisher site
      - Error reports in Market publisher site
      - Android Market licensing server
      - Unbundled apps.For example new Gmail last week.
      - Cloud to Device messaging.For example, Chrome to phone.
      - Tethering and portable hot spot (usb, wifi)
   - Android and Japan
      - モトヤフォント
      - アプリのダウンロード数は世界第2位
▽Cloud Platform

   - Google App Engine
      - Easy to build
      - Easy to manage
      - Easy to scale
   - 90K developers
   - 130K apps active every week
   - 5.5B pageviews / week
   - Japanese success story (use GAE)
      - エコポイント
      - mixiFESアプリ
   - Google App Engien for Business
      - SSL and SQL
      - Technical support
      - Formal SLA
      - centralized admin console
      - enterprise pricing
   - Domain Console
   - IT予算の60%は保守
   - Roadmap
      - Full MapReduce
      - Datastore dump and restore
      - Background servers & Reserved instances
      - Real time Channel API
      - Built in OAuth & OpenID
      - Make you smile :)
   - CLOUD PORTABILITY
   - OPEN STANDARDS
    1. Data portability
    2. app portability
   - GWT &#9829; Roo
▽石原直樹さん

高性能な Android アプリを作るには (ティム ブレイ)

   - Reacting to events quickly
   - Don't hog the event looop("main" / UI) thread!
   - SQLite
      - Use indexes(see EXPLAIN & EXPLAIN QUERY PLAN)
      - For logging, consider file-append rather than database-write
      - sqliteはindexをはるとselectは早くなるがupdateが遅くなる
   - AsyncTask
      - Must be called from a main thread
   - IntentService
      - is a base class for Services that handle asynchronous requests on demand. Clients send requests through startService(Intent) calls;
   - UIスレッドには絶対に重い処理を置かないで!

   - UI Tips
    1. Immediately, disable UI elements
    2. Briefly, a spinner in the title bar
    3. if more than 200msec, show a ProgressDialog
    4. in AsyncTask onPostExecute, cancel alarm timer
   - Performance Advice
      - "Premature optimization is the root of all evil." -Donald Knuth
   - Profiling Tools
      - Traceview
      - Log.d() calls with a timestamp aren't terrible
      - Extreme profiling: Aggregate user profile data
   - 

ここちよい Android - おもいやりの UI デザイン(adamrocker、矢野りん)

   - 物販アプリ「DropCart」
   - UX(User experience)とは?
      - ユーザへの”おもいやり”
      - 気持よくさせるのではなく、不快にさせない
      - 不快ではない=違和感がない
      - 静的・動的な資格情報に対して「違和感のない」体験を提供する
         - アニメーションを資料したインタラクション
         - グラフィックによる世界観
   - SimejiにおけるUXの考え方
      - ユーザの脳への”おもいやり”
      - 設定変更
         - 何が変わったのかを認識するには時間が必要(ダイアログあり)
            - 脳への負担
      - おもいやり1
         - 脳の処理負担を軽減するため、変化は操作に対して時間・距離的に近くする
      - モバイルにおける課題
         - ディスプレイが狭い
            - 手が邪魔
      - Simejiの解決策
         - 4次元の活用
            - ゆとり
      - おもいやり2
         - 脳が処理する時間的な余裕を与える
      - おもいやり3
         - 自然な動作表現
      - フィッツの法則
      - ヒックの法則
      - テスラーの複雑性保存の法則
   - SimejiのUXにおけるグラフィックデザイン面の工夫
      - グラフィックデザインのねらい
         - 情報の理解を助ける
         - 好きになってもらう
      - Simejiデザイン方針
         - フラット
            - スタイルを単純にしてスキンを目立たせたい
         - シンプル
            - アイコンのもつ意味をストレートに伝えたい
         - ラブリー
            - 毎日使うものだから、愛着を持って欲しい
      - Mies van der Rohe
         - "Less is more."
      - アイコン
         - 苑の大きさが目安
         - もともとマルイデザインは目安より一回り小さく
         - "God is in the detail."
         - "Form follows function." 形態は機能に従う

クールな Android アプリを作るには (安生真、山下盛史 @yyaamma、江川崇 @t_egg)

<江川崇 : IMoNi>

   - IMoNi
      - 非公式i-モードクライアント
   - 技術的な仕組み
      - Intent
         - Action, Category
         - Uri
         - MIME
      - Content Provider
         - 標準(Contacts, SMS, Mediaなど)
         - 独自
   - 共有ダイアログについて
      - 面倒と考えるか、汎用的と考えるかは様々な観点があり、賛否両論わかれるところだが、いいところもたくさんある。
   - Uriがおすすめ
      - ex) IMoNiでは、mailto:スキーマに対応したアプリからメール送信できる機能を設けている
      - 振る舞いと情報を包含している(ReSTFull)
   - 有名アプリの威を借る
      - 有名アプリに規制すると付加価値が上がる
      - 連携もIntentを使えば実装は楽
      - ex) マッシュルーム
         - IMoNiのマッシュルーム「Emoji picker」
   - 標準装備されている仕組みに乗る(1)
      - 標準のContent Providerに突っ込むといい
         - IMoNiではメールの新着通知をSMSのDMに
   - 標準装備されている仕組みに乗る(2)
      - Intent Filterを標準のアプリにあわせておくといい
         - ギャラリー、連絡先など
   - 標準装備されている仕組みに乗る(3)
      - 自分のアプリが持っている情報も、標準の仕組みで公開できるようにしておくといい
         - 独自に作るのは面倒だが、いい面もある
      - Global Searchに対応
   - 批判は目につきやすいが、何も言わないけど分かってくれる人もたくさんいることを忘れずに。
   - 開発者と開発者
      - アプリとアプリが人と人とをつなぐ
         - ex) IMoNi x デコ美
      - http://goo.gl/HUZG
   - まとめ
      - Androidの緩やかにつながる仕組みを使いこなしているアプリはクール
      - Share Dialog はいい側面も悪い側面もある

<山下盛史 FxCamera>

   - FxCamera
   - 370万
   - 20万アクティブ

   - The Developer's Guide
   - UIガイドライン
   - Appleの Human Interface Guidelineはとても参考になる
      - そのままではなく、参考にする感じ
   - あえて標準部品を使う
   - Backキーを使う
      - 開発者的にはonResume()とか
      - ユーザーが期待・想定しているのは大抵の場合、「戻る」「Undo」
         - 画面/ユーザー操作の階層に合わせる
   - Menuキー
      - 実装はアプリ次第なのでアプリによってoption menuが出る場合とでない場合があるし、同じアプリでも画面によって出る場合とでない場合がある
      - 積極的に活用する
         - menuキー使うのが必須なつくりにすれば押して貰える(ブラウザ、Gmail)
         - 一切使わない
            - officialのtwitterアプリ
         - うまくハイブリッド
            - よく使うものだけ出すとか
   - 落ちないこと
      - Config Change
         - 見落としがち
         - Activityの強制再起動
            - orientation
            - keyboard, keyboardHidden
   - サポートがしっかりしていること
      - webページとして作るのがおすすめ
         - アプリ更新しなくてもいつでも更新できる
         - メールの対応が楽になる(リンク教えるだけ)
         - iUI http://code.google.com/p/iui/
   - カスタムスキーマ
      - http://bit.ly/fxcameratest

Android でリアルタイムゲームを開発する方法: リベンジ (クリス プルエット)

- リベンジ
- ワンダのレプリカ島
- Androidのゲーム開発
- 端末の種類が多い
   - 第一世代
      - HVGA(480x320)
      - OpenGLES1.0/ 1.1
      - HT03A
   - 第2世代
      - OpenGL ES2.0, 1.1
      - WVGA(800x480)
- 端末の特徴
   - 画面サイズ、解像度
   - インプット機能
      - トラックボール、十字キー、キーボード、マルチタッチ
      - API的に対応しやすい
         - MotionEventかKeyEvent
   - OpenGL
      - テクスチャフォーマット:ATITC? PVRTC? ETC1?
      - OpenGLバージョン
      - GL_EXTENSIONS?
   - 端末のバージョン
      - Android1.5 12%
      - Android1.6 18%
      - Android2.1 42%
      - Android2.2 29%
- HeightMapProfiler
- パフォーマンスを高める方法
   - 必ずVBOを利用
   - VBOの数を減らす
   - 浮動小数点数の頂点を利用
   - テクスチャコンプレッションならETC1
   - 2DならOpenGLのdraw_textureエクステンション
   - 30ヘルツで遊べるようにプランニング
   - 第一世代端末から第二世代端末までランタイムでスケール
      - GL_EXTENSIONSは役に立つ
   - 第二世代のみの端末用ゲームなら、GLES2.0を使用
   - GLSurfaceView (Androidのclass)
- 操作設定は必要
   - 端末がわからないため、Configure Keyboard的な画面とか
   - あとから付けるのは大変
- PHPxJSでテストゲームを作った
   - 死んだところをサーバーに投げる
   - 死にやすいところをヒートマップ
   - 改良
- O3C Client Interface
- "It's not really about innovation so much as exploring interestingness."
   - 楽しいゲームには「革新」より「面白さ」のほうが大事
- Androidマーケット
   - ユーザーランキング第二位
   - ダウンロードが一番多い(5月くらいから倍になっている)
   - インプレッションは一番高い
- リンク
   - http://code.google.com/p/apps-for-android/
   - http://replicaisland.net/