結論から
LocalStorageは「ちょっとした設定や小さなデータ保存」には便利ですが、大量データや本格的なアプリの保存には向いていないようです。 1MBを超えるような用途では、別の仕組み(IndexedDBやOPFS+Sqliteなど)を使う方が安全だと思われます。
LocalStorageについてのおさらい
LocalStorageは、ブラウザにデータを保存できる仕組みです。 特徴はとてもシンプルです。
- データは「キー」と「値」で保存
- 文字列しか保存できない
- ページを閉じてもデータが残る
基本的な使い方(操作手順)のおさらい
①データを保存する
localStorage.setItem("name", "Taro");
② データを取り出す
const name = localStorage.getItem("name");
console.log(name); // "Taro"
③ データを削除する
localStorage.removeItem("name");
オブジェクトや配列を保存する方法
LocalStorageは文字列しか扱えないため、JSONを使います。
保存
const user = { name: "Taro", age: 20 };
localStorage.setItem("user", JSON.stringify(user));
取得
const user = JSON.parse(localStorage.getItem("user"));
console.log(user.name); // "Taro"
よくある使い方の例
例①:ダークモード設定の保存
localStorage.setItem("theme", "dark");
例②:入力フォームの一時保存
localStorage.setItem("formData", JSON.stringify(formData));
👉 ページをリロードしても内容が残るので便利です。
注意点①:容量制限(ここが重要)
LocalStorageには容量制限があります。
約 5MB〜10MB(ブラウザによる) 合計での制限(1回ごとではない)
NG例(分けても意味がない)
localStorage.setItem("data1", bigData1);
localStorage.setItem("data2", bigData2);
localStorage.setItem("data3", bigData3);
👉 合計サイズが上限を超えると保存できません。
注意点②:エラーが発生する
容量を超えるとエラーになります。
try {
localStorage.setItem("big", bigData);
} catch (e) {
console.error("保存失敗:", e);
}
👉 必ずエラーハンドリングを入れるのが実務では重要です。
注意点③:処理が重くなる(同期処理)
LocalStorageは「同期処理」です。
つまり:
- 書き込み中は画面が止まる可能性あり
- 大きいデータほど影響が大きい
👉 体感的には 1MB以上は注意 です。
注意点④:Safariでは消えることがある
Safariでは「ITP」という仕組みの影響で:
- 7日間アクセスがないとデータが削除されることがある
👉 ログイン情報や重要データには不向きです。
じゃあ何に使うべき?
LocalStorageが向いている用途:
- 設定情報(テーマ・言語)
- 小さなキャッシュ
- 一時的なデータ保存
向いていない用途
よくある誤解ですが、次の用途には使わない方が安全のようです:
- 大量データ保存(画像・ログ)
- 本格的なアプリのデータベース
- 長期間保持したい重要データ
👉 こういう場合は:
- IndexedDB
- OPFS(Origin Private File System)
を検討した方がよさそうです。
実務での判断基準(重要)
迷った場合、下記の基準が目安にできます:
| データサイズ | おすすめ |
|---|---|
| 〜100KB | LocalStorageでOK |
| 〜1MB | 状況による |
| 1MB以上 | IndexedDB推奨 |
| 数MB以上 | IndexedDB or OPFS |
まとめ
- LocalStorageは簡単で便利
- ただし容量は最大でも約5〜10MB
- 同期処理なので大きなデータは危険
- Safariでは消える可能性あり
👉 「小さく・軽く・一時的に」が正しい使い方のようです