やじうまの杜

「418 I'm a teapot」が永久欠番(?)に ~25年前の発行されたジョークRFCの後始末

 「やじうまの杜」では、ニュース・レビューにこだわらない幅広い話題をお伝えします。

ネットワーク化されたコーヒーポット

 インターネット技術の標準仕様は「RFC」(Request for Comments)というドキュメントで管理されています。たとえば、みなさんもご存じのHTTP/1.1プロトコルは「RFC2616」、FTPプロトコルは「RFC959」という文書にまとめられています。

 そう聞くと「RFC文書って難しくて、堅苦しいんだろうな」と思うかもしれませんが、かならずしもそうではありません。なかにはエイプリルフール(4月1日)に発行される「ジョークRFC」というのもあります。たとえば、「RFC1149」では伝書鳩でインターネットデータ通信を行うための規格が定められています。

 こうしたジョークRFCの1つである「RFC2324」(1998年4月1日発行)に最近、大きな動きがあったようです。

 「RFC2324」は「HTCPCP/1.0」プロトコルについて記述したドキュメント。HTCPCP(ハイパーテキストコーヒーポット制御プロトコル)はHTTPを拡張したプロトコルで、ネットワーク化されたコーヒーポットを制御するための標準仕様が定められています。

 ただし、このバージョンでは紅茶を淹れられず、淹れようとすると「418 I'm a teapot」というエラーコードが返されます。これは

  • 403 Forbidden:認証されていないなどの理由でアクセスできない
  • 404 Not Found:リクエストしたリソースが見つからなかった(URLが間違っている)
  • 500 Internal Server Error:サーバーでエラーが発生した

といったHTTPステータスコードをもじったもの(たまに目にしますよね、こういうエラー画面)。最近「Google Chrome 103」ベータ版で実装された「103 Early Hints」も、こうしたステータスコードの一種です。

 「418 I'm a teapot」というジョークはエンジニアに広く好まれており、Googleにもこれを返すページがあります。また、さまざまなプロダクトに――おちゃらけ半分、マジメ半分で――広く実装されています。

「418 I'm a teapot」を返すGoogleのWebページ

 しかし、「418 I'm a teapot」はあくまでも「HTTP」を拡張した「HTCPCP/1.0」のエラーコードであり、「HTTP」そのもののステータスコードではありません。HTTPステータスコードにはちゃんと意味があり、HTTP関連のプロダクトはその仕様に則った実装が行われるべきです。

  • 100-199:情報レスポンス
  • 200-299:成功レスポンス
  • 300-399:リダイレクトメッセージ
  • 400-499:クライアントエラーレスポンス
  • 500-599:サーバーエラーレスポンス

 もし仮に将来「418」というステータスコードを使いたくなったとき、それがジョーク実装とバッティングしてしまったら? そう思うまじめな人がいても不思議ではないでしょう。

 事実、かつて「Node.js」や「ASP.net」といったプロダクトから「418 I'm a teapot」対応を削除しようとする動きがありました。また、それに対抗し当時高校生の少年が「418 I'm a teapot」の保護を訴えて活動するなど、血みどろの(?)争いが繰り広げられてきたのです。

 しかし、この問題もとうとう決着。「HTTPではステータスコード418を使わない」ということに落ち着きました。遠い将来、400番台のステータスコードがことごとく使い果たされ、どうしても418番を使わなければならない事態にでもならない限り、418番は永遠にティーポットのために予約されることになります。

 めでたし、めでたし。