仕組みを知る

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

セッションは、利用者とサービスのやり取りが続いている状態を管理する考え方です。Cookieとの関係、セッションID、ログイン状態、タイムアウト、削除や期限切れで起きることを確かめます。

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

30秒でわかる答え

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

TERM PRIMER

先に知っておく言葉

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

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

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

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

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

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

マコト

Cookieの受付番号だけでは、ログイン中かどうか全部は分からないんだね

イト

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

ピコ

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

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

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

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

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

たとえば、ログイン後にマイページを開く、カートに商品を入れたまま別ページへ移動する、管理画面で作業を続ける、といった場面では「さっきの続き」として扱われる必要があります。セッションは、この続きの状態を扱うための考え方です。

ラボのたとえでは、Cookieが受付番号、セッションが受付台帳です。ブラウザが番号を持ち、サーバー側が台帳を見て「この利用者はログイン中」「この作業の続き」と判断する場合があります。

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

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

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

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

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

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

セッションは、こうした状態をずっと覚え続けるための魔法ではありません。サービスの設計に沿って、一定の範囲や時間の中で状態を扱う仕組みです。

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

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

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

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

役割たとえ実際の例
Cookie受付番号を入れたカードブラウザに保存されるセッションIDなど
セッション受付台帳サーバー側で扱うログイン中の状態など

Cookieの中に状態をどこまで持つか、サーバー側にどこまで持つかはサービスによって変わります。初心者の入口では、「Cookieは番号のカード、セッションは続きの状態を扱う台帳」と分けると理解しやすくなります。

ユイ

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

ピコ

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

ログイン中が続く流れ

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

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

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

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

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

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

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

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

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

これは意地悪な仕組みではありません。ログイン状態をいつまでも残すと危険な場合があるため、セキュリティやサーバー側の管理のために期限を設けることがあります。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

LAB WHITEBOARD

自分の言葉で説明してみよう

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

編集部の実践ガイド

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

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

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

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