MQTT 【Message Queuing Telemetry Transport】
概要
MQTT(Message Queuing Telemetry Transport)とは、多数の通信主体の間で短いメッセージを頻繁に送受信する用途に向いた軽量なプロトコル(通信規約)。センサーの遠隔監視など、M2M/センサネットワークやIoT(Internet of Things)分野で利用に適している。インターネットなどのIPネットワーク上で利用できる通信プロトコルの一つで、ヘッダ部分が最小で2バイトと小さく、HTTPなどで同様の通信を行う場合よりもデータ量やCPU負荷、消費電力などを一桁も二桁も抑えることができる。
機器や通信経路が不安定な場合を想定した設計になっており、ハートビートによる死活監視で相手の反応が途絶したことを検知したり、再接続した際に切断中に送信されたメッセージを再送する機能などがある。また、メッセージごとに、確実に相手に届くようにするか、(性能を重視して)送りっぱなしにするかを選択することができる。
メッセージに「トピック」と呼ばれる属性情報を追加することができ、何についてのデータかを記述することができる。トピックはファイルシステムのパスのような階層構造で記述し、受信側ではどのトピックのメッセージを受診するか選択し、自分に無関係なメッセージを無視することができる。
MQTTでは通信主体が「クライアント」と「メッセージブローカー」に分かれ、ブローカーを介してパブリッシュ・サブスクライブ方式(PubSub)でメッセージを交換する。各クライアントはブローカーに特定のトピックのメッセージを発行(publish)し、一方でブローカーから特定のトピックを購読(subscribe)する。
ここで言うクライアントにはセンサー装置のようなものから、制御・管理システム、データを集めて蓄積・処理するシステムなどが含まれ、クライアントサーバ方式におけるクライアントの概念とは必ずしも一致しない。
MQTTはもともと1990年代に米IBM社と伊ユーロテック(Eurotech)社が開発し、当初はIBM社製品の内部仕様として用いられてきた技術だが、2011年に無償で公開され、標準化団体のOASISによって規格化された。現在は誰でも自由に対応製品を開発できる。