通信イメージ

MQTTとは

MQTT(Message Queue Telemetry Transport)は、1999年にIBM社とEurotech社のメンバーにより考案されたプロトコルです。2014年にはOASISによって正式な標準規格とされました。

主な特長は、HTTPと比べ軽量なプロトコルであり、消費電力が少なく、非同期な双方向通信を可能にしていることです。

MQTTのヘッダサイズは最小2バイトと小さいため、バッテリーの消費を抑えたい製品や、帯域幅が限られているネットワーク環境に利用されています。

非同期に双方向やグループでの通信ができるため、パフォーマンスやスケーラビリティーにも優れています。

ネットワークに接続されたモノ同士で通信するM2M(Machine-to-Machine)や、モノがインターネットと繋がって通信するIoT(Internet of Things)に適しています。

出典:MQTT.org「MQTT」

MQTTの通信構成

通信イメージ

publish/subscribe型モデル

MQTTはpublish/subscribe型のメッセージングモデルを採用しています。

publish/subscribモデルでは、メッセージの送信側をpublisher(パブリッシャー)、メッセージの受信側をsubscriber(サブスクライバー)と呼び、brokerと呼ばれるMQTTサーバーが間に入ってメッセージを扱います。publisherとsubscriberは直接繋がらないのが特長です。

この通信では、クライアント(publisher/subscriber)はEメールのようなアドレスを持ちません。メッセージはクライアントに直接送られるわけではなく、「topic」を通じてMQTTサーバーを中継してやりとりされます。topicとは、メッセージの宛先を指定でき、「/」(スラッシュ)を使って階層構造を示したものです。

topic例(各エリアの湿度情報が欲しい場合にサーバーに登録する際の表示例)

field/tokyo/area1/humid
field/osaka/area2/humid
field/+/area1/humid (「+」の部分は、どんな文字列も対象とするワイルドカード記号)

出典:IBM「IBM Watson IoT Platform – Message Gateway 2.0.0」ワイルドカード

publish/subscribe メッセージングモデルの流れは下記です。

subscriberが、欲しいメッセージのtopicをMQTT Brokerに知らせます。そしてpublisherから情報が送信された際、MQTT brokerがtopicに基づいてメッセージを仕分け、subscriberに配信します。

また、MQTT brokerは基本的にメッセージを保有しません。よって、subscriberから欲しいメッセージの要求が無い場合、publisherから送られたメッセージはMQTT brokerから削除されます。加えて、subscriberから欲しいメッセージの要求が無いtopicのメッセージもMQTT brokerから削除されます。

別の特長として、publisherとsubscriberは立場を入れ替えることも可能です。publisherはsubscriberに、subscriberはpublisherになることができます。

出典:Steve’s internet Guide「How MQTT Works -Beginners Guide」
株式会社グルーヴノーツ「MAGELLAN Dev Center. 」MQTT の仕様

MQTTとHTTPの比較

これまでM2MやIoTで使われることが多かったプロトコル「HTTP」との違いは下記です。

MQTT HTTP
同期有無 非同期 同期
送受信の対象 多対多 1対1
データ量 軽い(小さい) 重い(大きい)
通信基盤が不安定なとき 再接続時に再度送受信できる 送受信できない

MQTTは通信のオーバーヘッドが小さく、トラフィックがHTTPと比べて約10分の1で済みます。そのため、実質的な処理能力が10倍ほどになります。軽量であることで、デバイスのバッテリー消費を10分の1以下に抑えられるメリットもあります。

通信方法にも違いがあります。HTTPは同期プロトコルです。クライアントがリクエストを送信し、サーバーがそれに応答する1対1の通信をおこないます。一方、MQTTは非同期プロトコルで双方向やグループでの通信が可能です。ネットワークが不安定な場合でも再度送受信でき、必ずしもsubscriberがリアルタイムで待機する必要もありません。

以上のことから、短時間で小さいデータを高頻度でやりとりするM2MやIoTでは、HTTPではなくMQTTが適しているといえます。

出典:かもめエンジニアリング株式会社「MQTTとは」
株式会社AMG Solution「IoT開発未経験者向け! IoTで注目を浴びるプロトコル、MQTTとは?」

MQTTを利用するメリット

MQTTはデータ量を抑えたメッセージのやりとりが多数発生する通信に適しています。

例えばセンサー遠隔監視では、機器が正常に動作していることを知らせるために自ら周期的に短いデータを送信し、そのデータが途切れていないか外部から監視します。このような、軽量かつシンプルなデータ通信をおこなうIoT分野で活用されています。

また、GoogleのCloud IoT Core、Microsoft社のAzure、Amazon Web Services社のAWS IoT Coreなど、大手のクラウドベンダーがMQTTに対応した開発環境を用意していることも特長です。

メリット1:ネットワークが不安定な場所や、性能が低いデバイスでも有効

ネットワークが不安定な場所や、性能が低いデバイスでも使用できるため、通信が切れることを想定した機能にも有効です。モバイルネットワークやWi-Fiなどのネットワークが不安定で通信接続ができない場合、そのタイミングではデータは送受信されませんが、再接続できた時にデータを受け取ったり届けたりすることができます。

メリット2:狭い帯域幅でも利用しやすい

軽量なメッセージプロトコルのため、性能が高くないデバイスや狭い帯域幅でも利用できます。

メリット3:通信量やCPU負荷、電力消費量を大幅に削減

MQTTはヘッダーが最小2バイトと軽量です。特にデータ量の少ないメッセージを頻繁に送受信する際に、CPU負荷や消費電力を抑えることができます。

出典:Steve’s internet Guide「How MQTT Works -Beginners Guide」
株式会社アドバネット「MQTT入門ガイド」

MQTTの実用例

MQTTは自動車、製造、テレコミュニケーション、油田、ガスなどの幅広い産業で使用されています。

油田パイプラインイメージ

実用例1:油田パイプライン監視

油田パイプラインセンサーを衛星に接続するために使用されています。油田パイプラインセンサーでは、速度や通信データ容量の条件はそこまで厳しく求められません。しかし、衛星が通信範囲を外れてしまう可能性があるため、通信が失敗しても柔軟に対応できるプロトコルが必要でした。そこで、安定した接続基盤を必要とするHTTPではなく、MQTTが採用されています。

出典:Adafruit「MQTT」

実用例2:Facebook Messenger

多くの人にとって身近なFacebook MessengerにもMQTTが利用されています。双方向通信(グループでの通信)、通信データ量が少ない、使用頻度が高い、といった使われ方をするメッセージアプリケーションにも適しているといえるでしょう。

実用例3:屋外の自動水やりシステム

畑の温度や湿度などをセンサーで読み取り、自動で水やりをさせることが可能です。

畑のセンサーで温度と湿度を計測し、publisherとしてデータをクラウド上のbrokerに送ります。一方、判定装置はsubscriberとして温度と湿度をbrokerに要求します。そして受信したデータが温度や湿度の閾値を超えている場合、設定している指示(水やり)を実行します。

また、実際にどの程度給水がおこなわれたのかを記録するための給水機の稼働記録、作物の育成状況を確認するための撮影データ保存などでもMQTTでの通信が活用できます。

そして、その際のIoT製品開発には、「iot-mos」の利用が便利です。

セミオーダー型のIoTプラットフォーム「iot-mos」

iot-mosは柔軟性と低コストを実現するセミオーダー型のIoTプラットフォームです。

量産や長期間の利用にも対応し、かつスクラッチ開発よりも費用を抑えながらIoT導入を支援します。brokerにはAWS IoT Coreを利用しており、システム開発・ハードウェア製造ベンダーの体制も整っています。これまで、社内の専門家不足など、さまざまな課題により進まなかったIoTを実現したい企業様におすすめです。

技術面の特長

iot-mosの設定には、プラグラミング経験が全くない方でも簡単に習得できる、ビジュアルプログラミングアプリ「C-Style」でおこなえます。

『iot-mos』の設定は、ビジュアルプログラミングアプリ『C-Style』を使用します。『C-Style』は小中学生のプログラミング教育を目的に開発された、DAISENオリジナルのプログラミングアプリです。プラグラミング経験が全くない状態からでも、少しの学習で簡単に習得できる内容です。プログラミングによる設定を自身で行えるので、初期設定および仕様変更などに費用をかけずにIoTを運用することが可能です。

引用:「iot-mos」製品紹介

コスト面の特長

セミオーダー型のため、コストを抑えながら課題に合わせたシステム構築が可能です。スモールスタートがしやすく、試作時の費用も抑えられます。

iot-mosとは?IoT開発の問題を解決する製品紹介