告知通り HTML5 の Tech Talk に参加した。セッションは二つ。
- オフライン・ウェブ・アプリケーションを作るための API の説明
- HTML5 で絵を描くための Canvas の説明
本エントリーは前者の API セッションのメモ書き。
HTML5 でオフライン・ウェブ・アプリケーションが作れる
HTML5 では、オフライン・ウェブ・アプリケーションを作る仕組みが整い始めている。その大部分は、Google が Gears で行なっていたもの。ところが、Gears を使ったウェブ・サービスは少ない。数えるほどしかない。
その理由に、「Gears がブラウザーのプラグイン形式」であったことを挙げていた。
HTML という規格自身が、オフライン・ウェブ・アプリケーションの機能を持つメリットとして次の 3 つを挙げていた。
- モバイル端末・ネット端末への普及 (特にこれらの機器にはオフライン・アプリのニーズがある)
- プラグインという足枷からの解放 (何といってもウェブ・ブラウザー自身がサポートするのだから)
- 標準化による開発者の増加 (今はどうしてもノウハウと人材が不足している)
講演はオフライン・ウェブ・アプリケーションを作る 4 つの API の説明と、自作ライブラリーの紹介だった。ただ、自作ライブラリーは今年中の公開予定といふことなので、今回のエントリーでは割合。4 つの API 名は以下の通り。
- Application Cache
- Web DB
- Web Storage
- 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