localStorageとsessionStorageの違いをブラウザAPIで学ぶ
- 作成日 2025.02.18
- javascript
- javascript

localStorageとsessionStorageは、ブラウザが提供するWeb Storage APIの一部であり、データの永続的保存と一時的保存を実現する手段です。それぞれの特徴や利用例を理解することで、適切な場面で活用できます。
Web Storage APIの概要
Web Storage APIは、ブラウザにデータを保存するためのキー/バリュー型ストレージを提供します。Cookieに比べてシンプルで効率的です。
localStorageの特徴
localStorageは、ブラウザに永続的にデータを保存します。ユーザーが明示的にデータを削除しない限り、保存されたデータは保持されます。
localStorage.setItem('key', 'value');
console.log(localStorage.getItem('key')); // 'value'
localStorage.removeItem('key');
sessionStorageの特徴
sessionStorageは、現在のセッションが終了するとデータが削除されます。同一タブ内でのみデータが共有され、タブを閉じると消失します。
sessionStorage.setItem('sessionKey', 'sessionValue');
console.log(sessionStorage.getItem('sessionKey')); // 'sessionValue'
sessionStorage.clear();
localStorageとsessionStorageの違い
- データの寿命: localStorageは永続的、sessionStorageはセッション終了まで。
- タブ間のデータ共有: localStorageは可能、sessionStorageは不可能。
- 使用方法はほぼ同一。
データの容量制限
localStorageとsessionStorageは、一般的に5MBのデータを保存可能です。この容量を超えるとエラーが発生します。
try {
const largeData = 'a'.repeat(5 * 1024 * 1024);
localStorage.setItem('largeKey', largeData);
} catch (e) {
console.error('Storage limit exceeded');
}
データ形式
保存されるデータは文字列形式です。オブジェクトや配列を保存する場合、JSON.stringifyを使用します。
const user = { name: 'Alice', age: 25 };
localStorage.setItem('user', JSON.stringify(user));
const retrievedUser = JSON.parse(localStorage.getItem('user'));
console.log(retrievedUser.name); // 'Alice'
セキュリティの考慮事項
localStorageとsessionStorageはクライアントサイドに保存されるため、機密情報を保存しないでください。また、XSS攻撃によりデータが漏洩する可能性があります。
ストレージ操作のイベント
localStorageに変更が加えられると、storageイベントが発火します。sessionStorageではこのイベントは発生しません。
window.addEventListener('storage', event => {
console.log(`Key: ${event.key}, New Value: ${event.newValue}`);
});
localStorage.setItem('test', 'value');
ブラウザ間の互換性
ほとんどの最新ブラウザでlocalStorageとsessionStorageがサポートされています。ただし、Internet Explorerの古いバージョンでは制限があります。
Cookieとの比較
Cookieは主にサーバー間通信で使用されますが、localStorageとsessionStorageはクライアントサイド専用です。また、Cookieのデータサイズは4KBに制限されます。
ストレージのクリア
ストレージ全体を削除するにはclearメソッドを使用します。
localStorage.clear();
sessionStorage.clear();
実用例: ユーザー設定の保存
ユーザーのテーマ設定をlocalStorageに保存し、ページを再読み込みしても反映させる例です。
document.getElementById('theme-toggle').addEventListener('click', () => {
const currentTheme = localStorage.getItem('theme') === 'dark' ? 'light' : 'dark';
document.body.className = currentTheme;
localStorage.setItem('theme', currentTheme);
});
まとめ
localStorageとsessionStorageを使い分けることで、ブラウザ上で効率的にデータを管理できます。それぞれの特徴を理解し、適切なユースケースで活用しましょう。
-
前の記事
Oracle Database テーブル同士を内部結合して抽出する 2025.02.17
-
次の記事
Error: Invalid syntax detected の解決方法 2025.02.18
コメントを書く