読み方 : インデックスディービー
IndexedDB
IndexedDBとは?
Webブラウザ上でWebアプリケーションがデータを永続的に保存するための仕組み。JavaScriptから操作できる低レベルのデータベースAPIである。

従来から存在するブラウザ上のデータ保存の仕組み(CookieやlocalStorage)では文字列しか扱えない上に容量にも限界があった。IndexedDBはこうした制約を解消するために設計され、テキストだけでなくオブジェクトやバイナリデータなど多様な形式のデータをデータ量の制約なく保存できる。HTML5の登場とともに普及が進み、現在では主要なブラウザすべてでサポートされている。
データの構造はリレーショナルデータベースのようなテーブル形式ではなく、「オブジェクトストア」と呼ばれる単位でデータを管理する。オブジェクトストアにはJavaScriptのオブジェクトをそのまま格納でき、各レコードは「キー」によって識別される。また、特定のフィールドに対して「インデックス」を作成することで、キー以外の条件でも効率よく検索が行える。
操作はすべて非同期で実行される。これはブラウザが処理を実行するプログラムの流れをブロックせず、画面の描画や他の処理を妨げないためである。具体的には「トランザクション」という単位で読み書きを行い、処理の整合性を保ちながらデータを安全に更新できる仕組みになっている。
主な用途としては、オフラインでも動作するWebアプリケーション(PWA)のためのデータキャッシュや、大量のローカルデータを扱うアプリへの組み込みが挙げられる。Service Workerと組み合わせることで、ネットワーク接続の有無に応じた動作切り替えや同期処理を実装できる。APIの操作が煩雑であるため、実際の開発では「Dexie.js」や「localForage」といったラッパーライブラリを介して利用されるケースも多い。