- 技術 💻
ログアウトとは?サインアウトとの違いと消えるもの・残るものを実測
結論
ログアウトとは、ログインしている状態を終わらせ、サービス側に「この人だと分かっている状態」を切ってもらう操作です。サインアウト・ログオフとほぼ同じ意味で、アカウントやデータは消えません。
この記事でわかること
- ログアウトとサインアウト・退会・ロックの違い(場面別の表)
- ログアウト前後で Cookie・localStorage・戻るボタン・別タブがどう変わるかの実測
- 勝手にログアウトされる原因と、ログアウトできないときの直し方
ログインすると、サービスはブラウザやアプリに「合言葉(セッションIDやトークン)」を渡し、次からはその合言葉で本人だと判断します。ログアウトは、この合言葉をサービス側で無効にし、手元からも消すことです。
flowchart TD
A[ログイン] --> B[合言葉を発行<br>セッションIDなど]
B --> C[ブラウザが保存<br>Cookie など]
C --> D[以後は合言葉で本人と判断]
D --> E[ログアウト]
E --> F[サービス側で<br>無効化]
E --> G[手元から削除]
F --> H[次はログイン画面へ]
G --> H
よく調べられることの答えを先にまとめます。
| 知りたいこと | 答え | 詳しい節 |
|---|---|---|
| ログアウトとは | ログインしている状態を終わらせる操作。アカウントは残る | ログアウトとは(ふだんの意味とITでの意味) |
| ログアウトとサインアウトの違い | 意味はほぼ同じ。サービスごとの呼び方の違い | ログアウトとサインアウト・ログオフの違い |
| ログアウトするとどうなる | ログインが要る画面が開けなくなる。データ・投稿・購入履歴は消えない | ログアウトするとどうなる |
| ログアウトと退会の違い | 退会はアカウント自体をなくす。ログアウトは一時的に切るだけ | 退会・アンインストール・ロックとの違い |
| ブラウザを閉じればログアウトになる? | ならない場合がある。「ログインしたままにする」の Cookie は残った | ブラウザを閉じただけではログアウトにならない |
| ログアウト後に戻るボタンで画面が見えた | ブラウザのキャッシュから表示されただけで、操作はできない | 戻るボタンで前の画面が見える理由 |
| 勝手にログアウトされる | 時間切れ・Cookie の削除・パスワード変更・サービス側の再起動など | 勝手にログアウトされる原因 |
| 全部の端末からログアウトしたい | Google・Microsoft・Claude などは設定画面から一括でできる | 主なサービスのログアウト方法 |
確認環境:Ubuntu 24.04.5 LTS の上で、Python 3.13.18・Flask 3.1.3(Werkzeug 3.1.9)でログイン・ログアウトのある小さなサイトを作り、127.0.0.1 のポートで起動しました。セッションはサーバーのメモリに持ち、ブラウザには HttpOnly の Cookie(sid)を渡す形です。「ログインしたままにする」を選ぶと、30日有効の Cookie(remember)も渡します。ログアウト前後の Cookie・localStorage・sessionStorage・戻るボタン・別タブ・ブラウザの再起動は Chromium 153.0.8010.12(Playwright 1.63.0・Node.js 22.23.4・日本語の画面)で、応答のヘッダーは curl 8.5.0 で確かめました。Linux の logout コマンドは bash 5.2.21 で実行しています。Google・Microsoft・X・Claude・Windows・Mac の操作は手元で動かせないため、各社の公式ヘルプで1つずつ確かめた範囲だけを書きました。サービス側の作り方の考え方は OWASP の Session Management Cheat Sheet、Cookie と Clear-Site-Data の仕様は MDN で確かめています。図は mermaid 11.16.0 で描画を確かめました(確認日 2026年10月29日)。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「ログアウトとは?サインアウトとの違いと消えるもの・残るものを実測」
ログアウトとは(ふだんの意味とITでの意味)
この節では、ログアウトという言葉が、ふだんの会話とIT・プログラミングでそれぞれ何を指すのかが分かります。
ログアウトは、英語の log out(ログオフ・サインアウトとも)に由来する言葉で、「利用者として入っている状態から出ること」です。 辞書(Weblio の IT 用語辞典)では、ログイン状態を解消してセッションを終了する操作、と説明されています。
同じ「ログアウト」でも、話している人によって指すものが少しずつ違います。会話で食い違いやすいので、場面別に並べます。
| 場面 | ログアウトが指すもの | 具体的な画面・操作 |
|---|---|---|
| ふだんの会話 | アプリやサイトから「抜ける」こと全般 | 「インスタからログアウトした」「一回ログアウトしてみて」 |
| Webサイト・アプリ | そのサービスのログイン状態を終える | メニューの「ログアウト」ボタン。次に開くとログイン画面 |
| パソコンのOS | 自分のユーザーとしての作業を終え、開いているアプリを閉じる | Windows の「サインアウト」、Mac の「ログアウト」 |
| Linux のシェル | ログインシェルを終える | logout コマンド(ログインシェルでだけ動く) |
| Webの作り手 | セッションやトークンをサーバー側で無効にし、手元の保存分も消す処理 | POST /logout・Set-Cookie で削除・Clear-Site-Data |
| シングルサインオン(SSO) | どの範囲のログインを終えるか(1つのアプリか、つながった全部か) | アプリだけのログアウト/全体のログアウト(SLO) |
どの場面でも共通しているのは、「本人だと分かっている状態」を終わらせるだけで、アカウントやデータそのものは消さない点です。消すのは退会(アカウント削除)で、別の操作です。
Linux の logout コマンドを実際に動かす
プログラミングの学習で端末を使うと、logout と打って次のエラーに出会うことがあります。ログインシェルでないシェルでは logout は使えず、exit を使うよう案内されます。
$ bash -c 'logout'
bash: line 1: logout: not login shell: use `exit'
$ echo $?
1
$ bash -lc 'logout; echo after' # -l でログインシェルとして起動
$ echo $?
0 # logout で終わり、after は表示されない
$ help logout
logout: logout [n]
Exit a login shell.
SSH でサーバーに入ったときのシェルはログインシェルなので logout で抜けられます。ターミナルのアプリで開いたシェルは、設定によってはログインシェルではないため、exit か Ctrl+D で閉じるのが確実です。
ログアウトとサインアウト・ログオフの違い
この節では、ログアウト・サインアウト・ログオフが同じものかどうかと、どのサービスがどの言葉を使っているかが分かります。
3つはほぼ同じ意味です。違いは「サービスや OS がどちらの言葉を選んだか」だけで、操作の中身に決まった差はありません。 ログインの反対がログアウト、サインインの反対がサインアウトです。ログオフは、Windows の以前の版などで使われていた言い方です。
公式ヘルプで確かめた、画面に出る言葉は次のとおりです(2026年10月29日時点)。
| サービス・OS | 入るとき | 出るとき | 確かめた公式ヘルプ |
|---|---|---|---|
| Google(Gmail など) | ログイン | ログアウト | Gmail ヘルプ |
| Microsoft アカウント | サインイン | サインアウト | Microsoft サポート |
| Windows 11 | サインイン | サインアウト | Microsoft サポート |
| Mac(macOS) | ログイン | ログアウト | Apple サポート |
| X(iOS アプリ) | ログイン | ログアウト | X ヘルプセンター |
| Claude | サインイン | ログアウト(全セッション) | Anthropic ヘルプセンター |
呼び方の違いで迷ったとき
見分ける問い:「アカウントの削除・退会という言葉が出ているか」
Claude の画面のように両方が出るとき
見分ける問い:「押したあとにログイン画面へ戻るか」
なお、英語の文章では、動詞は log out(2語)、名詞や形容詞は logout(1語)と書き分けるのが一般的です。プログラムの URL やボタンの ID では /logout・signout のように1語で書かれます。
ログアウトするとどうなる(消えるもの・残るものを実測)
この節では、ログアウトしたときに何が消えて何が残るかを、ブラウザの中身を実際に見た結果で分かります。
ログアウトで消えるのは「ログイン中だと示す情報(セッション・Cookie)」です。アカウント、投稿、メール、購入履歴、クラウドに保存したファイルは消えません。 もう一度ログインすれば、元どおりに見られます。
手元の Chromium で、自作サイトにログインしてからログアウトし、ブラウザに残っているものを数えました。サイトはログイン後のページで、localStorage に「書きかけのメモ(draft)」と「名前の控え(profile)」を、sessionStorage に「tab」を保存します。
[login full] cookies=sid(session),remember(persist) | localStorage=draft,profile | sessionStorage=tab | /api/me=200 {"user":"alice"}
[after full] cookies=- | localStorage=draft,logout-at,profile | sessionStorage=tab | /api/me=401 {"error":"no-session"}
[login ?csd=1] cookies=sid(session),remember(persist) | localStorage=draft,profile | sessionStorage=tab | /api/me=200 {"user":"alice"}
[after ?csd=1] cookies=- | localStorage=- | sessionStorage=- | /api/me=401 {"error":"no-session"}
| ブラウザの中身 | ログイン中 | 通常のログアウト後 | Clear-Site-Data 付きのログアウト後 |
|---|---|---|---|
| セッションの Cookie(sid) | あり | 消えた | 消えた |
| ログイン保持の Cookie(remember) | あり(30日) | 消えた | 消えた |
| localStorage(draft・profile) | あり | 残った | 消えた |
| sessionStorage(tab) | あり | 残った | 消えた |
| ログインが要る API(/api/me) | 200(本人の情報) | 401 | 401 |
分かったことは2つです。1つ目は、ログアウトしても、サイトが Cookie 以外の場所(localStorage など)に置いたデータは、サイトが消さない限り残ることです。共有のパソコンでは、ログアウトしたあとも前の人の下書きや名前の控えが残っている可能性があります。2つ目は、サイトが Clear-Site-Data ヘッダーを返すと、ブラウザがそのサイトの Cookie・保存領域をまとめて消すことです。どちらになるかはサイトの作り次第で、見ている側からは区別できません。
localStorage・sessionStorage・Cookie の違いそのものは、関連記事「localStorage・sessionStorage・Cookieの違い|実測比較」で扱っています。
サービス別に「ログアウトで変わること」
| 種類 | ログアウトで変わること | 変わらないこと |
|---|---|---|
| メール | 受信箱が開けなくなる。通知が止まる場合がある | メールはサーバーに残る。届いたメールも受け取られる |
| SNS | 投稿・閲覧ができなくなる。アプリの通知が止まる | 投稿・フォロー・フォロワーは残る。相手からはいつもどおり見える |
| ネットショップ | 購入・カートの操作ができなくなる | 注文・購入履歴・ポイントはアカウントに残る |
| クラウドストレージ | ファイルが開けなくなる。同期が止まる | クラウド上のファイルは残る |
| ゲーム | その端末で遊べなくなる | アカウントに連携したデータは残る。端末だけに保存したデータは要注意 |
ゲームや一部のアプリは、アカウントに連携せず端末の中だけに進み具合を保存していることがあります。その場合、ログアウトや再インストールで続きが見られなくなるおそれがあるため、事前に「引き継ぎ」「連携」の設定を確かめます。
ログアウトと退会・アンインストール・ロック・ユーザー切り替えの違い
この節では、ログアウトとよく混同される操作との違いと、どれを選べばよいかが分かります。
ログアウトは「一時的に出る」、退会は「アカウントをなくす」、アンインストールは「アプリを端末から消す」、ロックは「画面だけ隠す」です。
| 操作 | アカウント | データ | 開いている作業 | 元に戻すには |
|---|---|---|---|---|
| ログアウト(サインアウト) | 残る | 残る | アプリ・サイトの画面は閉じる | ログインし直す |
| 退会・アカウント削除 | なくなる | 消える(猶予期間がある場合も) | 閉じる | 多くは戻せない |
| アプリのアンインストール | 残る | 端末内のデータは消える | 閉じる | 入れ直してログイン |
| 画面のロック | 残る | 残る | 開いたまま | パスワード・PIN・生体認証 |
| ユーザーの切り替え | 残る | 残る | 開いたまま(裏で動く) | 元のユーザーを選ぶ |
Windows では、Microsoft サポートに「サインアウトすると、開いているアプリケーションはすべて閉じられ、保存されていない作業が失われる場合があります」とあり、ロック(Windows キー+L)は作業を開いたまま画面だけを保護する、と説明されています。Mac では、Apple サポートの一覧で、ログアウトが shift+command+Q(確認あり)、画面のロックが control+command+Q と案内されています。
ログアウトを選ぶ場面
共有・他人のパソコンを使い終わった
別のアカウントで入り直したい
表示がおかしく、ログインし直して直したい
ログアウトでは足りない場面
もう使わない → 退会(データの書き出しを先に)
端末をなくした → 全端末からログアウト+パスワード変更
少し席を外す → ロックのほうが早い
ブラウザを閉じただけではログアウトにならない場合
この節では、ブラウザやタブを閉じたときにログイン状態が残るかどうかを、実測の結果で分かります。
ブラウザを閉じてもログアウトにならないことがあります。手元では、「ログインしたままにする」を選んだときの Cookie が残り、ブラウザを開き直すと自動でログイン状態に戻りました。
Chromium をユーザーデータを保存する形で起動し、ログイン→ブラウザを終了→同じプロファイルで起動し直す、を試しました。
[reopen restore=false remember=false] cookies=- -> url=/ h1="ログインしてください"
[reopen restore=false remember=true] cookies=remember(persist) -> url=/mypage h1="alice さんのマイページ"
| ログイン時の選択 | 開き直したときの Cookie | 開き直したときの画面 |
|---|---|---|
| ログインしたままにしない | なし(期限なしの Cookie は終了で消えた) | ログイン画面 |
| ログインしたままにする | remember(30日の期限つき)が残った | 自動でログインし、マイページ |
期限(Expires・Max-Age)を付けない Cookie は「セッション Cookie」と呼ばれ、ブラウザのセッションが終わると消えます。ただし MDN は、セッションがいつ終わるかはブラウザが決め、再起動時にセッションを復元するブラウザでは、セッション Cookie が無期限に残ることがある、と説明しています。手元の自動操作の Chromium では、起動時の復元の設定を入れても sid は残りませんでしたが、ふだん使いのブラウザで「前回開いていたページを開く」設定にしていると、閉じても残る可能性があります。
OWASP の Session Management Cheat Sheet も「ブラウザを閉じるイベントでは、ログアウトを確実には実施できない」としています。共有のパソコンでは、閉じる前に「ログアウト」を押すのが確実です。Google のヘルプは、公共のパソコンではシークレット ブラウジングを使い、使い終わったらウィンドウをすべて閉じる方法を案内しています。
ログアウト後に戻るボタンで前の画面が見える理由
この節では、ログアウトしたのに「戻る」で前の画面が見える現象が、何を意味するのかが分かります。
戻るボタンで見えたのは、ブラウザが手元に保存していた画面(キャッシュ)です。サーバーには問い合わせていないため、そこから操作しようとするとログイン画面に戻されます。
ログイン後のマイページを開き、ログアウトしてから「戻る」を押しました。マイページの応答に Cache-Control: no-store を付けない場合と付けた場合を比べています。
server GET /mypage on back = 0 nav= back_forward/transfer=0
[back cache-default] h1="alice さんのマイページ"
server GET /mypage on back = 1 nav= back_forward/transfer=425
[back ?nostore=1] h1="ログインしてください"
| マイページの応答 | 戻るでサーバーに届いた数 | 転送量 | 見えた画面 |
|---|---|---|---|
| Cache-Control なし | 0回 | 0バイト(キャッシュから) | ログアウト前のマイページ |
| Cache-Control: no-store | 1回 | 425バイト | ログイン画面(401) |
見ている側としては、ログアウト後に前の画面が見えても、ログアウトが失敗したわけではありません。ただ、画面に個人情報が出ていると、次にそのパソコンを使う人に見えてしまいます。共有のパソコンでは、ログアウトしたあとブラウザのウィンドウを閉じるか、シークレットウィンドウを使います。作る側は、個人の情報を出すページに Cache-Control: no-store を付けると、この表示を防げます(OWASP も、機密の応答には no-store を付けるよう勧めています)。
別のタブ・別の端末はログアウトでどうなるか
この節では、1つのタブや端末でログアウトしたとき、ほかのタブや端末のログイン状態がどうなるかが分かります。
同じブラウザなら、別のタブも同じ Cookie を使っているため、次の操作からログアウト状態になります。別の端末は、そのままログイン状態が続きます。全部を終えるには「全端末からログアウト」の機能を使います。
同じブラウザの別のタブ
タブAとタブBでマイページを開き、タブAでログアウトしました。タブBは読み込み直すまで画面は変わりませんが、読み込み直すと401になりました。手元のサイトは BroadcastChannel で「ログアウトした」ことを別のタブに知らせる作りにしてあり、タブBの見出しはすぐ書き換わりました。
[tabs] tabB h1 without reload="他のタブでログアウトしました" title="storage:logout"
[tabs] tabB after reload status=401 h1="ログインしてください"
この「別タブに知らせる」処理が無いサイトでは、タブBはログアウト前の画面のまま表示され、ボタンを押した瞬間にログイン画面へ移ります。書きかけの入力が消えたように見えるのはこのためです。作る側の最小の例は次のとおりです。
const bc = new BroadcastChannel('auth');
// ログアウトのボタンを押したタブ
document.getElementById('f').addEventListener('submit', () => {
bc.postMessage('logout');
});
// ほかのタブ
bc.onmessage = (e) => {
if (e.data === 'logout') location.href = '/'; // ログイン画面へ
};
別の端末(パソコンとスマホ)
パソコンとスマホ(iPhone の画面サイズの別プロファイル)で同時にログインし、パソコンから「全端末からログアウト」を実行しました。サーバーはユーザーごとの番号を1つ進め、前の番号のセッションをすべて無効にします。
[all] before pc= 200 {"user":"alice"} phone= 200 {"user":"alice"}
[all] after pc= 401 {"error":"no-session"} phone= 401 {"error":"revoked"}
ふつうのログアウトはその端末だけ、全端末からのログアウトはつながっているすべての端末、と覚えておくと迷いません。端末をなくしたとき、パスワードを他人に知られたかもしれないときは、全端末からのログアウトとパスワードの変更を組み合わせます。
主なサービスのログアウト方法(Google・Microsoft・X・Claude・Windows・Mac)
この節では、よく使うサービスとパソコンのログアウト方法が、公式ヘルプに書かれている手順で分かります。
手順は各社の公式ヘルプで確かめた範囲だけを載せます(2026年10月29日時点)。 画面の名前は更新で変わることがあるため、見つからないときは各公式ヘルプを開いて確かめます。
Webサービス・アプリ
Google(パソコンの Gmail)
Gmail を開き、右上のプロフィール画像→「ログアウト」。複数のアカウントを使っている場合は「すべてのアカウントからログアウト」で一度に出られる。スマホの Gmail アプリでは、端末からアカウントを削除する操作になると Gmail ヘルプに書かれている。
Google(ほかの端末から出す)
パソコンの Gmail の右上のプロフィールアイコン→「Google アカウントを管理」(「Google アカウントを編集」と出る場合もある)→「セキュリティとログイン」→「お使いのデバイス」の「すべてのデバイスを管理」→対象のデバイスやセッションを選んで「ログアウト」。同じ端末が複数並ぶことがあり、完全に止めるにはそれぞれログアウトする。
Microsoft アカウント(すべての場所で)
セキュリティ ダッシュボードの「高度なセキュリティ オプション」にサインイン→「すべての場所でサインアウト」の「サインアウト」。ブラウザー・アプリなどから24時間以内にサインアウトされる。Xbox 本体は別にサインアウトが要る。
X(iOS アプリ)
プロフィールアイコン→「設定とプライバシー」→「アカウント」→「ログアウト」。iPhone の「設定」から X のアカウントを削除する方法もあり、どちらも退会にはならない。
Claude(すべてのセッション)
ブラウザで claude.ai を開き、左下のイニシャルのアイコン→設定→アカウント→「ログアウト」。ブラウザ・モバイル・デスクトップアプリ・Claude Code などすべての端末からサインアウトされる。iOS・Android のアプリからはこの操作はできない。
パソコン(OS)からのサインアウト・ログアウト
| OS | 手順 | ショートカット・注意 |
|---|---|---|
| Windows 11 | スタート→ユーザーのアイコン(アカウント)→「サインアウト」 | 開いているアプリは閉じる。ロックは Windows キー+L |
| Mac | shift+command+Q でログアウト(確認のメッセージが出る) | 確認なしは option+shift+command+Q。ロックは control+command+Q |
| Linux(SSH・端末) | logout または exit |
ログインシェルでないと logout はエラーになる |
スマホの OS(iPhone の Apple アカウント、Android の Google アカウント)からのサインアウトは、端末のほかの機能(写真の同期・端末を探す など)にも影響します。アプリ1つから出たいだけなら、OS のアカウントではなく、そのアプリの中のログアウトを使います。
勝手にログアウトされる原因(症状→原因→直し方)
この節では、自分では何もしていないのにログアウトされる原因と、その直し方が分かります。
多いのは「一定時間操作しなかった(時間切れ)」と「Cookie が消えた」の2つです。 手元のサイトで、時間切れとサーバーの再起動を実際に起こしました。
# 操作が無いと5秒で切れる設定(IDLE=5)
$ curl -b jar http://127.0.0.1:18181/api/me # ログイン直後
{"user":"alice"}
$ sleep 3; curl -b jar http://127.0.0.1:18181/api/me
{"user":"alice"} # 操作したので時間が延びる
$ sleep 6; curl -i -b jar http://127.0.0.1:18181/api/me
HTTP/1.1 401 UNAUTHORIZED
{"error":"idle-timeout"}
# セッションをメモリに持つサーバーを再起動
$ curl -b jar http://127.0.0.1:18181/api/me
{"user":"alice"}
(サーバーを停止して起動し直す)
$ curl -i -b jar http://127.0.0.1:18181/api/me
HTTP/1.1 401 UNAUTHORIZED
{"error":"no-session"}
3秒後に操作したところで「最後の操作の時刻」が更新され、そこから6秒(5秒を超える)たったところで切れました。サーバーを再起動したときは、手元の Cookie は同じなのに、サーバーがセッションを覚えていないため401になりました。
| 症状 | 主な原因 | 直し方・確かめ方 |
|---|---|---|
| しばらく放置すると「ログインし直して」と出る | 操作が無い時間の上限(アイドルタイムアウト) | 仕様どおり。こまめに保存する。銀行などは短く設定されている |
| 操作していても数時間で切れる | ログインからの最大時間(絶対タイムアウト) | 仕様どおり。ログインし直す |
| ブラウザを開き直すたびにログアウトしている | 終了時に Cookie を消す設定・拡張機能・セキュリティソフト | ブラウザの Cookie の設定、「終了時に削除」の設定を見直す |
| キャッシュを消したらログアウトした | 「Cookie と他のサイトデータ」も一緒に消した | Cookie を残してキャッシュだけ消す |
| 全部の端末で一斉にログアウトした | パスワード変更・全端末ログアウト・サービス側の更新や障害 | 心当たりが無ければ、ログイン履歴を確かめてパスワードを変える |
| シークレットウィンドウだと毎回ログアウトする | ウィンドウを閉じると Cookie が消える仕様 | 仕様どおり。通常のウィンドウを使う |
| アプリだけ何度もログアウトする | アプリの更新・端末の容量不足・日時のずれ | アプリの更新、端末の日時を自動に、空き容量を作る |
OWASP は、操作が無いときの時間切れの目安を、重要なサービスで2〜5分、危険の少ないサービスで15〜30分としています。銀行や証券のサイトが短く感じるのはこのためです。「セッションが切れる」仕組みそのものは、関連記事「セッションとは|意味・Cookieとの関係・切れる理由を実例で解説」で扱っています。
ログアウトできない・ボタンが見つからないとき
プロフィールのアイコン・メニュー(≡)・設定を探す
多くのサービスは、右上か左下のアイコンの中、または「設定」→「アカウント」の中にある。スマホでは画面が狭く、メニューの奥に入っていることが多い。
アプリを最新にし、再起動する
ボタンを押しても反応しない場合、通信の失敗や画面の不具合のことがある。
ログアウトしたのに戻ってしまうなら、ログイン保持の Cookie を疑う
そのサイトの Cookie を消すと確実に出られる。下の「作る側」の節にある実測のとおり、サイトの作りによっては、ログイン保持の Cookie が残って自動でログインし直すことがある。
ほかの端末から出す
手元に端末が無い場合は、Google の「デバイスを管理」、Microsoft の「すべての場所でサインアウト」など、別の端末から出す機能を使う。
サポートに伝える
使っている端末・OS・アプリの版、ボタンを押したときの表示(エラーの文言)、いつからか、を書いて問い合わせる。
作る側:ログアウトで消すべきもの(サーバー側の無効化)
この節では、Webサービスを作る人が、ログアウトの処理で何を消すべきかが、実測と最小のコードで分かります。
ログアウトでは、まずサーバー側でセッションを無効にし、そのうえで手元の Cookie を消します。Cookie を消すだけでは足りません。 OWASP の Session Management Cheat Sheet は、ログアウトでは少なくともサーバー側でセッションを無効にすること、Cookie を消すだけでは控えのセッションIDは無効にならないことを書いています。
3通りのログアウトを比べた実測
手元のサイトで、ログアウトの作りを3通りに変えて、ログアウト前に控えておいた自分の Cookie の値で /api/me を呼びました。
== Cookie だけ消す(サーバーのセッションは残す)
HTTP/1.1 303 SEE OTHER
Set-Cookie: sid=; Expires=Thu, 01 Jan 1970 00:00:00 GMT; Max-Age=0; Path=/
ブラウザ側: HTTP/1.1 401 UNAUTHORIZED {"error":"no-session"}
控えておいた値: HTTP/1.1 200 OK {"user":"alice"}
== サーバーのセッションだけ消す(Cookie は残る)
ブラウザ側: HTTP/1.1 401 UNAUTHORIZED {"error":"no-session"}
== 両方消す(このサイトの既定)
ブラウザ側: HTTP/1.1 401 UNAUTHORIZED {"error":"no-session"}
控えておいた値: HTTP/1.1 401 UNAUTHORIZED {"error":"no-session"}
| ログアウトの作り | ブラウザの見た目 | 控えの値で呼ぶと | 評価 |
|---|---|---|---|
| Cookie だけ消す | ログアウトした | 200(まだ使える) | 不十分 |
| サーバーのセッションだけ消す | ログアウトした(使えない Cookie が残る) | 401 | 使えるが Cookie も消す |
| 両方消す | ログアウトした | 401 | これを基本にする |
ブラウザで同じ「Cookie だけ消す」作りを試すと、もう1つの問題が出ました。sid だけを消し、ログイン保持の remember を残したため、ログアウト後のトップページで自動ログインが働き、ログアウトしたのにマイページへ戻されました。
[login ?mode=cookie-only] cookies=sid(session),remember(persist) | /api/me=200
[after ?mode=cookie-only url=/mypage] cookies=remember(persist),sid(session) | /api/me=200 {"user":"alice"}
ログイン保持のトークンを使うなら、ログアウトでそのトークンもサーバー側で無効にし、Cookie も消します。
最小のログアウト処理(Flask)
@app.post("/logout") # GET ではなく POST にする
def logout():
sid = request.cookies.get("sid")
SESS.pop(sid, None) # 1. サーバー側のセッションを無効化
resp = make_response(redirect("/", 303))
resp.delete_cookie("sid", path="/") # 2. Cookie を削除(作ったときと同じ Path)
token = request.cookies.get("remember")
if token:
REMEMBER.pop(token, None) # 3. ログイン保持のトークンも無効化
resp.delete_cookie("remember")
resp.headers["Clear-Site-Data"] = '"cache", "cookies", "storage"' # 4. 手元の保存分
return resp
実際に返した応答のヘッダーは次のとおりです。
HTTP/1.1 303 SEE OTHER
Location: /
Set-Cookie: sid=; Expires=Thu, 01 Jan 1970 00:00:00 GMT; Max-Age=0; Path=/
Set-Cookie: remember=; Expires=Thu, 01 Jan 1970 00:00:00 GMT; Max-Age=0; Path=/
Clear-Site-Data: "cache", "cookies", "storage"
ログアウトを GET で作ると、ページ内の画像やリンクの先読みなど、利用者が意図しない読み込みでもログアウトが実行されることがあります。状態を変える操作なので POST にします。ログインの時点でセッションIDを作り直すこと(手元のサイトでは vCg_Bx → y6ovIt のように変わった)も、ログアウトと対になる決まりです。
Clear-Site-Data は、MDN では HTTPS(安全なコンテキスト)でだけ働く機能とされています。手元では http://127.0.0.1 で効きましたが、これは Chromium が 127.0.0.1 を安全なコンテキストとして扱うためで、本番では HTTPS で返します。"cache" はそのサイトのキャッシュをすべて消すため、OWASP は注意して使うよう書いています。
Cookie を消したつもりが残る(Path・Domain の不一致)
Cookie は「同じ名前・同じ Path・同じ Domain」で上書きしないと消えません。作ったときの Path が / なのに、Path=/app で消そうとすると、元の Cookie はそのまま残りました。
== logout wrong-path
HTTP/1.1 303 SEE OTHER
Set-Cookie: sid=; Expires=Thu, 01 Jan 1970 00:00:00 GMT; Max-Age=0; Path=/app
(ログアウト後の Cookie の保存内容)
/ sid=GtDAAXD4ktOZA-7ZCkCJ9g ← Path=/ の sid が残ったまま
サーバー側のセッションは消しているので、この sid ではもう何もできませんが、ブラウザには使えない Cookie が残り続けます。フレームワークの「Cookie を消す」関数には、作ったときと同じ path・domain を渡します。Cookie とセッションの仕組みは関連記事「Cookieとセッションの違いと仕組み|セッションIDの流れを図解」で扱っています。
ログアウトの処理のチェックリスト
- 1サーバー側でセッションを無効にするCookie を消すだけでは、控えの値が使えたままになった
- 2ログイン保持のトークンも無効にする残すと、ログアウト直後に自動でログインし直した
- 3Cookie は作ったときと同じ Path・Domain で消すPath=/app で消すと Path=/ の sid が残った
- 4localStorage に置いた個人の情報も消すClear-Site-Data か、ログアウト時の JavaScript で消す
- 5個人の情報を出すページに Cache-Control: no-store付けないと、戻るでログアウト前の画面が見えた
- 6ログアウトは POST で受ける意図しない読み込みで実行されないようにする
- 7全端末からのログアウトを用意するユーザーごとの番号を進めて前のセッションをまとめて無効にした
- 8ログアウトのボタンをどのページからも押せる場所に置くOWASP は見えやすく押しやすいログアウトを求めている
JWT のように、サーバーがセッションを持たない方式では「サーバー側で無効にする」ことが簡単ではありません。この場合の考え方は関連記事「JWTでログアウトを実装する方法|トークン無効化の考え方」で扱っています。ログイン機能全体で決めるべき仕様(タイムアウト・ロック・パスワードリセット)は、関連記事「ログイン機能の設計項目一覧|パスワードリセットとアカウントロックの仕様」で扱っています。
シングルサインオン(SSO)のログアウト
Google アカウントや会社の ID で複数のサービスに入っている場合、ログインは1回でも、セッションは「各アプリ」「認証サービス」「会社の ID 基盤」と複数できます。Auth0 のドキュメントは、どのセッションを終えるかを決める必要があり、アプリだけを終えても、ID 基盤のセッションが残っていると自動で再ログインされ、ログアウトが効いていないように見えることがある、と説明しています。「ログアウトしたのに、ボタンを押すとすぐ入れてしまう」ときは、この仕組みが原因のことがあります。
よくあるエラー・つまずき(原文つき)
この節では、ログアウトのまわりで出る表示や出力の原文と、その意味・直し方が分かります。
| 表示・出力(原文) | どこで出るか | 意味 | 直し方 |
|---|---|---|---|
logout: not login shell: use `exit' |
Linux の bash | ログインシェルでないので logout は使えない | exit か Ctrl+D |
HTTP/1.1 401 UNAUTHORIZED |
ログアウト後に API を呼んだとき | ログイン状態ではない | ログインし直す。作る側はログイン画面へ移す |
{"error":"idle-timeout"}(手元のサイト) |
放置したあと | 操作が無い時間の上限を超えた | ログインし直す |
{"error":"revoked"}(手元のサイト) |
別の端末で全端末ログアウトしたあと | セッションがまとめて無効にされた | ログインし直す。心当たりが無ければパスワード変更 |
| ログアウトしたのにマイページに戻る | ブラウザ | ログイン保持の Cookie や SSO のセッションが残っている | そのサイトの Cookie を消す。作る側はトークンも無効化 |
| 戻るでログアウト前の画面が見える | ブラウザ | キャッシュからの表示(サーバーには届いていない) | ウィンドウを閉じる。作る側は no-store |
Set-Cookie: sid=; … Path=/app のあとも sid が残る |
作る側 | Path が違うので別の Cookie として扱われた | 作ったときと同じ Path・Domain で消す |
ログアウトすべき場面の判断表
この節では、毎回ログアウトしたほうがよい場面と、ログインしたままでよい場面の判断が分かります。
「その端末を、ほかの人が触る可能性があるか」で決めます。 自分専用で画面ロックをかけている端末なら、毎回のログアウトは手間のわりに得るものが少なく、ログインしたままにするのが一般的です。
- 1ネットカフェ・図書館・学校など公共のパソコン → 必ずログアウトシークレットウィンドウで使い、ログアウト後にウィンドウを閉じる
- 2家族・同僚と共有のパソコンやタブレット → ログアウトOS のユーザーを分けられるなら分ける
- 3端末を手放す・修理に出す・なくした → 全端末からログアウトパスワードの変更も合わせて行う
- 4銀行・証券・会社の管理画面 → 使い終わったらログアウト時間切れも短く設定されている
- 5自分専用でロックをかけたスマホ・パソコン → ログインしたままでよい画面ロックと2段階認証を有効にしておく
ログアウト
この端末のログイン状態を終える。データは残る。
共有の端末を使い終えたとき
全端末からログアウト
つながっているすべての端末を一度に出す。
端末をなくしたとき
ロック
作業を開いたまま画面だけ隠す。
少し席を外すとき
退会
アカウントをなくす。多くは戻せない。
もう使わないとき
よくある質問
Q. ログアウトとは簡単に言うと何ですか? A. ログインしている状態を終わらせる操作です。サービスに「この人だと分かっている状態」を切ってもらいます。アカウントやデータは消えず、ログインし直せば元どおり使えます。
Q. ログアウトとサインアウトの違いは何ですか? A. 意味はほぼ同じです。Google・Mac・X は「ログアウト」、Microsoft・Windows は「サインアウト」と、サービスごとに呼び方が違うだけです。ログオフも同じ意味で使われます。
Q. ログアウトするとデータは消えますか? A. アカウントに保存されたデータ(メール・投稿・購入履歴・クラウドのファイル)は消えません。ただし、ゲームなどで端末の中だけに保存しているデータは、ログアウトや再インストールで見られなくなることがあります。
Q. ログアウトすると相手から分かりますか? A. 投稿やプロフィールはそのまま見えます。オンラインかどうかを表示するサービスでは、その表示が変わることがあります。何が相手に見えるかはサービスごとに違うため、気になるときは各サービスのヘルプで確かめます。
Q. ブラウザやタブを閉じればログアウトしたことになりますか? A. ならない場合があります。手元の実測では、「ログインしたままにする」を選んだときの Cookie はブラウザを閉じても残り、開き直すと自動でログインしました。共有のパソコンでは、閉じる前にログアウトを押します。
Q. ログアウトしたのに、戻るボタンで前の画面が見えます。 A. ブラウザに保存されていた画面が表示されているだけで、サーバーには問い合わせていません。手元では、戻るでサーバーに届いた数は0回でした。共有のパソコンでは、ログアウト後にウィンドウを閉じます。
Q. 勝手にログアウトされるのはなぜですか? A. 一定時間操作しなかった(時間切れ)、Cookie を消した、ブラウザの終了時に Cookie を消す設定、パスワードを変えた、サービス側の更新、などが原因です。心当たりが無いのに全端末でログアウトした場合は、ログイン履歴を確かめ、パスワードを変えます。
Q. 1つのアカウントだけログアウトできますか? A. 多くのサービスでできます。Gmail では、プロフィール画像のメニューから「ログアウト」を選びます。複数のアカウントを使っている場合は「すべてのアカウントからログアウト」もあります。
Q. すべての端末から一度にログアウトするには? A. Google はアカウントの「デバイスを管理」、Microsoft は「すべての場所でサインアウト」(最大24時間)、Claude は設定のアカウントの「ログアウト」で、つながっている端末から一度に出られます。
Q. 作る側は、Cookie を消せばログアウトになりますか? A. それだけでは足りません。手元の実測では、Cookie だけを消すと、控えておいたセッションIDで200が返りました。サーバー側でセッションを無効にし、ログイン保持のトークンも無効にしてから Cookie を消します。
Q. ログオフという言葉は今も使いますか? A. 意味はログアウトと同じです。Windows 11 の画面では「サインアウト」と表示されます。会社の手順書などには、以前の版の呼び方として「ログオフ」が残っていることがあります。
まとめ
- ログアウトとは、ログインしている状態を終わらせる操作。サインアウト・ログオフとほぼ同じ意味で、アカウントやデータは消えない。
- 手元の Chromium では、通常のログアウトで Cookie は消えたが、localStorage・sessionStorage は残った。Clear-Site-Data 付きでは全部消えた。
- ブラウザを閉じてもログアウトにならない場合がある。「ログインしたままにする」の Cookie は残り、開き直すと自動でログインした。戻るで見える画面はキャッシュから。
- 勝手にログアウトされる主な原因は、時間切れと Cookie の削除。端末をなくしたら全端末からログアウトし、パスワードを変える。
- 作る側は、サーバー側の無効化・ログイン保持トークンの無効化・同じ Path での Cookie 削除・no-store・POST をそろえる。
参考・出典
確認日はいずれも 2026年10月29日です。
- Weblio 辞書「logout」:https://www.weblio.jp/content/logout
- OWASP「Session Management Cheat Sheet」:https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html
- MDN「Clear-Site-Data」:https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Clear-Site-Data
- MDN「Using HTTP cookies」:https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Cookies
- Gmail ヘルプ「Gmail からアカウントをログアウトする、または削除する」:https://support.google.com/mail/answer/8154?hl=ja
- Google アカウント ヘルプ「Google アカウントにログインまたはログアウトしたままにする」:https://support.google.com/accounts/answer/54490?hl=ja
- Microsoft サポート「Microsoft アカウントからどこからでもサインアウトする方法」:https://support.microsoft.com/ja-jp/help/58da4a74-a719-43a6-9dd0-74a7e613229f
- Microsoft サポート「Windows でのユーザー アカウントのアクセス」:https://support.microsoft.com/ja-jp/help/4026705
- Apple サポート「Macのキーボードショートカット」:https://support.apple.com/ja-jp/102650
- X ヘルプセンター「iOSでXアプリからログアウトする方法」:https://help.x.com/ja/using-x/revoke-x-access-on-ios-app
- Anthropic ヘルプセンター「すべてのアクティブなセッションからログアウトするにはどうすればよいですか?」:https://support.claude.com/ja/articles/10310342
- Auth0 Docs「ログアウト」(B2C のアーキテクチャシナリオ):https://auth0.com/docs/ja-JP/get-started/architecture-scenarios/business-to-consumer/logout
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「ログアウトとは?サインアウトとの違いと消えるもの・残るものを実測」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。