🚀 はじめに
この記事でわかること
- HTTPステータスコードとは?(200/301/404/500…数字の意味と全体像)
- なぜ必要?(ブラウザとサーバーが“通じ合う”合図としての役割)
- よく出るコードの読み方(404/500/301/302/429/503 などを“怖くない言葉”で)
- 実用ヒント(ブラウザの開発者ツール/
curlでの確認、リダイレクトとSEOの基礎)
こんな人向け
- 中学生〜大人まで、IT知識がほとんどない人
- 「404 とか 500 って何のエラー?」をやさしく知りたい人
- API学習の最初の一歩として、応答の意味をつかみたい人
初心者でも安心な理由
- 信号・郵便・お店の張り紙のような身近なたとえで解説
- このページだけで完結(最後に公式ドキュメントや学びの道しるべも)
- PaperMod向けに読みやすい構成(目次・図版の想定つき)
✅ 概要解説
HTTPステータスコードとは何か
Webの“合図” です。
ブラウザ(見る側)とサーバー(届ける側)が「どうなったか」を数字で伝えます。

- 1xx(情報):まだ作業中/進行中のお知らせ
- 2xx(成功):うまくいきました(例:200 OK)
- 3xx(リダイレクト):住所が変わりました。こっちへどうぞ(例:301/302/307/308)
- 4xx(クライアントエラー):送り方が悪い/欲しいものがない(例:404 Not Found、400 Bad Request)
- 5xx(サーバーエラー):お店側の事情で提供できません(例:500 Internal Server Error、503 Service Unavailable)
たとえ:
- 2xx=OK(注文が通って料理が出た)
- 3xx=転送(別の店舗に案内)
- 4xx=注文ミス(メニューにない/記入漏れ)
- 5xx=厨房トラブル(機器故障・混雑)
何のためにあるのか
- 状況を正確に共有するため:成功/失敗/転送/制限などを機械にも人にも分かる形で伝える
- 自動処理の判断に使うため:アプリやAPIクライアントが次の動き(再試行・別URLへ移動・入力の見直し) を決めやすい
- 検索エンジンやキャッシュの制御:301/308 は恒久移転として扱われ、SEO・キャッシュに影響
ステータスコードがないとどうなる?
- ブラウザは “うまくいったのか、ダメなのか”が分からない
- 検索エンジンやアプリは自動で正しい対応ができない
- ユーザー体験が悪化(エラーなのに成功扱い、あるいはその逆…)
どんな場面で使える?
- Web閲覧のトラブル原因の当たりをつける(404/500/503/504 など)
- API開発・テストで“期待どおりの応答か”をチェック
- サイト移転(リダイレクト)とSEOの基本ルール理解
- レート制限(429)/メンテ表示(503) など、混雑・保守の設計
📊 ひと目でわかる“代表コード”チートシート
| 番号 | 名前 | ざっくり意味 | よくある場面 | ひとことで覚える |
|---|---|---|---|---|
| 200 | OK | 成功 | ページ表示、API成功レスポンス | うまくいった |
| 201 | Created | 作成完了 | APIで新規データを作った | 新規作成完了 |
| 204 | No Content | 中身なし成功 | 削除成功など返すものがない | 成功、でも返すものナシ |
| 301 | Moved Permanently | 永続的な引っ越し | ドメイン統合、恒久的URL変更 | 恒久転送(SEO向け) |
| 302 | Found | 一時的な移動(※) | 一時的に別URLへ | 仮住まい(※後述) |
| 303 | See Other | 別の場所を見て | フォーム送信後などにGETへ誘導 | 結果を別URLで |
| 307 | Temporary Redirect | メソッド保持で一時転送 | POSTのまま転送したい | 一時転送(メソッド保持) |
| 308 | Permanent Redirect | メソッド保持で恒久転送 | 恒久的な移転 | 恒久転送+メソッド保持 |
| 304 | Not Modified | 変更なし | キャッシュが有効 | ダウンロード不要 |
| 400 | Bad Request | リクエスト不正 | パラメータ・形式ミス | 入力がおかしい |
| 401 | Unauthorized | 認証が必要 | ログイン/トークン不足 | 認証してね |
| 403 | Forbidden | 禁止 | 権限不足/アクセス拒否 | 入ってはだめ |
| 404 | Not Found | 見つからない | URLまちがい/削除済み | ないよ |
| 405 | Method Not Allowed | メソッド禁止 | POST禁止のURLでPOST | その方法は× |
| 408 | Request Timeout | 送るのが遅すぎ | 通信途切れ・遅延 | 間に合わない |
| 409 | Conflict | 競合 | 同時更新の衝突 | ぶつかった |
| 410 | Gone | 恒久的に消えた | コンテンツ終了 | もう撤去済み |
| 429 | Too Many Requests | アクセス過多 | 連打・レート制限 | 落ち着いて |
| 500 | Internal Server Error | サーバー内エラー | バグ・例外 | サーバーで事故 |
| 502 | Bad Gateway | 中継サーバーの不調 | CDN/プロキシの背後が× | 中継でNG |
| 503 | Service Unavailable | 一時停止・混雑 | メンテ/過負荷 | いまお休み |
| 504 | Gateway Timeout | 中継先が返事なし | バックエンド遅延 | 待ちきれずタイムアウト |
※302は歴史的経緯でPOST→GETに変わる実装が多く、“一時的転送+メソッド保持”は 307 を使うのが安全。
恒久転送は 301(古典)か 308(メソッド保持)。SEOでは 301/308 が基本。
🧪 かんたん実験:自分の手で確かめよう
ブラウザの開発者ツール
- ページを開く → 右クリック → 検証(またはF12)
- Network(ネットワーク) タブを開く
- ページを再読み込み → 一覧から任意のリクエストを選ぶ
- Status Code を確認(例:200 / 301 / 404 …)
curl でヘッダーだけ見る(-I)
bash
# 200 OK(成功)の例
curl -I https://example.com
# 301/302 リダイレクトの確認(-Lで追いかける)
curl -I -L https://old.example.com
# 404 Not Found の例(存在しないパス)
curl -I https://example.com/not-found
ポイント:
-Iはヘッダーだけ取得、-Lはリダイレクトを追跡。
APIの場合は-X POSTや-Hでヘッダー・メソッドを指定して試せます。
💡 小話・豆知識・逸話
- 404の由来?
「CERNの404室が…」という俗説が有名ですが根拠は薄いとされます。仕様的には “見つからない”を伝える汎用コードです。 - 418 I’m a teapot
エイプリルフールのジョーク規格“HTCPCP(コーヒーポット制御)”の一部として登場。正式なHTTP標準ではありませんが、遊び心で実装しているサービスもあります。 - 308 Permanent Redirect
“メソッド保持の恒久転送” として後から追加。301の“歴史的あいまいさ” を避けたいときに使われます。 - 304 Not Modified
キャッシュが効いているサイン。“中身は同じだから再ダウンロードは不要”という節約の合図です。 - HTTP/1.1/HTTP/2/HTTP/3でも概念は同じ
通信のやり取り(バイナリ・多重化)は変わっても、ステータスコードの意味=“セマンティクス”は共通です。
実運用のコツ:
- 301/308…恒久転送。SEOはこれ。古いURLはなるべく早く新URLに統一。
- 302/307…一時転送。A/Bテストや一時対応で使い、長期は避ける。
- 503 + Retry-After…メンテ中は一時停止を正直に宣言。クローラーにも優しい。
📚 参考リンク
公式・標準(一次情報)
- IETF:HTTP Semantics(RFC 9110) — ステータスコードの定義や意味
- IETF:308 Permanent Redirect(RFC 7538)
- IETF:HTTP/2(RFC 9113)/HTTP/3(RFC 9114)(プロトコルは違ってもステータスの意味は共通)
開発者向け入門(とても読みやすい)
- MDN Web Docs:HTTP response status codes
🛠️ 関連テーマ・次に理解すると良いこと
- HTTPメソッド(GET/POST/PUT/PATCH/DELETE):
「何をしたいか」の宣言。ステータスコードは“結果” の宣言。
【初心者向け】HTTPメソッド(GET/POST/PUT/PATCH/DELETE/HEAD/OPTIONS)をやさしく解説|違い・使い分け・具体例
- HTTPヘッダーとキャッシュ(ETag/Last-Modified/Cache-Control):
304の裏にある仕組みを理解すると、速くて節約な配信ができる。 - REST API入門:
201/204/400/401/403/404/409/422/429/5xx の“使い分け”が品質を左右。 - リダイレクトとSEO:
301/308 の恒久転送、canonical、サイト移転の戦略。 - トラブルシュートの道具:
ブラウザ開発者ツール/curl/Postman を使い分けて“どこで止まってるか”を診る。
🎯 まとめ
- ステータスコードは“Webの合図”。2xx=成功/3xx=転送/4xx=入力や宛先の問題/5xx=お店(サーバー)側の問題。
- リダイレクトは 301/308 を基本(恒久)。一時的なら 302/307。
- 304はキャッシュが効いているサイン、429は落ち着いての合図、503はメンテや過負荷。
- HTTP/2/3 でも意味は共通(セマンティクス)。
- 開発者ツールや
curlで自分の目で確かめる習慣が早道。 - 次はメソッド/ヘッダー/キャッシュを押さえて、API設計やサイト運用へステップアップ。
注意・補足
- 418はジョーク仕様(エイプリルフール由来)で、正式なHTTP標準ではありません。学習の際は MDN/RFC 9110 を優先してください。
- リダイレクト乱用はSEOに悪影響。恒久移転は301/308、短期だけ302/307 を徹底。
- 実サイトでは503 + Retry-After でメンテ表示すると、検索エンジンにもユーザーにも親切です。
