error418.netにて展示されたHTCPCPの実装[ 1]
デンビー社 (英語版 ) 製のティーポットをネットブック にくっつけた形でのHTCPCP-TEAの実装
Hyper Text Coffee Pot Control Protocol (ハイパー・テキスト・コーヒーポット・コントロール・プロトコル、HTCPCP 、ハイパーテキスト・コーヒーポット制御プロトコル )は、HTTP の拡張でコーヒーポット の制御、監視、診断を行うための通信プロトコル である。1998年 4月1日 に発行されたRFC のRFC 2324 で規定されているが[ 2] 、これはエイプリルフール 恒例のジョークRFC として公開されたものである[ 3] 。
2014年 4月1日 には、紅茶 向けに拡張したHTCPCP-TEA (Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances ) がRFC 7168 として公開された[ 4] が、これもエイプリルフールのジョークRFCである。
概要
RFC 2324 はラリー・マシンター (英語版 ) が執筆したものである。彼はこれを風刺と表現し、「これは真面目な目的を持っている――それはHTTP を不適切に拡張する方法を特定することである。」と書いている[ 5] 。しかし、プロトコルの文言からして、これが完全に真面目な目的ではないことは明らかである。例えば、"there is a strong, dark, rich requirement for a protocol designed espressoly for the brewing of coffee"(コーヒーを淹れるためにエスプレッソリー に[ 注釈 1] 設計したプロトコルには、強く、暗く、豊かな[ 注釈 2] 要求がある)と書かれている。
エイプリルフールに発行されたジョークRFCではあるが、プロトコルそのものは実行可能なものであり、エディタのEmacs には、完全に機能するHTCPCPクライアントの実装 (coffee.el) が存在する[ 6] 。Mozilla のバグレポートには、このプロトコルに対応していないことに対する不満を訴えるものが多数存在する[ 7] 。また、大学生の研究対象として、実際にHTCPCPを実装したコーヒーメーカー を試作するといったことも行われている[ 8] 。
HTCPCPの発表から10年後の2008年4月1日、World Wide Web Consortium (W3C) の “HTTP Vocabulary in RDF ”[ 9] のパロディとして、Web-Controlled Coffee Consortium (WC3) が “HTCPCP Vocabulary in RDF” の初稿を発表した[ 10] 。
HTTPをベースとしたプロトコルであるため、「コーヒーポット側からクライアントに『コーヒーが入った』等の通知を送ることができない」などの問題を抱えており(元々がジョークRFCであるため仕方のないことではあるが)、本プロトコルの代わりにIRC ・Twitter による通知機能を持たせたコーヒーメーカー「萌香」が開発される[ 11] など、本プロトコルの代替となるものも提案されている。
コマンドと応答
HTCPCPはHTTP を拡張したものである。HTCPCPリクエストは、URI スキーム coffee
(または、29の言語における「コーヒー」を意味する単語。日本語の「コーヒー」も含まれている。)で識別され、HTTPメソッドを以下のように拡張している。
BREW
または POST
HTCPCPサーバにコーヒー を淹れさせる。この目的でPOST
を使用することは推奨されていない。新しいHTTPリクエストヘッダフィールド “Accept-Additions” が提案されており、クリーム、全乳、バニラ、ラズベリー、ウィスキー、アクアビットなどのオプションの追加に対応している。
GET
HTCPCPサーバからコーヒーを「取得」する。
PROPFIND
コーヒーに関するメタデータ を返す。
WHEN
“When”[ 注釈 3] と言うと、HTCPCPサーバがコーヒーにミルクを注ぐのを止める(該当する場合)。なお、このコマンドの説明の最後は Enough? Say WHEN.(説明はもうたくさん? なら WHEN と言い給え。) と結ばれている。
以下の2つのエラー応答 が定義されている。
406 Not Acceptable
HTCPCPサーバは何らかの理由でAccept-Addition要求を提供できない。応答では、利用可能なオプション機能の一覧を示す必要がある。RFCには次のように書かれている。「実際には、ほとんどの自動化コーヒーポットは、現在のところ追加を提供することはできない。」
418 I'm a teapot
HTCPCPサーバはティーポット (英語版 ) である[ 12] 。結果として得られるエンティティ本体は「背が低くてがっしりしている」かもしれない(これは『アイム・ア・リトル・ティーポット (英語版 ) 』という子供向けの歌の歌詞の引用である)。この動作のデモンストレーションが存在する[ 13] [ 14] 。
また、一時的にサーバにコーヒーがなくなった場合には、汎用のステータスコード503 が返される。
Save 418 movement
2017年8月5日、IETF HTTPBISワーキンググループの議長であるマーク・ノッティンガム (英語版 ) は、HTCPCPを参照して実装されたステータスコード418 "I'm a teapot" をNode.js プラットフォームから削除するよう求めた[ 15] 。2017年8月6日、ノッティンガムは、プログラミング言語Go から 418 "I'm a teapot" への参照を削除することを要求し[ 16] 、その後Python のRequests ライブラリ[ 17] やASP.NET のHttpAbstractionsライブラリ[ 18] からも削除するよう要求した。
これを受けて、15歳の開発者シェーン・ブランズウィック (Shane Brunswick) はウェブサイト save418.com を作成し[ 19] 、“Save 418 Movement”(418を守れ運動)を立ち上げた。彼は、様々なプロジェクトで 418 "I'm a teapot" が参照されることは、「コンピュータの基礎となるプロセスがまだ人間によって作られていることを思い起こさせる」ことになると主張した。ブランズウィックのサイトは、ソーシャル・プラットフォームReddit で数千のアップボート (upvotes) を集め[ 20] 、彼のサイトで紹介されたTwitterのハッシュタグ "#save418"を多くの人が使用した。世間の反発を受けて、Node.js、Go、PythonのRequestsライブラリ、ASP.NETのHttpAbstractionsライブラリは、自らのプロジェクトにおいて 418 "I'm a teapot" を削除しないことを決定した。
これらのプロジェクトと一般の人々からの満場一致の支持を受けて、ノッティンガムは、418が当面の間、公式のステータスコードに置き換えられないことを保証するために、418を予約済みのHTTPステータスコードとしてマークするプロセスを開始し[ 21] [ 22] 、RFC 9110 で正式に未使用(予約済み)となった。
関連項目
外部リンク
脚注
注釈
^ expressly(正確に)とespresso(エスプレッソ)を掛けたもの
^ strong, dark, richはいずれも、コーヒーの味に関する形容詞である。
^ 英語で他人に飲み物や添え物を注いでもらう場合、注ぐ側が "Say when" と言い、注いでもらう側は十分な量に達したところで "OK" "Enough" 等と返して止めてもらう。日本語ではそれぞれ「止めるときは言って」「そこまで」等に相当する。注いでもらうのを止めるために文字通り "When" と言った例としては、ガーフィールド にてイルマがカフェでジョンのコーヒーカップに "Say when" と言ってコーヒーを注ぎ始め、コーヒーが溢れたところでようやくジョンが "When" と言った回がある。すなわち、このコマンドの仕様はダブルジョークである。
出典
^ "Error 418 - I'm a Teapot" . error418.net (英語). 2020年6月2日閲覧 。
^ “Request for Comments 2324” , Network Working Group , IETF , https://datatracker.ietf.org/doc/html/rfc2324
^ DeNardis, Laura (30 September 2009). Protocol Politics: The Globalization of Internet Governance . MIT Press. pp. 27ff. ISBN 978-0-262-04257-4 . https://books.google.com/books?id=Secqz0XQJIsC&pg=PA27 2012年5月8日閲覧。
^ “Request for Comments 7168” , The Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances (HTCPCP-TEA) , IETF , https://datatracker.ietf.org/doc/html/rfc7168
^ Larry Masinter. “IETF RFCs ”. 2013年3月27日時点のオリジナル よりアーカイブ。2020年6月7日閲覧。
^ “Emacs extension: coffee.el” , Emarsden , Chez, http://emarsden.chez.com/downloads/
^ “Bug 46647 – (coffeehandler) HTCPCP not supported (RFC2324)” , Bugzilla (Mozilla), https://bugzilla.mozilla.org/show_bug.cgi?id=46647
^ “2002年度基礎工学部電子システム学コースPBL ”. 大阪大学 基礎工学部システム科学科 . 2020年6月2日閲覧。
^ Koch, Johannes, ed., HTTP Vocabulary in RDF , et al, W3 , https://www.w3.org/TR/HTTP-in-RDF/ 2009年8月17日閲覧。
^ HTCPCP Vocabulary in RDF – WC3 RFC Draft , Chief Arabica (Web-Controlled Coffee Consortium), (1 April 2008), https://cstrobbe.github.io/WC3/TR/2008/RFC-htcpcp-in-rdf-20080401/ 2017年4月27日閲覧。
^ 井上恭輔 (2009年2月27日). “オンラインコーヒーメーカー「萌香たん」とはじめるドキドキ☆コーヒーブレイク ”. 2020年6月2日閲覧。
^ “HTTP - 418 私はティーポット - HTTP 418 I'm a teapot clientエラー応答コードは、サーバーが永続的にティーポットであるため、コーヒーの淹れ方を拒否したことを示しています - 日本語 ”. runebook.dev . 2021年9月5日閲覧。
^ ReddingtonJoseph『Illustrated implementation of Error 418 』。オリジナル の2015年9月6日時点におけるアーカイブ。https://web.archive.org/web/20150906071854/http://joereddington.com/projects/418-error-code-teapot/ 。2014年10月18日閲覧 。
^ “A Goblin Teasmade teamaker with an implementation of Error 418 ”. 2014年12月6日時点のオリジナル よりアーカイブ。2014年7月26日閲覧。
^ Mark Nottingham . “418 I'm A Teapot #14644 ”. 2020年6月7日閲覧。
^ Mark Nottingham. “net/http: remove support for status code 418 I'm a Teapot ”. 2020年6月7日閲覧。
^ Mark Nottingham. “418 418 I'm a Teapot #4238 ”. 2020年6月7日閲覧。
^ Mark Nottingham. “418 I'm a Teapot #915 ”. 2020年6月7日閲覧。
^ Shane Brunswick. “The Save 418 Movement – We are the teapots ”. 2020年6月7日閲覧。
^ “HTTP Error Code 418 I'm a Teapot is about to be removed from Node. We've gotta do something. [x-post /r/webdev ]”. 2020年6月7日閲覧。
^ Mark Nottingham. “Reserving 418 ”. 2020年6月7日閲覧。
^ “HTTPで「418 I’m a tea pot」を実装してはいけない(2018/10/18追記) ”. Qiita . 2021年9月6日閲覧。 “現在HTTPbis WGではHTTP セマンティクスの再改定作業を行っています。「HTTP Semantics」この draft-03で418への言及が入りました。”
^ 松浦立樹 (2022年2月24日). "ロシア国防省の公式Webサイトで接続障害 エラー名は「私はティーポット」?" . ITmedia NEWS . 2022年2月24日時点のオリジナルよりアーカイブ 。2022年2月24日閲覧 。