フリーキーズ | 独学プログラミング

IndexedDBとは

最終更新日

IndexedDBは、ファイルやブロブなどの大量の構造化データをクライアントサイドで保存するための低レベルAPIです。このAPIは、インデックスを使用してデータの高性能な検索を可能にします。簡単に言うと、Webアプリケーションがユーザーのブラウザにデータを保存する方法であり、オフライン機能やサーバー負荷の軽減に役立ちます。

IndexedDBはNoSQLデータベースであり、SQLデータベースとは異なりテーブルと行を使用しません。その代わり、object stores(オブジェクトストア)とindexes(インデックス)を使用します。オブジェクトストアはレコードの集合体で、各レコードはキーと値のペアになっています。レコードのキーはJavaScriptの任意の値で、値は構造化されたクローン可能な任意の値であることができます。

IndexedDBの使用例

例えば、ユーザーがテキスト文書を作成、編集、保存するためのWebアプリケーションを開発する場合を考えてみましょう。IndexedDBを使用して、ユーザーのブラウザにドキュメントを保存し、インターネット接続が切れても作業を継続できるようにする仕様が考えられます。

この場合、オブジェクトストアは Documents と呼ばれ、各レコードは異なるドキュメントを表すことになります。キーは各ドキュメントの一意な識別子(例えば doc1, doc2 など)、値はドキュメントの内容です。

IndexedDBにおけるインデックスとは、別のオブジェクトストア内のデータを特定のプロパティによって整理するためのオブジェクトストアの一種です。例えば、ドキュメントの最終更新日のタイムスタンプにインデックスを作成すれば、ある時間範囲内に更新されたすべてのドキュメントを素早く取り出すことができます。

IndexedDBの注意点

IndexedDBはクライアントサイドのストレージとして強力な機能を提供しますが、比較的低レベルのAPIであるため、直接使用するには複雑な場合があることは留意しておく必要があります。多くの開発者は Dexie.jsidb-keyval のような、よりシンプルでプロミスベースのAPIをIndexedDBに提供する高レベルのライブラリの利用を好んでいます。