ステータスコード「418」知ってますか?Googleにも使われている有名規格


アイキャッチ画像

【追記】418ステータスコードはUnusedに変更となりました。

The 418 status code is reserved in the IANA HTTP Status Code Registry. This indicates that the status code cannot be assigned to other applications currently. If future circumstances require its use, it can be re-assigned to another use.


皆さんはHTTPステータスコードの「418」はご存知ですか?

ITに詳しい方なら勿論知ってますよね?と煽ったりはしませんが、今回はそんなITにまつわる知ってて得もしないし損もしない。そんなIT豆知識を紹介します。

ステータスコード「418」の真実

418 I’m a teapot.

通常、ステータスコードは以下のガイドにそってウェブページの返却状態を示します。

200番台…成功(ex. 200 OK)
300番台…リダイレクト(ex. 301 Moved Permanently)
400番台…ユーザー側のエラー(ex. 404 Not Found)
500番台…サーバー側のエラー(ex. 500 Internal Server Error)
そんな中、あまり聞かないステータスコード「418」その正体はI’m a teapot.です。
1つ上の「ステータスコード419」はLaravelでのAPI開発などをした方なら必ず遭遇する、レートリミットに到達したことを示す物なのですが、じゃあ一体418は何者なのか。
端的に言うと「大真面目に策定されたジョーク」です。

ジョークで策定された「HTCPCP/1.0」の規格

ステータスコード418の規格はRFC2324の「HTCPCP/1.0」にて決められています。

HTCPCPとは「Hyper Text Coffee Pot Control Protocol (ハイパーテキストコーヒーポット制御プロトコル)」の略称で、コーヒーを淹れるコーヒーポットを制御するプロトコルです。
1998年に策定されました。

……は?と真面目な方は思うかもしれませんがその通り。これは全てジョークで作成されたプロトコルなのです。

なんで「Teapot」なの?

そして、ステータスメッセージ「I’m a teapot.」の意味。RFC2324には以下の通りに定められています。

セクション2.3.2
Any attempt to brew coffee with a teapot should result in the error code “418 I’m a teapot”.
The resulting entity body MAY be short and stout.

日本語訳は「ティーポットでコーヒーを淹れようとすると、「418 I’m a teapot」というエラーコードが表示されるはずです。その結果、エンティティは短くてがっしりしたものになる可能性があります。

つまり、「コーヒーを淹れるためのコーヒーポットで紅茶は淹れられないよ!」という意味で紅茶を入れようとした(サイトにアクセスしようとした)ユーザーによって発生したエラーだと言うことです。

なので、利用者に問題がある場合に使われる400番代を返すと言うわけです。なるほど…となるか!こんなしょーもない事を真剣に策定するな!(と心做しか思ってしまいました。海外のユーモアは常に驚かされます)

Googleにも418を返す特設サイトがある!

そんなステータスコード418ですが、Googleにも418を返却するページが有るんです。

https://www.google.com/teapot

上記サイトにアクセスすると、「The requested entity body is short and stout. Tip me over and pour me out.」というメッセージとともにGoogle特有の質素なエラー画面が表示されます。

日本語訳すると、「要求されたエンティティ本体は短くて頑丈です。 私をひっくり返して、私を注ぎ出します。」と。
Google翻訳を用いたので文が変になってますが、ここで言う「私」とはイラストのコーヒーポットなのでしょう。

そして、更に謎なのがポットをクリックするとカップにコーヒーらしき物を注いでくれる。意味がわからない…

サンプルコード・デモ

Live Demo

以下に418ステータスコードを返却するPHPスクリプトを掲載しました。ぜひ自分でPHPが動くサーバーを持っているならば置いてみましょう。「俺ジョーク知ってるぜ」感が出せると思います。

<?php
    //ステータスコード418
    http_response_code( 418 ) ;
?>
<h1>I'm a teapot.</h1>

以上参考になれば幸いです。