ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

スマートフォンにおけるHTML5実装の最先端

2012-02-18 21:29:37 | JavaとWeb
昨日、デブサミで、表題の件の話を聴いてきたので、
ここに、メモメモ。




今回
  ・スマートフォンに限る
  ・現在できることについて

HTML5とは
・HTML+Javascript
・今までに比べ手豊富なAPU
  ・ドット単位の描画が可能なCanvas
  ・ベクターグラフィックスSVG
  ・CSS3
  ・localStorage
  ・などなど

2つ大きな特徴

1.描画能力の向上
・曲線のある図形を描画することができるようになった
・アニメーション能力も強くなっている

2.Webアプリ機能の拡充
・ApplicationCache機能
 一度アクセスすれば、二度目からはキャッシュを利用することが可能
・localStorage
 アプリ固有のデータ保蔵


しかし、アプリにかなわない
アプリに比べ劣っている点
  3D
  音楽
  速度

3D
・OpenGLが使えない
   WebGLはFireFox  for mobileのみサポート

・音楽に制限が多い
  ・音のタイミング調整が非常にシビア
  ・iPhoneは、画面がタッチされたタイミングのみ音楽再生
  ・WindowsPhoneとiPhoneは同時に2つの音楽鳴らせない

・速度はおそい
  ・描画が遅い
  ・Javascriptの実行が遅い

描画手段
・HTML5の描画手段
  Canvas:ラスターグラフィック
  SVG:ベクターグラデーション
  CSS3:変形やアニメーション

SVGはAndrroid2系統でサポート顔
  Canvasで

Canvas
・Android > iPhone

ios4
・DrawImageが遅い。いかに回数を減らすか
  キャッシュにきれいに載せたら勝ち
・DOM構造でCanvasの上にものを載せない

ios5
 GPUサポート
  別のところが重くなる
    キャッシュにきれいに載せたら勝ち

CSS3:悪女 とっつきやすいがいきなり裏切る

・基本的にGPUサポート
・同時に動く物体数が増えると急激に重くなる
・Androidでブラウザバージョン管、
 端末間の互換性がないことが多い
   変形に関しては、ある程度互換性
   Canvas互換性いい

Canvasが効力
 ・シチュエーションに応じて変わるアニメ
 ・同時に動くものが多い
CSS3が効力
 ・1枚モノのアニメーション
 ・同時に動くものが少ないとき

Javascriptが重い理由
  ・アルゴリズムが重い
  ・JITが重い
  ・GC(ガベージコレクション)が重い

JITが重い=eval クロージャの生成を疑う


ガベージコレクション
・AndroidにおいてFullGCが走ることがある
  走るとしゃれにならないほどとまる

・V8は世代別GCを利用している
  なるべく新世代にいるうちに参照する

・iosはメモリが足らなくなると落ちる

メモリとの戦い:王道編
・何度も使うメモリをあらかじめ確保しておく
   参照をはずさない

・上限の決まっているオブジェクトは、初期化時
 に上限まで確保
  オブジェクト生成回数を減らす

メモリとの戦い:邪道編
・なんとか実機上でのメモリ使用量を知りたい
  iPhoneSimulatorは信用できない
  UIWebViewも信用できない

・jail BreakでTOPコマンド(自己責任)


・100M超えたら注意

実機でのプロファイル
・ExGameなどでは、独自プロファイルをしよう
  関数単位でcount,total,selfを取得する
  どの関数のプロファイルをとるかを指定
    CanvasなどのビルドインAPIも指定可能
  プロファイルのタイミングを設定可能
  結果をサーバに送信

JsConsole
  http://jsconsole.com
    nmi.jpでも紹介している

console.log
  iphoneでも設定を操作すれば参照可能
   デバッグログを出力
  console.error hack

ngCore on HTML5

HTML5の将来
・インストールソフトの時代は終わる
  ・歴史は繰り返す



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする