ウェブ開発技術 50 min read

JavaScript LocalStorage 活用: ユーザー設定を永続的に保存する方法

Author

ウェブ技術エディター

2025年 12월 30일 公開

プログラミングコードとウェブ技術のイメージ

ウェブサイトを利用していると、ユーザーが設定したダークモードの状態がリロード後も維持されたり、ログインしていないのにカートの内容が残っていたりすることに気づくでしょう。サーバーのデータベースを経由せずにこのような機能を実現できる理由は、ブラウザが提供する LocalStorage にあります。

LocalStorageは、HTML5から導入されたWeb Storage APIの中核要素の一つで、クライアントサイドでデータを キー・値(Key-Value) のペアとして保存できます。クッキー(Cookie)よりもはるかに大きな保存容量を持ち、有効期限がないためブラウザを閉じてもデータが保持されます。本記事では、JavaScriptを活用してLocalStorageを制御する基礎から、複雑なオブジェクトデータの管理まで詳しく解説します。

1. LocalStorageの基本概念と特徴

ウェブストレージには大きく分けて LocalStorage と SessionStorage の二つがあります。最大の違いはデータの 持続性 です。

  • 永続性: LocalStorageは明示的に削除しない限りデータが消えません。PCの再起動やブラウザの更新後も維持されます。
  • 容量: クッキーがわずか4KBであるのに対し、LocalStorageは一般的にドメインごとに 5MB〜10MB の容量を提供します。
  • サーバー通信なし: クッキーとは異なり、HTTPリクエストのたびにサーバーに送信されないため、パフォーマンスに影響を与えません。
  • ドメイン分離: 同一プロトコル(HTTP/HTTPS)およびドメイン内でのみデータ共有が可能です。セキュリティ上、他サイトから読み取られることはありません。
"LocalStorageはフロントエンド開発者にとって、サーバーなしで状態を維持できる強力な『ミニDB』を提供します。ただし、機密情報を保存してはいけません。"

2. LocalStorage 制御の4大メソッド

JavaScriptでのLocalStorage操作は非常にシンプルです。 正確な使用法 を理解して、効率的な開発を行いましょう。

API 標準仕様

  • setItem(key, value)

    データを保存または更新します。値は必ず 文字列(String) である必要があります。
  • getItem(key)

    キーを通じて保存された値を取得します。キーが存在しない場合は null を返します.
  • removeItem(key)

    特定のキーとそれに対応するデータを削除します。
  • clear()

    当該ドメインに保存されたすべてのLocalStorageデータを完全に消去します。
JavaScriptコードの記述シーン

3. 高度な活用: オブジェクトと配列の保存技術

LocalStorageの最大の制約は、 文字列のみ保存可能 という点です。数値を保存しても取得時には文字列になります。したがって、オブジェクト(Object)や配列(Array)を保存するには シリアル化(Serialization) が必須です。

ここで JSON.stringify() と JSON.parse() を使用します。

// オブジェクトの保存
const userSettings = {
    theme: 'dark',
    fontSize: '16px',
    isLoggedIn: true
};

// 1. JSON文字列に変換して保存
localStorage.setItem('settings', JSON.stringify(userSettings));

// 2. データを取得してオブジェクトに復元
const savedData = localStorage.getItem('settings');
const parsedData = JSON.parse(savedData);

console.log(parsedData.theme); // 'dark' が出力される

変換を行わずにオブジェクトを直接保存しようとすると、ブラウザは "[object Object]" という無意味な文字列として保存してしまいます。複雑なユーザー設定を管理する際は、必ずこのJSON変換ルールを適用してください。

4. 実践事例: ダークモード(Dark Mode)の実装

最も一般的で有用な活用例はテーマ設定です。 MDN Web Storage 公式ドキュメント を参考に、標準的な実装フローを確認しましょう。

ダークモード維持ロジック

  1. ページロード時に localStorage.getItem('theme') を確認します。
  2. 値が 'dark' なら <body> タグに 'dark' クラスを追加します。
  3. ユーザーが切り替えボタンをクリックしたら現在の状態を反転させ、 setItem でLocalStorageに同期します。
  4. これでブラウザを閉じても以前設定したテーマが維持されます。
ユーザー設定UIデザイン例

5. 注意事項とセキュリティガイド

LocalStorageは便利ですが、セキュリティ面で注意が必要です。 セキュリティ規則 を無視した開発は脆弱性を招きます。

XSS攻撃への脆弱性

LocalStorageはドメイン内のJSから自由にアクセス可能です。悪意のあるスク립トが実行されると、データが容易に盗取されます。

機密情報の保存禁止

パスワード、カード番号、セッショントークン(JWT等)を平文で保存するのは非常に危険です。トークンは HttpOnly クッキーの使用を推奨します。

容量超過エラーの処理

空き容量が不足すると QuotaExceededError が発生します。常に try-catch 文を使用して例外処理を行ってください。

同期実行の負荷

LocalStorageは同期方式で動作します。巨大なデータの頻繁な読み書きはブラウザのレンダリングを妨げ、ラグの原因となります。

6. LocalStorageの先へ: IndexedDBと管理戦略

単純な設定を超えて 大容量データ や複雑な検索が必要な場合は IndexedDB が最適です。LocalStorageは軽量な設定保存用として残し、構造化された大量のデータは非同期で動作する IndexedDB を活用するのが現代的な設計です。

また、 Redux-persist や Zustand のような状態管理ライブラリは、LocalStorageと連携して自動的に状態を永続化する機能を提供しています。これにより、APIを直接呼び出すことなくユーザー体験を維持できます。

結びに: 小さな技術が作る偉大な体験

LocalStorageは小さなツールかもしれませんが、その活用次第でサービスの 完成度 は大きく変わります。ユーザーが毎回設定し直す手間を省く「配慮」は、このLocalStorageから始まります。

本記事で紹介した シリアル化の手法 と セキュリティ指針 をもとに、プロジェクトに魂を吹き込んでください。2026年のウェブ標準を意識した開発を支援します。FreeImgFix.comは、皆様のスマートで創造的な開発を応援しています。

正確な技術活用がユーザーに笑顔を届けます。