【うぇぶすとれーじ】

Web Storage(localStorage/sessionStorage) とは?

公開:
💡 ブラウザに「ちょっとメモしといて」と頼める保存箱だよ
📌 このページのポイント
Web Storage: localStorage vs sessionStorage localStorage 永続的に保存 ブラウザを閉じても残る theme dark lang ja 用途: テーマ設定、言語設定 sessionStorage タブを閉じると消える セッション限定の保存 formData {...} scrollPos 1200 用途: フォーム一時保存、状態管理 比較項目 localStorage sessionStorage 寿命 永続(手動削除まで) タブを閉じるまで 共有範囲 同一オリジン全タブ そのタブのみ
localStorageとsessionStorageの違い
ひよこ ひよこ
Web Storageってどういうものなの?
ペンギン先生 ペンギン先生
Webブラウザの中にデータを保存できる仕組みだよ。localStorageとsessionStorageの2種類があって、どちらもJavaScriptから簡単に「キーと値」のペアで読み書きできるんだ。
ひよこ ひよこ
localStorageとsessionStorageって何が違うの?
ペンギン先生 ペンギン先生
一番の違いはデータの寿命だよ。localStorageブラウザを閉じてもデータが残り続けるけど、sessionStorageはタブやウィンドウを閉じたら消えるんだ。たとえばダークモードの設定はlocalStorage、入力フォームの一時保存はsessionStorageが向いているよ。
ひよこ ひよこ
Cookieとは何が違うの?
ペンギン先生 ペンギン先生
大きく3つ違うよ。まず容量はCookieが約4KBなのに対し、Web Storageは5〜10MBもある。次にCookieHTTPリクエストのたびにサーバーへ自動送信されるけど、Web Storageはブラウザ内だけで完結する。最後に、Web Storageの方がAPIがシンプルで使いやすいんだ。
ひよこ ひよこ
使い方は難しいの?
ペンギン先生 ペンギン先生
すごく簡単だよ。localStorage.setItem('theme', 'dark') で保存して、localStorage.getItem('theme') で取り出すだけ。sessionStorageも同じAPIで、localStorageの部分をsessionStorageに変えるだけなんだ。
ひよこ ひよこ
じゃあ何でもWeb Storageに入れちゃえばいいんじゃないの?
ペンギン先生 ペンギン先生
注意点があるよ。まず保存できるのは文字列だけだから、オブジェクトJSON.stringifyで変換する必要がある。それに同期的に動作するから、大量のデータを扱うとページの描画が止まることがあるんだ。大きなデータにはIndexedDBの方が向いているよ。
ひよこ ひよこ
セキュリティ的に気をつけることはある?
ペンギン先生 ペンギン先生
Web Storageは同一オリジンポリシーで保護されていて、別のドメインからはアクセスできないよ。でもXSS攻撃でJavaScriptを注入されると中身が丸見えになるから、パスワードトークンなどの機密情報は保存しちゃダメだよ。
ひよこ ひよこ
なるほど、使いどころを選ぶ必要があるんだね!
ペンギン先生 ペンギン先生
そのとおり。ちなみにプライベートブラウジング(シークレットモード)だとブラウザによってWeb Storageの挙動が変わることがあるよ。Safariでは以前、シークレットモードlocalStorageへの書き込みがエラーになる問題があったんだ。Web開発では「保存できない場合」のハンドリングも忘れずに実装するのがプロの仕事だよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Web Storage」って出てきたら「ブラウザにデータを保存するlocalStorageとsessionStorageのこと」と思えればだいたいOK!
📖 おまけ:英語の意味
「Web Storage」 = Web用の保存領域
💬 Storage(貯蔵庫)の名前どおり、ブラウザの中にある小さなデータ倉庫のことだよ
← 用語集にもどる