Cookie(クッキー)とは? 🍪
ウェブサイトにアクセスすると「Cookieの使用に同意しますか?」というメッセージをよく見ます。Cookieが正確に何で、なぜ必要なのか、初心者でも簡単に理解できるように説明します!
Cookieを日常生活で例えると?
Cookieをレシートで例えてみましょう。
カフェのレシートの話 ☕
初回訪問:
お客: "アメリカーノください"
カフェ: "こちらコーヒーとレシートです"
[レシート: 顧客番号 #123, お好みメニュー: アメリカーノ]
次回訪問:
お客: [レシートを見せる]
カフェ: "あ、#123のお客様! アメリカーノお出ししましょうか?"
Cookieも同じです!
初回訪問:
ブラウザ: "このサイト初めてです"
ウェブサイト: "こちらCookieをどうぞ"
[Cookie: ユーザーID, 設定など]
次回訪問:
ブラウザ: [Cookieを見せる]
ウェブサイト: "あ、お帰りなさい! ログイン維持しますね"
Cookieの定義
Cookie (クッキー)
- ウェブサイトがブラウザに保存する小さなテキストファイル
- ウェブサイトがあなたを「記憶」する方法
- サイズ: 通常4KB以下
Cookieはどこに保存される?
自分のコンピュータ/スマートフォン
└── ブラウザ (Chrome, Safariなど)
└── Cookie保存場所
├── google.com Cookie
├── yahoo.co.jp Cookie
└── github.com Cookie
Cookieがすること
1. ログイン状態維持 🔐
Cookieなし:
1. ログイン
2. 別ページに移動
3. ログアウトされた... 😭
4. また再ログイン
5. また別ページに移動
6. またログアウトされた... 😭
Cookie使用:
1. ログイン
2. Cookieにログイン情報保存
3. 別ページに移動してもログイン維持! ✅
4. ブラウザ閉じてもログイン維持! ✅
2. カート記憶 🛒
ショッピングモールで:
1. 商品Aをカートに入れる
2. 他の商品を見に行く
3. カートに商品Aがそのまま! ✅
3. 個人化設定 ⚙️
ウェブサイト設定:
- 言語: 日本語
- テーマ: ダークモード
- 文字サイズ: 大
→ 次回訪問時に自動適用! ✅
4. 追跡と広告 📊
あなたが見た商品:
- 靴A
- バッグB
→ 他のサイトで関連広告表示
Cookieの構造
Cookieは名前=値の形式で保存されます:
名前: user_id
値: 12345
ドメイン: example.com
パス: /
有効期限: 2025-12-31
セキュリティ: Secure, HttpOnly
実際のCookie例
session_id=abc123xyz; Domain=example.com; Path=/; Expires=Fri, 31 Dec 2025 23:59:59 GMT; Secure; HttpOnly
Cookieの種類
1. セッションCookie (Session Cookie) 🕐
ブラウザを閉じると削除されるCookie
ライフサイクル: ブラウザ実行中のみ
用途: 一時ログイン、カート
特徴: 有効期限なし
例:
ブラウザ開く → ショッピング → ブラウザ閉じる → カートが空になる
2. 永続Cookie (Persistent Cookie) 📅
指定された日付まで維持されるCookie
ライフサイクル: 有効期限まで、または手動削除まで
用途: "ログイン状態維持"、個人化設定
特徴: 有効期限指定あり
例:
"ログイン状態維持" チェック
→ 30日間自動ログイン ✅
3. ファーストパーティCookie (First-party Cookie) 🏠
訪問したウェブサイトが直接作成したCookie
example.com 訪問
→ example.comが設定したCookie
→ example.comでのみ使用
用途:
- ログイン維持
- カート
- サイト設定
4. サードパーティCookie (Third-party Cookie) 🕵️
他のウェブサイトが作成したCookie (主に広告)
example.com 訪問
→ ページ内の広告会社スクリプト実行
→ ads.comがCookie設定
→ 複数サイトであなたを追跡
用途:
- 広告追跡
- ユーザー行動分析
- カスタマイズ広告
警告
サードパーティCookieはプライバシー問題で徐々にブロックされています! Chrome、Safariなどがサードパーティ Cookieをブロック中です。
Cookie動作プロセス
1. Cookie設定 (Set-Cookie)
ブラウザ → ウェブサイト要求
ウェブサイト → 応答 + Cookie送信
HTTP Response:
Set-Cookie: user_id=12345; Expires=...
2. Cookie保存
ブラウザがCookieを保存場所に保管
3. Cookie送信
ブラウザ → ウェブサイト再要求 + Cookieも一緒に送信
HTTP Request:
Cookie: user_id=12345
4. Cookie使用
ウェブサイトがCookieを読んでユーザー識別
→ "あ、12345番ユーザーだ!"
Cookieの属性
Domain (ドメイン)
example.com Cookieは
example.comでのみ使用
Path (パス)
Path=/shop
→ /shopパスでのみCookie送信
Expires/Max-Age (有効期限)
Expires=2025-12-31
→ この日付まで維持
Max-Age=3600
→ 3600秒(1時間)後に削除
Secure (セキュリティ)
Secureフラグ
→ HTTPSでのみCookie送信
HTTPでは送信しない
HttpOnly
HttpOnlyフラグ
→ JavaScriptでアクセス不可
XSS攻撃防御
SameSite
SameSite=Strict
→ 同じサイトでのみCookie送信
CSRF攻撃防御
Cookieの利点
✅ ユーザー体験向上
- ログイン維持
- パーソナライズコンテンツ
- 便利なショッピング
✅ 状態維持
- HTTPは状態なし (Stateless)
- Cookieで状態維持可能
✅ 簡単な実装
- サーバー/クライアント両方で簡単に使用
- 追加設定ほぼ不要
Cookieの欠点
❌ セキュリティリスク
- 盗まれる可能性 (XSS、CSRF攻撃)
- 機密情報保存に不適合
❌ プライバシー問題
- ユーザー追跡可能
- サードパーティCookieで広告追跡
❌ サイズ制限
- Cookie1つあたり4KB制限
- ドメインあたりCookie数制限 (通常20~50個)
❌ 毎回のリクエストで送信
- すべてのHTTPリクエストにCookie含まれる
- トラフィック増加
Cookie vs ローカルストレージ vs セッションストレージ
| 特徴 | Cookie | ローカルス トレージ | セッションストレージ |
|---|---|---|---|
| サイズ | 4KB | 5-10MB | 5-10MB |
| ライフサイクル | 有効期限設定 | 永続 | タブ閉じると削除 |
| サーバー送信 | ✅ 毎回 | ❌ 送信しない | ❌ 送信しない |
| アクセス | サーバー/JS | JSのみ | JSのみ |
| 用途 | 認証、追跡 | 大容量データ | 一時データ |
いつ何を使うべき?
Cookie: ログイントークン、サーバーが知る必要がある情報
ローカルストレージ: ユーザー設定、オフラインデータ
セッションストレージ: 一時フォームデータ、一回限りの情報
Cookieセキュリティ
1. Secureフラグ使用 🔒
Set-Cookie: token=abc; Secure
→ HTTPSでのみ送信
2. HttpOnlyフラグ使用 🛡️
Set-Cookie: session=xyz; HttpOnly
→ JavaScriptアクセスブロック
→ XSS攻撃防御
3. SameSiteフ ラグ使用 🚫
Set-Cookie: id=123; SameSite=Strict
→ CSRF攻撃防御
4. 機密情報保存禁止 ⚠️
❌ パスワード
❌ クレジットカード番号
❌ マイナンバー
✅ セッシ ョンID (暗号化トークン)
✅ ユーザー設定
Cookie管理
ブラウザでCookieを表示
Chrome:
設定 → プライバシーとセキュリティ → Cookieと他のサイトデータ
→ すべてのCookieとサイトデータを表示
開発者ツール:
F12 → Applicationタブ → Storage → Cookies
Cookie削除
1. 特定サイトのCookieのみ削除
2. すべてのCookie削除
3. Cookie自動削除設定 (ブラウザ終了時)
JavaScriptでCookieを扱う
Cookie設定:
document.cookie = "username=田中太郎; expires=Fri, 31 Dec 2025 23:59:59 GMT; path=/";
Cookie読み取り:
console.log(document.cookie);
// "username=田中太郎; theme=dark; ..."
Cookie削除:
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";
実際の使用例
例1: ログイン維持 🔐
// ログイン成功時
Set-Cookie: auth_token=eyJhbGc...;
Expires=Mon, 31 Jan 2025 23:59:59 GMT;
Secure;
HttpOnly;
SameSite=Strict
// 次のリクエスト毎に自動的に:
Cookie: auth_token=eyJhbGc...
例2: テーマ設定 🎨
// ユーザーがダークモード選択
document.cookie = "theme=dark; max-age=31536000; path=/";
// ページロード時
if (document.cookie.includes("theme=dark")) {
enableDarkMode();
}
例3: 言語設定 🌏
// 言語選択
Set-Cookie: lang=ja; Max-Age=31536000; Path=/
// サーバーでCookieを読んで日本語コンテンツ提供
Cookie同意ポップアップ
なぜCookie同意が必要?
GDPR (欧州個人情報保護法):
ウェブサイトはCookie使用前に
ユーザー同意を得る必要がある
必須Cookie vs 選択Cookie:
必須: ログ イン、カート (同意不要)
選択: 広告追跡、分析 (同意必要)
よくある質問 (FAQ)
Q1: Cookieをブロックするとどうなる?
A: 多くのウェブサイトが正常に動作しません。
- ログイン不可
- カート使用不可
- 設定保存されない
Q2: Cookieは安全?
A: 適切に使用すれば安全です。
- Secure、HttpOnlyフラグ使用
- 機密情報を保存しない
- HTTPS使用
Q3: Cookieでウイルスに感染する?
A: いいえ! Cookieは単なるテキストフ ァイルです。
- コード実行不可
- ウイルス含めない
Q4: Cookieを頻繁に削除すべき?
A: 個人の選択です。
- 利点: プライバシー向上
- 欠点: ログアウト、設定初期化
Q5: シークレットモードでCookieは?
A: 一時的に使用されます。
- シークレットウィンドウ閉じると全削除
- 追跡防止向上
Cookieの未来
1. サードパーティCookie廃止
Chrome、Safariなどがサードパーティ Cookieブロック
→ 広告会社が代替案を模索中
2. 代替技術
- Privacy Sandbox (Google)
- FLoC (Federated Learning of Cohorts)
- プライバシー保護強化された新しい標準
次のステップ 🚀
Cookieを理解したら:
- ✅ キャッシュ(Cache)とは? - データを速く読み込む別の方法
- ✅ VPNとは? - オンラインプライバシー保護
- ✅ HTTPリクエスト/レスポンスの理解 - Cookieが送信される方式
まとめ
Cookieはウェブサイトがあなたを記憶する方法です! 🍪
覚えておくポイント:
- Cookie = 小さなテキストファイル
- ブラウザに保存される
- ログイン維持、カート、設定保存
- セキュリティ注意 (Secure、HttpOnly使用)
- サードパーティ Cookieは追跡用 (ブロック可能)
Cookieのおかげで便利にウェブを使用できますが、プライバシーにも気を付けましょう! 🔐