2026.01.19
<はじめに>
突然ですが皆さま、ステータスコードってご存じですか?
↓こういうやつです。

上記画像は弊社の公式ウェブサイトをスクショしたものなのですが、でっかく表示されている”404″という数字、これがITの世界における「ステータスコード」と呼ばれるものです。
他にも”503″等が馴染みのある数字ではないでしょうか?(ホームページを開こうとしたら動作が遅く、最終的にページが開かず、大きく”503″という数字が表示される、といった経験はありませんか?)
このステータスコード、Webに携わる人たちの間では常識に近いものなのですが、そうでない人にとっては、何なのかわからないという人も多いと思います。
今回は、最近やっと自分の中で理解がまとまってきた、このステータスコードについて解説していきたいと思います。
↓このブログを読んでほしい方
・Webエンジニアへの転職を考えている方
・Webエンジニアへ転職したばかりで経験の浅い方(まさに自分)
・Webマーケターをはじめ、WebやIT業界に関わる方
・ヒマな方
<ステータスコードとは>
Webサイトやホームページを見たいと思った時、皆さんはPCやスマホで関連ワードを検索にかけ、検索結果として出てきたサイト名を押してサイトを開くかと思います。
この時インターネットの電脳空間で何が起きているのか?
Webサイトを表示する時、インターネットの中に以下二人の登場人物が必ずいます。
・ブラウザさん(情報取得マシン)
→例としてchrome、safari等 皆さんのPCやスマホの中に必ずいるものです
・サーバーさん(情報提供マシン)
→Webサイトを運営する人や会社が必ず用意し、稼働させ、管理しているものです
今回ご紹介するステータスコードとは、上記のブラウザさんとサーバーさんの会話、意思疎通、コミュニケーションです。3ケタの数字をサーバーさんからブラウザさんへ送ることで、両者との間に何があったのか、結果的にWebサイトを開くことができるのか、できないとしたら原因は何かを示す合言葉のようなものです。
以下に代表的なステータスコード(合言葉)を列挙します。ステータスコードは全部で50種類以上ありますが、頻繁に見るものから珍しいものまで様々であり、また知らないステータスコードだったとしても調べればすぐわかるので、以下のものを例として、まずはステータスコードとは何かを理解するのがおすすめです。
・200:通信成功
・301:恒久的に別ページへ移動
・302:一時的に別ページへ移動
・400:リクエストがエラー
・401:認証失敗
・403:権限がないためアクセス不可
・404:ページがないためアクセス不可
・500:サーバーエラー
・503:サイトの事情によりアクセス不可(過負荷など)
・429:リクエスト数が多すぎる(過負荷による”503″を防ぐための保護機能)
これだけ並べられてもわかりにくいと思うので、身近な例も含めて一つずつ解説していきます。
<前提となるシチュエーション>
Webサイトを見るためのシナリオは以下の流れです
➀Webサイトを見るため、インターネット上でブラウザさんがサーバーさんへ話しかける
↓
②ブラウザさんがサーバーさんへ、「〇〇のページ見せて」と言う(リクエストする)
↓
③サーバーさんからブラウザさんへ、リクエストにお答えする
ステータスコードは、③の段階にてサーバーさんからブラウザさんへ送られるものです。
ちなみに②の段階で送られるリクエストは、ステータスコードではない別の合言葉を使うのですが、今回は割愛します。
上記の流れをわかりやすくイメージするため、本記事では下記の例に変換します。
➀あなたはチャーハンが食べたくて、中華料理屋さんへ入る
↓
②あなたから店員さんへ、チャーハンを注文する
↓
③店員さんからあなたへ、注文にお答えする
補足として、この中華料理屋さんは以下のようなお店です。
・注文は先払いである
・メニューは時々変わる
・お客さんには会員制度があり、会員でないと注文できないメニューがある
以上の前提を踏まえ、各ステータスコードが何を意味しているのか見ていきましょう。
< 200:通信成功 >
ブラウザさんとサーバーさんのやりとりが無事完了したことを意味します。見たいWebサイトが無事見られるということです。
一般の方がステータスコードを見るときは、インターネット上で何かエラーが発生した時がほとんどであるため、この”200″は見たことがない、という人も多いのではないでしょうか?実際は、通信がうまくいくたびに”200″が送られています。
チャーハンの注文に例えると、以下のようになります。
あなた「チャーハンください。」
店員さん「ヘイお待ち!」
→チャーハンが出てくる
< 301:恒久的に別ページへ移動 >
Webサイトを見るためにサイト名やURLをクリックしたとき、そのページはもう存在しておらず、後に代わりとして作られた別のページが開かれるときに送られるものです。
チャーハンの注文に例えると、以下のようになります。
あなた「チャーハンください。」
店員さん「ウチはもうチャーハンは出してないのよ。代わりにエビチャーハン始めたから。ヘイお待ち!」
→エビチャーハンがでてくる
< 302:一時的に別ページへ移動 >
本来開かれるはずのページが一時的に開けない事情がある(メンテナンス中等)場合、一定期間だけユーザーに別のページを見せる時に送られるものです。
チャーハンの注文に例えると、以下のようになります。
あなた「チャーハンください。」
店員さん「今卵を切らしててね。用意できるようになるまでは代わりにラーメンお出しすることになってるから。ヘイお待ち!」
→ラーメンが出てくる
301と302は、お店に例えるとワガママな感じがしますが、Webの世界ではよくあることです。
<400:リクエストがエラー >
ブラウザさんのリクエストの仕方に不備があり、サーバーさんがリクエストにお答えできない時に送られるものです。
先払いであるチャーハンの注文に例えると、以下のようになります。
あなた「チャーハンください。」
店員さん「お客さん、お金足りないよ。それじゃチャーハンはお出しできないよ。」
< 401:認証失敗 >
ログインすることが必要なサイトへ、ログインしていないのにページを開こうとする等、何かしらの必要な認証が行われていないことを伝えるために送られます。
サイトを開くだけでなく、ブログやSNSのコメント等の投稿や削除といった、ログインが必要な処理全般をイメージするといいでしょう。
チャーハンの注文に例えると、以下のようになります。
あなた「チャーハンください。」
店員さん「お客さん、そのメニューを注文したかったら、ウチの店の会員になってもらわなきゃ。」
チャーハンに会員登録が必要だなんて世も末ですね…
< 403:権限がないためアクセス不可 >
Webサイト内で特別な権限をユーザーに与えうる中で、権限を持っていないユーザーが権限の必要な処理を行おうとすると送られます。
チャーハンの注文に例えると、以下のようになります。
あなた「チャーハンください。」
店員さん「お客さん、 そのメニューを注文したかったら、 予約券が必要だよ。お客さんは持ってないからお出しできないよ。」
チャーハンに予約が必要だなんて世も末ですね…
400、401、403は違いが分かりづらいかもしれませんが、このあたりはWebサイトの中身や状況によって使い分けられています。
< 404:ページがないためアクセス不可 >
元々存在しない、または元々存在したページを運営側が削除した等、無いページを開こうとすると送られるものです。
チャーハンの注文に例えると、以下のようになります。
あなた「チャーハンください。」
店員さん「お客さん、 ウチはチャーハンなんて出してないよ。ちゃんとメニュー読んでね。」
怒られました…
< 500:サーバーエラー >
Webサイト内のバグ等により、見られるべきページが見られない時に送られるものです。
チャーハンの注文に例えると、以下のようになります。
あなた「チャーハンください。」
店員さん 「お客さんごめん!今ちょっと中華鍋が壊れててチャーハン作れないんだよ!」
中華鍋壊れてたら、そもそもお店開店できませんよね。Webサイトも同じです。バグが見つかったらWebエンジニア(サーバーサイドエンジニア)はバグの解消をしなければなりません。
< 503:サイトの事情によりアクセス不可(過負荷など) >
Webサイトにバグはありませんが、サーバーさんの都合でページが見られない時に送られるものです。
過負荷とは、大量のユーザーが同時に同じWebサイトを見ようとした際に、「サイトを見せて」というリクエストの数が多すぎることで、サーバーが処理しきれず止まってしまう等の状況です。
チャーハンの注文に例えると、以下のようになります。
あなた「チャーハンください。」
他のお客さん×100人「 チャーハンください。 チャーハンください。チャーハンください。チャーハン チャーハン チャーハン チャーハン チャーハン チャーハン チャーハン チャーハン チャーハン チャーハン ch… 」
注文が多すぎてチャーハンを作るのが追い付かず、店員さんが厨房で倒れてしまう状況です。
また、過負荷以外の理由でもサーバーさんの都合でサイトが見られない時(サイト全体のメンテナンス等)にも、この”503″が使われます。
< 429: リクエスト数が多すぎる(過負荷による”503″を防ぐための保護機能)>
過負荷によって”503″が送られる(店員さんが倒れる)ことを防ぐため、ある一定以上のリクエストは受け付けませんよと、サーバーさんがブラウザさんに伝える時に送られるものです。
あなた「チャーハンください。」
店員さん「お客さんごめん!今混んでるからまた今度食べに来てくれる?」
<ステータスコードの確認方法>
ここまで代表的なステータスコードをご紹介してきましたが、そんなステータスコードの確認方法をご案内します。

冒頭でもお見せした弊社のホームページを例にします。
➀まず、Webページ上のどこでもいいのでマウスの右クリックを押してください。すると上記画像にもあるような小さなメニューが表示されます。その中の、赤丸で囲われた「検証」をクリックしてください。
「検証」の箇所は、人によっては「開発者ツール」や「デベロッパーツール」と表示されているかもしれませんが、同じものです。
これをクリックすると、

このような、よくわからないものが表示されます。
②次に赤で囲われた「Network」という所をクリックしてください。すると…

またしても、よくわからないものが表示されます。
この赤枠の中には、ブラウザさんとサーバーさんとの間で行われる通信内容が随時表示されていきます。
そして青枠の中が、各通信で使われたステータスコードです。
③そのページ内にて、何か別ページを開くリンクをクリックしてみてください。すると、赤枠の中が増えていき、それぞれにステータスコードが割り振られているかと思います。
エンジニアの開発現場でも、このような流れで様々な通信のステータスコードを確認しつつ、新機能の実装やバグ修正といった作業を行っています。
<まとめ>
現代ではインターネットの存在が当たり前になっていますが、インターネット上で何が起きているのかを把握している人はかなり少ないのではないでしょうか?(私もまだまだ勉強中です)
確かにコンピュータ、ネットワーク、IT(最近はAIも出てきてます)は難しいことが多く、便利だけど中で何が起きているのかを考えずに利用してしまいます。
しかし、そこで思考放棄せず、理屈一つ一つを考え続けることで、便利なIT技術をより効率的に、より安全に役立てることができるはずです。
このブログが、その一助となれば幸いです。