メインコンテンツにスキップ

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の種類

ブラウザを閉じると削除されるCookie

ライフサイクル: ブラウザ実行中のみ
用途: 一時ログイン、カート
特徴: 有効期限なし

例:

ブラウザ開く → ショッピング → ブラウザ閉じる → カートが空になる

指定された日付まで維持されるCookie

ライフサイクル: 有効期限まで、または手動削除まで
用途: "ログイン状態維持"、個人化設定
特徴: 有効期限指定あり

例:

"ログイン状態維持" チェック
→ 30日間自動ログイン ✅

訪問したウェブサイトが直接作成したCookie

example.com 訪問
→ example.comが設定したCookie
→ example.comでのみ使用

用途:

  • ログイン維持
  • カート
  • サイト設定

他のウェブサイトが作成したCookie (主に広告)

example.com 訪問
→ ページ内の広告会社スクリプト実行
→ ads.comがCookie設定
→ 複数サイトであなたを追跡

用途:

  • 広告追跡
  • ユーザー行動分析
  • カスタマイズ広告
警告

サードパーティCookieはプライバシー問題で徐々にブロックされています! Chrome、Safariなどがサードパーティ Cookieをブロック中です。

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ローカルストレージセッションストレージ
サイズ4KB5-10MB5-10MB
ライフサイクル有効期限設定永続タブ閉じると削除
サーバー送信✅ 毎回❌ 送信しない❌ 送信しない
アクセスサーバー/JSJSのみ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を理解したら:

  1. キャッシュ(Cache)とは? - データを速く読み込む別の方法
  2. VPNとは? - オンラインプライバシー保護
  3. HTTPリクエスト/レスポンスの理解 - Cookieが送信される方式

まとめ

Cookieはウェブサイトがあなたを記憶する方法です! 🍪

覚えておくポイント:

  • Cookie = 小さなテキストファイル
  • ブラウザに保存される
  • ログイン維持、カート、設定保存
  • セキュリティ注意 (Secure、HttpOnly使用)
  • サードパーティ Cookieは追跡用 (ブロック可能)

Cookieのおかげで便利にウェブを使用できますが、プライバシーにも気を付けましょう! 🔐