ユビキタスコンピューティング、あるいはモノのインターネットが話題になり始めてから10年がたった。当時は夢だったが、今は現実になり始めている。私たちは今、多くの"インターネットにつながっている"デバイスに囲まれて暮らしている。標準化団体(例えばIETF)はモノのインターネット(IoT)にまつわるさまざまな面について作業を重ねている。Concise Binary Object Representation (CBOR)プロトコル(可能な限り小さなメッセージに多くのデータを詰め込むためのプロトコル)などだ。
Concise Binary Object Representation (CBOR)は、極端に小さなコードサイズ、かなり小さなメッセージサイズ、バージョンネゴシエーションなしの拡張を目的としたデータフォーマットだ。ASN.1やMessagePackというような初期のバイナリ直列化とは設計の目的が違う。
しかし、RESTがこの領域に適用されるのは時間の問題だった。IETFによって許可を与えられたConstrained RESTful Environments (CoRE)ワーキンググループが提供するのは、
[...] 制約のあるIPネットワーク上で動作するリソース志向アプリケーション向けのフレームワークです。制約のあるIPネットワークはパケットサイズが制限されており、パケットロスが高い頻度で発生する可能性があり、普段は電源がオフになってるものの、定期的に短い期間だけ"起動"する数多くのデバイスにつながっている可能性があります。
制限のあるデバイス向けのアプリケーションを開発するためのフレームワークの一部として、ワーキンググループはConstrained Application Protocol (CoAP)も定義している。これらのデバイス向けにリソースを修正するためだ。
ワーキンググループはCoAPとHTTP REST APIのマッピングを定義します。このマッピングは特定のアプリケーションに依存しません。制限のあるネットワークと普通のネットワークとの境界にプロキシがある必要はなく、制限のないネットワークのどこに配置しても問題ありません。
また、ワーキンググループはすでにこのプロトコルがサポートしなければならない項目を定義している。
- デバイス上のリソースを作成、読み取り、更新、削除する能力
- 信頼できないマルチキャストメッセ0時を特定のデバイスグループに送信する能力
- UDP上で運用され、一部(制限されたかたちで)TCPをサポートする
- HTTP RESTベースのAPIとデバイスとの通信の変換の仕様
ワーキンググループは立ち上げられたばかりなので、まだわからないことが多い。例えば、セキュリティだ。しかし、CoAPをJavaでjCoAPを使ってサポートするプロジェクトがすでに動いている。