はじめに
Internet Explorer 10(以下、IE10)ではIndexed Database API(以下、IndexedDB)が初めて実装されました。IndexedDBは現在W3CのWorking Draft(英語)として公開されています。
IndexedDBとはブラウザ内で動作するNoSQLデータベースで、JavaScriptのオブジェクトをそのまま保存、または読みだすことができます。IndexedDBの最大の特徴は、保存されたJavaScriptのプロパティ値に対するインデックスを持つことができ、オブジェクトの高速な検索が可能となっています。また、オフラインの状態でもデータの読み書きを行うことができ、ブラウザを終了してもデータは消去されないことから、デスクトップアプリと比べても遜色が無いようなオフラインWebアプリケーションを作成することも可能です。
今回の記事では、RSSフィードリーダー「IDB Feed Reader」を題材として、IndexedDBの機能をおおまかに見ていくことにします(このデモは、Developers Summit 2012のセッション「次期Internet Explorer、IE10とHTML5 API」で使用したものと同じです)。
このサンプルにアクセスすると、登録されているURLからフィードを読み込んで、すべてのフィードをIndexedDBに保存します。以降は既読や未読の管理、スターの付け外しなどの処理は全てIndexedDBを対象として行われるため、同じ処理をサーバに対して行うアプリケーションに比べて、非常に高速に動作します。
では、以降はサンプルからコードを引用しながら、IndexedDBプログラミングについて全体的な解説を行います。このデモンストレーションのソースコードは、こちらからダウンロードすることができます。