【いんでっくすどでぃーびー】

IndexedDB とは?

最終更新:
💡 ブラウザの中に、検索できるデータ置き場を作る

ブラウザ側で構造化データを保存・取得するデータベースAPI。キーやインデックス、非同期処理とトランザクション、容量と削除の条件を説明します。

📌 このページのポイント
IndexedDB:ブラウザ内のデータ置き場同じオリジンのブラウザ側WebアプリIndexedDBメモの保存先要求結果のイベントメモのオブジェクトストアの例キー 1 → 内容「買い物リスト」キー・インデックス・トランザクション容量と保持は条件次第。削除にも備えよう
ブラウザ側でデータを管理する模式図。要求と結果は非同期で、書き込み要求の成功とトランザクション完了は区別します。
ひよこ ひよこ
IndexedDBは、ブラウザの中のデータベース?
ペンギン先生 ペンギン先生
そうだよ。例えばメモをキーと内容のデータとして保存する。オブジェクトストアという置き場を作り、インデックスも使って検索できる。構造化クローンに対応するデータが保存対象なんだ。
ひよこ ひよこ
保存は、すぐ結果が返るの?
ペンギン先生 ペンギン先生
処理は非同期だよ。要求の成功や失敗をイベントで受け取り、データの読み書きはトランザクションの中で行う。保存の要求を出したことと、トランザクションが完了したことを分けて扱おう。
ひよこ ひよこ
たくさん保存して、オフラインでも使える?
ペンギン先生 ペンギン先生
通信がなくても保存したデータを使う機能の土台になるよ。ただしIndexedDBだけでアプリ全体のオフライン対応が完成するわけではない。容量はブラウザや端末などで変わり、上限を超える書き込みは失敗するんだ。
ひよこ ひよこ
大切なデータも、ずっと消えない?
ペンギン先生 ペンギン先生
初期状態では空き容量などの事情で削除される場合があるよ。navigator.storage.estimate()で使用量と上限の推定を調べ、persist()で永続化を要求できるけれど、承認されるとは限らない。利用者による削除にも備えて、必要な同期やバックアップを考えよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「IndexedDB」って出てきたら「ブラウザ内で構造化データを管理するデータベースAPI」と思えばだいたいOK!
📖 おまけ:英語の意味
「IndexedDB」 = インデックスを使えるブラウザ側のデータベースAPI
💬 データはオブジェクトストアで管理し、キーやインデックスで取り出します。アクセスできるデータは原則として同じオリジンに限定されます。

参考資料

← 用語集にもどる