セッションとは?ログイン状態・Cookie・セッションIDの違い

30秒でわかる答え

セッションは、ログイン中など、利用者とサービスのやり取りが続いている状態を管理する考え方です。Cookieはブラウザに残る小さな記録で、セッションIDなどの手がかりが入る場合があります。

受付番号から台帳を開こう

マコト

番号のカードが残っていても、まだ使えるかは別なんだね

イト

その番号の先に、続きの状態を見に行く場所があるの?

ピコ

うん。サーバー側で状態を扱うセッションの考え方が出てくるよ

Webの通信は、1回ごとのリクエストとレスポンスに分かれます。それでも、ログイン後に別のページへ移動してもログイン中として扱われることがあります。この「続いている状態」を扱うために、CookieやセッションID、サーバー側の記録などが組み合わされる場合があります。

第50話では、Cookieの受付番号からサーバー図書館の受付台帳へ進みます。画面のむこう側で、ログイン中の状態がどのように続いているのかを見ていきましょう。

Webのセッションとは|同じ利用の続きを扱う仕組み

セッションは、利用者とサービスのやり取りが続いている状態を扱う考え方です。

漫画:番号があるのに、またログイン? 全3ページ

練習問題の続きを開こうとしたユイ。さっきログインしたはずなのに、もう一度ログインを求められました。ピコと一緒に、番号の先をたどります。

画像を押すと拡大できます。+/−で大きさを変え、拡大中はドラッグして読めます。

1 / 3戻ってきたら、ログイン画面

休憩から戻ったユイがラボのノートパソコンで練習問題の続きを開こうとします。画面は再ログインを求めています。ピコが説明用の番号カードを見せます。

1ページ目:戻ってきたら、ログイン画面
ユイとピコによる創作の場面です。番号カードはCookieに入ったセッションIDを表す比喩で、実際の画面や利用者のデータではありません。

1ページ目のセリフ

  • ユイ「続きの問題を解こうっと。」
  • ユイ「あれ、さっき入れたのに。」
  • ピコ「番号の先を見てみよう。」

2 / 3番号の先にある記録

ピコに案内されたユイが、サーバー側の記録を表す図書館で、持っているカードと開かれた台帳を見比べます。A7という同じ番号の横に「期限切れ」とあります。

2ページ目:番号の先にある記録
サーバー側で状態を管理する方式の一例です。A7は照合を見せるために短くした架空の記号で、実際のセッションIDの長さや作り方を示していません。台帳は実装をたとえたものです。

2ページ目のセリフ

  • ユイ「この番号の記録は……」
  • ユイ「同じ番号。でも、期限切れ?」

3 / 3番号が残ることと、使えること

ユイは番号だけでなく記録の状態へ目を向けます。ラボへ戻り、ログインし直して練習の続きを開こうとします。ログインの成功や入力内容の復元までは描いていません。

3ページ目:番号が残ることと、使えること
有効性をサーバー側で確かめる方式では、番号が残っていてもセッションが無効なら、その番号でログイン中として扱われません。ログインし直す原因は期限切れだけではなく、入力途中の内容が必ず戻るとも限りません。

3ページ目のセリフ

  • ピコ「サーバー側で、まだ使えるか確かめるんだ。」
  • ユイ「番号が残ることと、使えることは別なんだね。」
  • ユイ「もう一度ログインして、続きを開こう。」

横にスワイプして次のページへ。画像を押すと拡大できます。

サーバー側で状態を管理する方式を描いた創作漫画です。カードと台帳は説明のためのたとえで、A7は短くした架空の記号です。実際のセッションIDや画面を再現したものではありません。

番号・記録・期限の関係を本文で読む ↓

100%

拡大中はマウスや指でドラッグできます。100%では左右スワイプ・左右キーでページ送り。

番号だけでなく、対応する記録がまだ使えるかを確かめる。それがこの例のポイントです。自分でログアウトした場合はどうなるのか、セッションの終了とログアウトも見てみましょう。

たとえば、ログイン後にマイページを開く、カートに商品を入れたまま別ページへ移動する、管理画面で作業を続ける、といった場面で「さっきの続き」として扱うために使われます。

サーバー側で状態を管理する方式を、ラボでは受付にたとえます。Cookieは番号を書いたカード、セッションIDはその番号です。サーバー側は番号に対応する台帳の記録を見て、ログイン中か、続きとして扱えるかを判断します。

イトとピコが、受付番号カードとサーバー側の台帳を分けて確認している
セッションは、ブラウザ側の手がかりとサーバー側の記録を使って続きの状態を扱います。

セッションが必要になる場面

Webでは、ページを開くたびにリクエストが送られます。何もしなければ、それぞれのリクエストは別々のお願いに見えます。

それでもサービスでは、次のような「続き」が必要になります。

場面続きとして扱いたいこと
ログイン後のページ移動同じ利用者がログイン中であること
カート入れた商品が次のページでも残ること
管理画面作業中の権限や状態が続くこと
入力フォーム途中の確認や戻る操作を扱うこと
チャットや通知同じ利用者のやり取りとして扱うこと

ログイン前のカートなど、アカウントを確認していない利用でもセッションを使う場合があります。「誰のアカウントか」と「どの利用の続きか」は別の問いです。逆に、同じアカウントでスマホとPCを使い、別々のセッションを持つ場合もあります。

どの状態をいつまで保つかは、サービスの設計によって変わります。セッションには期限があり、いつまでも同じ利用の続きとして扱われるわけではありません。

Cookie・セッションID・サーバー台帳の役割

Cookieとセッションはよく一緒に出てきます。

先に小さな記録の置き場所を確認したい場合は、Cookieとは を見ると、ブラウザ側とサーバー側の分担がつかみやすくなります。

よくある形では、ブラウザのCookieにセッションIDのような番号が入り、サーバー側がその番号を見て台帳を探します。台帳の中には、ログイン中かどうか、利用者の権限、作業中の状態などが置かれる場合があります。

役割たとえ実際の例
Cookie番号を書いたカードブラウザに保存する小さな記録。セッションIDを入れる場合がある
セッションIDカードに書かれた番号対応するセッションを見分ける識別子
サーバー側のセッション情報台帳にある、その番号の記録ログイン中かどうかなど、続きとして扱う状態

Cookieの中に状態をどこまで持つか、サーバー側にどこまで持つかはサービスによって変わります。ここでは、番号を手がかりにサーバー側の状態を調べる方式を例にしています。セッションという考え方そのものが、台帳という一つの保存物を指すわけではありません。

ユイ

セッションIDは、状態そのものではなく台帳を探す番号になることがあるんですね

ピコ

そう。番号と台帳を分けると、Cookieとの違いも見えやすくなるよ

ログイン中が続く流れ

ログイン中が続く流れを、ざっくり分けると次のようになります。

  1. 利用者がログイン情報を送る
  2. サーバーが確認し、続きの状態を作る
  3. ブラウザにセッションIDなどの手がかりを渡す
  4. 次のリクエストで、その手がかりが送られる
  5. サーバーが台帳を見て、ログイン中として扱う

この流れはサービスによって細部が変わります。けれど、画面上では「ログインしたままページを移動できる」という形で見えます。見えている結果の裏側で、ブラウザの手がかりとサーバー側の状態が組み合わされている場合があります。

ユイとマコトとピコが、画面模型からサーバー台帳へ届く手がかりの光を見ている
ログイン中の状態は、次のリクエストでも手がかりを送り、サーバー側の記録を確認することで続きます。

セッション切れ・ログアウトで何が変わる?

セッションには、期限や終了の考え方があります。

一定時間操作しないとログイン画面に戻ることがあります。これは、セッションが期限切れになったり、サーバー側の状態が終了したりするためです。ログアウト操作をすると、サービス側でセッションを終わらせる場合があります。

セッション切れで起きやすいことは、次のようなものです。

  • ログイン画面へ戻る
  • 入力途中の内容が失われる場合がある
  • 「セッションが切れました」と表示される
  • 管理画面で操作をやり直す必要が出る
  • 別タブや別端末で状態が変わる場合がある

ログイン状態をいつまでも残さないようにすることが、期限を設ける理由の一つです。サーバー側でセッションが無効になれば、ブラウザに番号が残っていても、その番号ではログイン中として扱われなくなります。

タブを閉じただけで、サービス側のセッションが必ず終了するとは限りません。共有端末では、利用したサービスからログアウトします。また、セッションの終了は、アカウントに保存済みの注文や作品をすべて消す操作とは別です。

セッションで困ったときの見方

セッション関連のトラブルでは、画面に見えている現象から切り分けます。

たとえば、何度もログイン画面に戻る場合は、Cookieが保存できていない、サーバー側のセッションが短い、別のタブや端末でログアウトした、ブラウザ設定や拡張機能が影響している、といった候補があります。

確認するときは、次を分けます。

  1. Cookieが保存されているか
  2. ログアウト操作をしていないか
  3. 操作しない時間が長くなかったか
  4. 別ブラウザや別端末でも同じか
  5. サービス側の障害や設定変更がないか

利用者としては、再ログイン、Cookie設定の確認、別ブラウザでの確認が入口になります。運用者としては、セッション期限、Cookie設定、ログアウト処理、サーバー側の保存先などを見ます。

Cookie・番号・続きの状態を分けてみる

次の三つを分けて説明してみましょう。

  1. Cookie: __________
  2. セッションID: __________
  3. セッション: __________

答えの例は、Cookieはブラウザの小さな記録、セッションIDは台帳を探す番号、セッションは続いている状態を扱う考え方です。

ミニクイズ:番号と状態、期限切れを確かめる

Q1. セッションを一文でいうと?

セッションは、ログイン中など、利用者とサービスのやり取りが続いている状態を管理する考え方です。

Q2. Cookieとセッションは同じものですか?

いいえ。Cookieはブラウザに残る小さな記録、セッションは続きの状態を扱う考え方です。CookieにセッションIDが入る場合があります。

Q3. セッション切れでは何が起きますか?

ログイン画面へ戻る、入力途中の内容が失われる、操作のやり直しが必要になる、といったことがあります。

この記事の情報・用語を確認する

読了目安 10分 / 更新日

TERM PRIMER

セッション|この記事で使った言葉

セッション
ログイン中など、同じ人の一連の利用状態を区別して扱うための考え方です。
サーバー
データを保存したり、ほかの端末に届けたりする役割を持つコンピューターです。
Cookie
Webサイトがブラウザに保存する小さな情報。ログイン状態などに使われます。
セッションID
同じ利用者の続きの操作だと見分けるために発行される番号です。
ログイン
利用者本人だと確かめて、サービスを使える状態にすることです。
タイムアウト
決めた時間内に応答がないとき、待つのをやめることです。

LAB WHITEBOARD

セッションを一文で説明してみよう

「セッションがログイン中の状態を扱う仕組みであること、Cookieとの関係、期限切れやログアウトで起きることを説明できるようになる。」を、いまの自分の言葉で一文にしてみてください。途中の説明でも大丈夫です。

編集部の実践ガイド

ウイルス対策ソフトの考え方と選び方

乗っ取りやフィッシングへの備えを、パスワード管理と合わせて整理します。

VPNは必要か+初心者向けの選び方

外出先のWi-Fiでログインする場面では、VPNの要否も確認できます。