2009-10-02

HTML5 Tech Talk -- API 編

告知通り HTML5 の Tech Talk に参加した。セッションは二つ。

  • オフライン・ウェブ・アプリケーションを作るための API の説明
  • HTML5 で絵を描くための Canvas の説明

本エントリーは前者の API セッションのメモ書き。

HTML5 でオフライン・ウェブ・アプリケーションが作れる

HTML5 では、オフライン・ウェブ・アプリケーションを作る仕組みが整い始めている。その大部分は、Google が Gears で行なっていたもの。ところが、Gears を使ったウェブ・サービスは少ない。数えるほどしかない。

その理由に、「Gears がブラウザーのプラグイン形式」であったことを挙げていた。

HTML という規格自身が、オフライン・ウェブ・アプリケーションの機能を持つメリットとして次の 3 つを挙げていた。

  1. モバイル端末・ネット端末への普及 (特にこれらの機器にはオフライン・アプリのニーズがある)
  2. プラグインという足枷からの解放 (何といってもウェブ・ブラウザー自身がサポートするのだから)
  3. 標準化による開発者の増加 (今はどうしてもノウハウと人材が不足している)

講演はオフライン・ウェブ・アプリケーションを作る 4 つの API の説明と、自作ライブラリーの紹介だった。ただ、自作ライブラリーは今年中の公開予定といふことなので、今回のエントリーでは割合。4 つの API 名は以下の通り。

  1. Application Cache
  2. Web DB
  3. Web Storage
  4. Web Workers

以下、列挙式にメモを書いていく。

Application Cache

  • manifest ファイルに、ローカルに保存するファイル (HTML, JavaScript, CSS, Images, etc.) を書いておく
  • ウェブ・サーバー側で、manifest 用の MIMETYPE を設定する
  • <html manifest="foo.manifest"> のように指定する
  • manifest file がサーバー側とローカル側で一致しないと、キャッシュのやり直しが始まる
  • コメント (バージョン番号) を変えたりするのがコツ? (でも Firefox は最新版でも未対応?)
  • キャッシュ・ファイルを編集してもアップデートはされない (あくまで、manifest ファイルのアップデートがトリガー)
  • Application Cache を ON にしていると、開発しづらい。開発時は使わないか、manifest を自動生成させると良い。
  • JavaScript である程度、Notification の制御も可能

Web DB

  • オフライン・ウェブ・アプリケーションを作る時の核になる
  • JavaScript の中から SQL を叩ける
  • 他ドメインの DB にはアクセスできない
  • ドメインごとに複数の DB、複数の Table を作れる
  • 非同期型と同期型がある
  • ウェブ・サーバーなしでも動く

Web Storage

  • 他ドメインのストレージにはアクセスできない
  • Local Storage (永続的) と Session Storage (ウィンドウごと) の二種類がある。後者は JavaScript のグローバル変数のやうなもの?
  • Webkit は file:// だと使えない
localStorage.setItem("key", "value")
var val = localStorage.getItem("key")

Web Workers

  • バックグラウンドで動作するスレッドのようなもの
  • でも本当のスレッドではない
  • 変数を共有できない
  • window, document にもアクセスできない
  • DOM にもアクセスできない
  • デバッガーで止められない
  • すぐ複雑になる
  • Worker 間の通信には Message を使う (DOM へのアクセスは UI Thread にやってもらうよう Message を送る)

課題

  • ノウハウの蓄積が少なすぎる
  • 差分アップロード/ダウンロードをどうやって実現しよう
  • フェイル・セーフ対策は?
  • 同じデータを他の人が変更してたら Conflict しちゃうよ
  • LocalDB のないブラウザーがある (Fx)

あとがき

ここら辺のメモを少し深く勉強して、明後日の (というかもう明日か) の Hachathon に臨む。ドキドキ。

No comments:

Post a Comment