[12] [DFN[[[HTCPCP]]]] ([DFN[[[Hyper Text Coffee Pot Control Protocol]]]])
は、[[インターネット]]を通じて[[珈琲ポット]]を制御するための[[プロトコル]]です。
[TIME[1998-04-01]]に
[DFN[[[RFC 2324]]]] として出版された[[4月1日のRFC]]です。

* 仕様書

[REFS[
- [3] [CITE@en[RFC 2324 - Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)]] ([TIME[2014-10-06 15:21:16 +09:00]] 版) <http://tools.ietf.org/html/rfc2324>
- [4] [CITE[RFC Errata Report]] ([TIME[2014-11-14 21:07:55 +09:00]] 版) <http://www.rfc-editor.org/errata_search.php?rfc=2324>
- [2] [CITE@en[RFC 7168 - The Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances (HTCPCP-TEA)]]
( ([TIME[2014-04-02 07:55:01 +09:00]] 版))
<http://tools.ietf.org/html/rfc7168>
]REFS]

* プロトコル

[5] [[HTCPCP]] は [[HTTP]] をもとに、[[要求メソッド]]などを追加した[[プロトコル]]となっています。

;; [6] 独立した[[プロトコル]]ではなく、 [[HTTP]] およびその追加機能の集合体のようです。

[18] [[HTCPCP-TEA]] は [[HTCPCP]] を更に拡張するものとなっています。

** 要求メソッド

[7] [[HTCPCP]] は次の[[要求メソッド]]を使います。
[FIG(short list)[
- [CODE(HTTP)@en[[[BREW]]]]
- [CODE(HTTP)@en[[[POST]]]]
- [CODE(HTTP)@en[[[GET]]]]
- [CODE(HTTP)@en[[[PROPFIND]]]]
- [CODE(HTTP)@en[[[WHEN]]]]
]FIG]

** 要求行

[15] [[HTCPCP]] は [[HTTP]] を使っているものの独自の [[URL scheme]]
を使っており、またその [[URL scheme]] の種別が[[珈琲]]の種別に影響する可能性がありますから
([CODE(URI)@en[[[coffee:]]]] 参照。)、[[要求URL]]には ([[HTTP]] のように[[絶対パス]]を指定するのではなく)
[[絶対URL]] を指定するものと推測されますが、明記はされていません。

[16] [[プロトコルの版]]についても何の言及もありません。 [CODE(HTTP)[[[HTTP/1.1]]]]
のままで良いのでしょうか。[[プロトコル]]として非互換性はないので、
[CODE(HTTP)[[[HTTP/1.1]]]] でも問題無さそうではあります。

;; [19] [[パス]]と [[query]] については、 [CODE(URI)@en[[[coffee:]]]] 参照。

** 状態符号

[10] [[HTCPCP]] は次の[[状態符号]]を使います。
[FIG(short list)[
- [CODE(HTTP)[[[300]]]]
- [CODE(HTTP)[[[403]]]]
- [CODE(HTTP)[[[406]]]]
- [CODE(HTTP)[[[418]]]]
- [CODE(HTTP)[[[503]]]]
]FIG]

** ヘッダー

[9] [[HTCPCP]] は次の[[ヘッダー]]を使います。
[FIG(short list)[
- [CODE(HTTP)@en[[[Accept-Additions:]]]]
- [CODE(HTTP)@en[[[Alternates:]]]]
- [CODE(HTTP)@en[[[Safe:]]]]
]FIG]

** MIME 型

[8] [[HTCPCP]] は次の [[MIME型]]を [[payload body]] に使います。
[FIG(short list)[
- [CODE(MIME)@en[[[message/coffeepot]]]]
- [CODE(MIME)@en[[[message/teapot]]]]
- [CODE(MIME)@en[[[application/coffee-pot-command]]]]
]FIG]

** URL scheme

[11] [[HTCPCP]] は次の [[URL scheme]] を使います。
[FIG(short list)[
- [CODE(URI)@en[[[koffie:]]]]
- [CODE(URI)@en[[[q%C3%A6hv%C3%A6:]]]]
- [CODE(URI)@en[[[%D9%82%D9%87%D9%88%D8%A9:]]]]
- [CODE(URI)@en[[[akeita:]]]]
- [CODE(URI)@en[[[koffee:]]]]
- [CODE(URI)@en[[[kahva:]]]]
- [CODE(URI)@en[[[kafe:]]]]
- [CODE(URI)@en[[[caf%C3%E8:]]]]
- [CODE(URI)@en[[[caf%C3%E9:]]]]
- [CODE(URI)@en[[[%E5%92%96%E5%95%A1:]]]]
- [CODE(URI)@en[[[kava:]]]]
- [CODE(URI)@en[[[k%C3%A1va:]]]]
- [CODE(URI)@en[[[kaffe:]]]]
- [CODE(URI)@en[[[coffee:]]]]
- [CODE(URI)@en[[[kafo:]]]]
- [CODE(URI)@en[[[kohv:]]]]
- [CODE(URI)@en[[[kahvi:]]]]
- [CODE(URI)@en[[[%4Baffee:]]]]
- [CODE(URI)@en[[[%CE%BA%CE%B1%CF%86%CE%AD:]]]]
- [CODE(URI)@en[[[%E0%A4%95%E0%A5%8C%E0%A4%AB%E0%A5%80:]]]]
- [CODE(URI)@en[[[%E3%82%B3%E3%83%BC%E3%83%92%E3%83%BC:]]]]
- [CODE(URI)@en[[[%EC%BB%A4%ED%94%BC:]]]]
- [CODE(URI)@en[[[%D0%BA%D0%BE%D1%84%D0%B5:]]]]
- [CODE(URI)@en[[[%E0%B8%81%E0%B8%B2%E0%B9%81%E0%B8%9F:]]]]
]FIG]

* 鯖の要件

;; [13] [[鯖]]が[[生成]]する[[プロトコル要素]]の要件は、それぞれの項を参照。

[14] [[珈琲ポット]]は [[NTP]] を使う[['''べきです''']] [SRC[>>3]]。

* 実装

[REFS[
- [1] [CITE[Bug 46647 - HTCPCP not supported (RFC2324)]] <https://bugzilla.mozilla.org/show_bug.cgi?id=46647>
]REFS]

[20] 
[CITE@en[46647 - (coffeehandler) Joke: HTCPCP not supported (RFC2324)]], [TIME[2024-09-12T12:32:16.000Z]] <https://bugzilla.mozilla.org/show_bug.cgi?id=46647>


* メモ

[17] [[HTCPCP]] の独自の[[プロトコル要素]]について、
[[HTTPヘッダー]]の [[IANA登録簿]]には [CODE(HTTP)@en[[[Accept-Additions:]]]]
が登録されていますが、それ以外の[[要求メソッド]]、[[状態符号]]、
[[MIME型]]、[[URL scheme]] の [[IANA登録簿]]には登録されていないようです。
[TIME[2014-11-14T15:46:35.200Z]]

[504] [CITE[Error 418 - I'm a teapot: Fun with logs - Geeks]]
( ([TIME[2014-11-15 05:01:06 +09:00]] 版))
<http://www.error418.org/2014/01/fun-with-logs-geeks.html>

[505] [CITE@en[madmaze/HTCPCP]]
( ([TIME[2014-11-15 17:20:35 +09:00]] 版))
<https://github.com/madmaze/HTCPCP>

[506] [CITE@en[stephen/node-htcpcp]]
( ([TIME[2014-11-15 17:20:46 +09:00]] 版))
<https://github.com/stephen/node-htcpcp>

[507] [CITE[EmacsWiki: Coffee Mode]]
( ([TIME[2014-11-15 17:26:37 +09:00]] 版))
<http://www.emacswiki.org/CoffeeMode>

[508] [CITE@ja[オンラインコーヒーメーカー「萌香たん」とはじめるドキドキ☆コーヒーブレイク - mixi Engineers' Blog]]
( ([TIME[2014-11-15 17:28:17 +09:00]] 版))
<http://alpha.mixi.co.jp/entry/2009/10723/>