0Pricing
React Academy · レッスン

sessionStorage、IndexedDB、適切な API の選び方

ブラウザーのストレージ機能を、保持期間、容量、同期アクセスと非同期アクセスの違いで比較します。

「sessionStorage、IndexedDB、適切な API の選び方」はCoddyKit上の無料React Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはReact Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 React Academyコースには全4レッスンが含まれています。

sessionStorageは同じAPIを共有する

sessionStorageはlocalStorageとまったく同じメソッドを提供しますが、その有効期間はタブに紐づいています。タブまたはウィンドウを閉じると、データは自動的に消去されます。

また、タブごとに分離されているため、2つのタブでsessionStorageのデータが共有されることはありません。

複数ステップフォームのユースケース

sessionStorageは、セッション中の再読み込み後も進行状況を保持しつつ、タブを閉じたら破棄したい複数ステップのウィザードに適しています。

ユーザーはフォームの途中で更新しても入力内容を失わずに済みますが、完了または離脱した後までデータが残ることはありません。

IndexedDB:非同期で大容量

IndexedDBは、ブラウザーに組み込まれた非同期のトランザクションデータベースです。localStorageの5MB制限をはるかに超えるデータを保存でき、構造化されたオブジェクトや配列、さらにはバイナリデータも扱えます。

非同期で動作するため、localStorageのようにメインスレッドをブロックしません。

IDB-KeyvalのPromiseラッパー

IndexedDBの生のAPIは冗長でイベントベースであるため、idb-keyvalのようなライブラリは、get、set、delなどのシンプルなPromiseベースの関数でラップしています。

これにより、localStorageに似た使いやすさで、IndexedDBの容量と非同期動作を利用できます。

大きなBlob向けのIndexedDB

IndexedDBはBlobやArrayBufferの値を保存できるため、画像、音声、ダウンロードしたファイル、オフライン用アセットのキャッシュに適しています。

これらはlocalStorageの制限をすぐに超えてしまい、文字列化も必要になりますが、IndexedDBならその必要はありません。

HTTPレスポンス向けのCache API

Cache APIは、サービスワーカーとともによく使われ、リクエストをキーとしてHTTPのResponseオブジェクト全体を保存します。ネットワークレスポンスをオフライン優先でキャッシュするために特化したAPIです。

オフライン時にネットワークへ接続せず、アセットやAPIレスポンスを提供するために使います。

保持期間の比較

localStorageは消去されるまで永続的に保持され、sessionStorageはタブのセッション中だけ保持されます。IndexedDBは永続的に保持され、Cookieには属性によって有効期限を設定できます。

必要な保持期間に合った保存先を選ぶことで、データがいつ消えるのかについての予期せぬ問題を避けられます。

容量の比較

localStorage と sessionStorage はおよそ 5MB、Cookie は 1 個あたり約 4KB に制限されますが、IndexedDB はデバイスやブラウザーによって数百 MB 以上を使用できます。

大容量のデータには、IndexedDB が現実的なブラウザーの選択肢です。

同期処理と非同期処理

localStorage、sessionStorage、Cookie は同期処理のため、アクセス中はメインスレッドをブロックします。IndexedDB と Cache API は非同期処理で、Promise ベースです。

非同期アクセスにより、大量のデータを読み書きする場合でも UI の応答性を維持できます。

用途で選ぶ

認証トークンには httpOnly Cookie を使用してスクリプトから読み取れないようにし、小規模な永続的設定には localStorage、大きなファイルや複雑なオフラインデータには IndexedDB、タブ内で一時的に保持する下書きには sessionStorage を使用します。

データの機密性、サイズ、保持期間に合わせてストレージを選択します。

整理

すべての用途に最適なストレージ API はありません。それぞれ、容量、永続性、同期動作、セキュリティの面で異なるトレードオフがあります。違いを理解することで、意図を持って選択できるようになります。

一般的なアプリでは、認証に Cookie、設定に localStorage、オフライン用アセットに IndexedDB というように、複数のストレージを使い分けます。

理解度チェック

ストレージの選択について理解度を確認します。

振り返り

sessionStorage、localStorage、IndexedDB、Cookie、Cache API について、永続性、容量、同期動作、セキュリティの観点から比較しました。

用途に応じた選択方法を学びました。認証には Cookie、小規模な設定には localStorage、大規模または複雑なデータには IndexedDB、タブ単位の下書きには sessionStorage を使用します。

よくある質問

「sessionStorage、IndexedDB、適切な API の選び方」レッスンは無料ですか?

はい。「sessionStorage、IndexedDB、適切な API の選び方」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、React Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 React Academyコースには全4レッスンが含まれています。

「sessionStorage、IndexedDB、適切な API の選び方」で何を学びますか?

ブラウザーのストレージ機能を、保持期間、容量、同期アクセスと非同期アクセスの違いで比較します。 ブラウザで直接実行するハンズオンコードでReact Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

React Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのReact Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「sessionStorage、IndexedDB、適切な API の選び方」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このReact Academyレッスンでコードを書いて実行できますか?

はい。すべてのReact Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. React で localStorage を読み書きする
  2. 状態を localStorage と同期する
  3. タブ間で Storage イベントを処理する
  4. sessionStorage、IndexedDB、適切な API の選び方
← React Academyに戻る