インターネットではHTTP(S)が最も多く使われているプロトコルになっていますが、IoTでも同様と言うわけではありません。欲しい機能や特性が異なるので、IoTにはIoT用のプロトコルを考えるべきです。

今のところ以下の4つのプロトコルがよく挙がっています。その特長とメリット、デメリットについて紹介します。

MQTT

MQTTの利点としては、

  1. 双方向性である
  2. ヘッダデータが小さい

などがあげられます。データ量が小さいということはそれだけネットワーク帯域を使わずに済みますので消費電力という面においても有利でしょう。また、双方向性という点においてNATを気にしないで良いのも大きな利点です。

ただしヘッダデータが小さいとは言え、メッセージが大きすぎるとメリットは薄れます(メッセージは最大256MBまで設定可能です)。また、これまでのサーバの仕組みとは異なるので別途用意する必要があるという点は欠点かも知れません。

XMPP

XMPPは従来メッセンジャーなどでよく使われてきたプロトコルです。長い歴史があるということで、それだけ問題点も解決されて枯れた技術ということで安心して利用ができます。また、メッセンジャーで使われている通り、双方向性を持った仕組みが実現できます。

メッセンジャーということもあり、基本的に認証を伴った使われ方をするかと思います。また、セキュリティについては別途仕組みが必要です。

CoAP

CoAPはConstrained Application Protocolの略で、現在策定が進んでいるM2M用のプロトコルになります。MQTT同様にパケットヘッダは4byteとごく小さくなっています。TCPではなくUDPを使っている点がポイントで、3way handshakeや誤り訂正がないのが特長です。また、非同期通信をサポートしています。

ただしその結果として多くのデータが送受信できるようになっています。M2Mでの利用を見込んだプロトコルになりますので注目しておきたいものの一つです。

REST API(HTTP)

REST APIはHTTP上で利用されるWeb APIフォーマットの一つですが、見た目が分かりやすいという点においてメリットがあります。また、前述の通りヘッダデータ量の小さいMQTTであってもメッセージデータが大きければ意味がありません。そのためデータ量が多い場合はREST APIでも十分ということになります。

利点としては多くのライブラリがすでに存在するということ、長い間使われていますので十分に枯れつつもHTTP/2のように新しい可能性も出てきていることが挙げられます。欠点としては双方向プロトコルではないので、基本的にクライアントからサーバへの一方通行で考えるべきでしょう。


どれが一番良いという訳ではなく、それぞれに特性があるのでニーズに合わせて選択するのが良いでしょう。なお、ニフティクラウドではMQTTサービスを提供しています。ぜひ体験してみてください。