【せっしょん】

セッション とは?

最終更新:
💡 複数のアクセスで、同じ利用者の状態を引き継ぐ

Webでは、同じ利用者に属する複数のリクエストをひとまとまりとして扱うこと。ログイン状態やカートなどを引き継ぐためにセッション管理を行う。HTTP接続を開き続けるという意味ではない。

📌 このページのポイント
IDで次のアクセスにつなぐ ブラウザ サーバー ① ログインのリクエスト IDと状態を保存 ログイン済み など ② CookieでIDを渡す ③ 次のアクセスでIDを送る IDで状態を参照 ④ 状態に応じた応答 サーバー側に状態を保存する方式の例
接続を開き続けなくても状態を引き継げる。署名付きCookie自体に状態を入れる実装もある。
ひよこ ひよこ
セッションって、ずっと接続していること?
ペンギン先生 ペンギン先生
ここではWebの話だよ。HTTPはリクエストごとに独立したやりとりなので、ログイン状態などを次のアクセスに引き継ぐ仕組みをアプリが用意する。それがセッション管理。ネットワーク接続をずっと開いておく必要はないんだ。
ひよこ ひよこ
Cookieとは何が違うの?
ペンギン先生 ペンギン先生
Cookieはブラウザに情報を保持させ、対象のリクエストで送る仕組み。セッションは複数のアクセスを同じ利用者の状態に結びつけるまとまりだよ。典型的には、CookieにIDを入れ、サーバーがそのIDで保存済みの状態を探すんだ。
ひよこ ひよこ
セッションIDって何?
ペンギン先生 ペンギン先生
サーバー側の状態を見つけるための識別子だよ。受付で番号札を渡し、次にその番号で記録を探すようなイメージ。ログイン後のIDが漏れると本人のふりをされるおそれがあるので、ただの公開用番号として扱ってはいけないよ。
ひよこ ひよこ
ブラウザを閉じればセッションは切れる?
ペンギン先生 ペンギン先生
必ず切れるとは限らないよ。アプリ側でログアウト時に失効させたり、無操作の時間や作成からの時間で期限を設けたりする。ブラウザを閉じたことだけに頼って、サーバー側の状態が失効したとは判断できないんだ。
ひよこ ひよこ
状態は必ずサーバーに保存するの?
ペンギン先生 ペンギン先生
署名付きCookieに状態を入れる方式もあるよ。署名は改ざんを検出するためのもので、内容を隠す暗号化とは違う。サーバー側に保存する方式を複数台で使うなら、共有DBやRedisを使うなど、状態の共有やリクエストの振り分けを設計する必要があるね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「セッション」って出てきたら「複数のやりとりで同じ利用者の状態を引き継ぐまとまり」と思えばだいたいOK!
📖 おまけ:英語の意味
「Session」 = 会合・期間・ひとまとまりのやりとり
💬 一定の活動のまとまりを指す言葉。ここではWebの利用者とサイトのやりとりを扱うよ。接続の寿命や、アクセス解析での集計単位とは区別しよう。

参考資料

← 用語集にもどる