【うぇぶすとれーじ】

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(貯蔵庫)の名前どおり、ブラウザの中にある小さなデータ倉庫のことだよ
← 用語集にもどる