2011年8月14日

Indexed Database API を使ってみる

たまには Web 系技術もキャッチアップした方が良いかな、と思っていたら、 Indexed Database API のサンプルがありましたので模写しました。

HTML5 でクライアント側にデータを保存するための仕様ですが、 この部分はバタバタしている印象があり、ブラウザベンダーによる実装差異も多そうですので、 きちんと動くサンプルを書くのは難しいと思います。 上記の模写版は Firefox 5 では動くはずですが、Webkit 系では動いたり動かなかったり。 (どこかで実装を間違えているっぽい...)

なお、API の正式名称は "Indexed Database API" ですが、 省略形は "IndexDB" と "IndexedDB" が混在しているのかな、 といった状況です。 関係する仕様としては "Web Storage" と "Web SQL Database" がありますが、 前者は Key / Value を保存するもの、後者は SQL を使う仕様を策定してみたもののボツになったものです。 "Indexed Database API" と "Web Storage" はどちらも NoSQL ですが、 データを一覧表示するかしないかの違いとも考えられます。 IndexedDB を使って Key / Value も実現できますが、本当に Key に対する Value が欲しいだけなら localStorage (Web Storage の一部) を使う方が簡単です。 どれも名前と使いどころくらいは知っておいた方が良さそうです。

"Indexed Database API" は基本的に非同期処理でコールバックを多用する必要がありますので、 抽象化ライブラリを作ってメソッドチェーンでつなげるようにするべきなんだろうな、と思います。 jQuery における jqXHR のようなオブジェクトが出てくるかもしれませんね。 (同期処理でデータを操作するのは、ユーザーへの応答性という点でイマイチなはず)

API の細かい使い方は Mozilla の記事 (英語、下記リンク) に書かれています。 カーソルの受け渡しに慣れてくればサクサク記述できると思いますが、 コールバックのつなげ方は実装の試行錯誤が必要になりそうです。 あと、開発者コンソールかなんかでデータを確認できるようになると嬉しいですね。

リンク

コメントを投稿