【せっしょん】

セッション とは?

💡 「あなたは誰で、今何をしているか」を覚え続ける仕組み
📌 このページのポイント
セッション管理の仕組み ブラウザ サーバー ① ログインリクエスト (ID + パスワード) ② セッション作成 ID: abc123 ③ Set-Cookie: session_id=abc123 🍪 Cookie保存: abc123 ④ リクエスト + Cookie: session_id=abc123 ⑤ セッション照合 abc123 → ユーザーデータ レスポンス (認証済みデータ) セッションストア: abc123 → {'{ user: "Ken", role: "admin" }'}
セッション管理の仕組み
ひよこ ひよこ

セッションって何?Cookieと何が違うの?

ペンギン先生 ペンギン先生

Cookieブラウザ(クライアント側)にデータを保存するもの。セッションはサーバー側にデータを保存して、「どのユーザーのデータか」を識別するためのIDだけをCookieで渡す仕組みだよ。大事なデータをサーバーで管理できるのがポイント。

ひよこ ひよこ

セッションIDって何をするもの?

ペンギン先生 ペンギン先生

「図書館のロッカーの鍵番号」みたいなものだよ。サーバーはロッカー(セッションストア)にユーザーのデータを入れておいて、ユーザーには鍵番号(セッションID)だけを渡す。次回アクセスときに番号を見せてもらえば、どのロッカーか分かるんだ。

ひよこ ひよこ

セッションが切れるって何?

ペンギン先生 ペンギン先生

サーバーが保存しているセッション情報を削除すること。「30分操作がなければログアウトします」みたいな仕組みがそれだよ。セキュリティのために一定時間で自動的に切れるように設計するのが普通なんだ。

ひよこ ひよこ

複数サーバーでセッションを管理するのって難しいの?

ペンギン先生 ペンギン先生

ここが中上級者でもハマるポイントだよ。サーバーが1台ならセッションをメモリに持てばいいけど、サーバーが複数台になると問題が起きる。「サーバーAでログインしたのに、次のリクエストがサーバーBに届いたらセッションがない」という状態になる。これを解決するにはRedisなどの共有セッションストアを使うか、JWTJSON Web Token)のようなサーバー側に状態を持たない仕組みを使うか、という設計の判断が必要で、スケールアウト時の定番の悩みポイントなんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「セッション」って出てきたら「ログイン状態など接続が続いている間だけ保持されるユーザー情報の管理の仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Session」 = 会合・期間・ひとまとまりのやりとり
💬 英語のSessionは「議会の会期」など「一定期間の活動のまとまり」を指す言葉。Webでもアクセスから離脱までの「ひとまとまり」をSessionと呼ぶよ
← 用語集にもどる