MQTTがIoTに最適な理由とは?知っておくべきMQTTの基本と導入メリット
MQTTとは
MQTT(Message Queuing Telemetry Transport)はメッセージングプロトコルで、IoT(Internet of Things)やM2M(Machine to Machine)の分野で広く利用されています。大量の小さいデータを頻繁に、かつ双方向でやり取りするといった利用に強みがあり、センサによるデータ収集やアクチュエータの制御に活用されています。
MQTTプロトコルの標準化は、OASIS(Organization for the Advancement of Structured Information Standards)によって行われており、MQTT Version 5.0(v5.0)が最新として公開されています。一世代前のバージョンは、MQTT Version 3.1.1(v3.1.1)ですが、現在はv3.1.1とv5.0の両方がよく利用されています。MQTTの製品やライブラリには、両方のバージョンに対応しているものも存在しています。
なお、MQTT(Message Queuing Telemetry Transport)はその名称に反して、キュー(Queue)管理はその仕様に含まれておりません。MQTTの名称についてはさまざまな議論(https://groups.google.com/g/mqtt/c/F0JlXXiUA_M/m/CUcG-aa3ibIJ(外部サイト)もあるようです。
なぜMQTTがIoTで利用されるのか
軽量
IoTではHTTPプロトコルも活用されていますが、MQTTはHTTPと比較すると軽量なプロトコルです。 MQTTのヘッダサイズはとても小さく(最小サイズが2bytes)設計されていて、HTTPに比べると10分の1、100分の1といったサイズになります。
そのため通信にかかる時間が短くなり、結果的に電力消費が抑えられます。
双方向通信
MQTTはPub/Subモデルによって、メッセージを送受信します。
クライアントサーバーモデルではメッセージの発信は常にクライアントとなりますが、Pub/SubモデルのMQTTでは、クライアント側だけでなくサーバー側から発信することも可能です。
このような特徴からプッシュ通知、遠隔操作といった用途でも利用されています。
信頼性の低いネットワークでも利用可能
MQTTは信頼性の低いネットワークでもメッセージを失わないような仕組みが提供されています。IoTが動作する環境は、ネットワークの品質が低く、帯域幅に制約のあるような状況も考えられます。
MQTTには、クライアントが一時的に接続を失った場合でも、セッションを維持する仕組みが用意されており、この仕組みを利用すると、クライアントが再接続したときに、前回のセッションに基づいてメッセージは再送されます。
具体的に説明すると次の通りです。
ネットワークの問題によりクライアントが切断したとき、切断中に送信されたメッセージはクライアントに届きません。しかしセッション維持の仕組みが有効な場合は、クライアントが再接続した際に切断中に発生したメッセージがクライアントへ送信されます。このように信頼性の低いネットワークであっても、メッセージの取りこぼしを防ぐことができるのです。
効率的なメッセージ配信
MQTTではメッセージの送受信に、トピックという宛先を指定します。
トピックはスラッシュで区切られた階層構造で表現します。例えば「ビル/会議室A/温度」というトピックは、会議室Aの温度に関係するメッセージを扱うということがわかると思います。
この階層構造で異なる種類のデータを分類することができます。これによりクライアントは必要なデータだけを選択して送受信することができます。また、トピックの階層の一部にワイルドカードを用いることで、フィルタリングなど柔軟なトピック指定が可能です。
MQTTの特徴
Pub/Subモデル
Pub/Subモデルは、パブリッシャとサブスクライバの間で疎結合なメッセージングを実現するパターンです。このモデルでは、メッセージの送信者と受信者が直接通信することなく、ブローカーを介してメッセージをやり取りします。
まずサブスクライバは、関心のあるトピックを指定してブローカーにサブスクライブ(購読)を依頼しておきます。
一方、パブリッシャはメッセージを生成し、それをトピック指定してブローカーにパブリッシュ(送信)します。ブローカーはサブスクライバがサブスクライブしているトピックにメッセージが到着すると、それをサブスクライバへ中継します。
このように、Pub/Subモデルでは、ブローカーがメッセージを中継することで、パブリッシャとサブスクライバの通信を実現します。MQTTにおいて、ブローカーはMQTTブローカーであり、パブリッシャとサブスクライバはMQTTクライアントとなります。
メッセージ
MQTTはテキストデータだけでなく、バイナリデータもメッセージとして送信することができます。
実際にMQTTを活用したIoTのシステムでは、JSONのようなテキストデータや、MessagePackのようなバイナリデータも利用されています。
MQTTの最大メッセージ長は256MB(268,435,456 bytes)です。これはヘッダを含めたメッセージ全体の長さに対する制限となり、制限を超えて大きなメッセージを扱う場合は、メッセージを分割するか、MQTTではない手段の検討が必要です。
QoS
MQTTでは、パブリッシュとサブスクライブにてQoS(Quality of Service)を指定することができます。QoSはメッセージの送受信の信頼性を確保するための設定です。QoSには0、1、2のレベルがあり、各レベルに応じて通信の信頼性を制御します。
QoS | 説明 |
0 : At most once | メッセージは再送しない |
1 : At least once | メッセージは再送する、受信側は重複したメッセージが届く可能性がある |
2 : Exactly once | メッセージは再送する、受信側は必ず1つのメッセージが届く |
不安定なネットワークではクライアントが一時的に切断することがあります。 クライアントが再接続したとき、送信中のメッセージを再送する仕組みがQoSです。
MQTTの特徴を活かした実用例
産業用IoT
MQTTは産業用IoTの分野で広く採用されています。工場内のセンサや設備から収集されるデータをリアルタイムで中央システムへ送信し、稼働状況や温度・湿度など、さまざまなモニタリングを効率化します。
例えば、振動センサを用いることで機械の微細な異常をとらえ、設備の状態を継続的に監視する仕組みが可能になります。このように、異常を早期に検知し、予防保全に貢献するケースもあります。
スマートシティ
MQTTはスマートシティのシステムで採用され、効率的なデータ通信を実現しています。
例えば、街中のIoTセンサから得られる環境情報から、空気の質や騒音データを継続的に収集し、都市環境の改善に活用しています。街路灯の自動調光やゴミ収集の最適化など、エネルギー効率の向上や運用コストの削減にも役立てています。
スマート農業
MQTTはスマート農業の分野で活用されています。
温度、湿度、二酸化炭素濃度、土壌水分量などの環境データをセンサで測定し、作物に必要な環境を効率的に維持します。
例えば、ハウス栽培では収集したデータに基づき、換気装置や加湿装置、灌漑システムを自動制御することで生産性を向上させます。また、篤農家のデータと比較することで、より高精度な栽培管理が可能となり、ノウハウの共有や技術の向上にも寄与します。
まとめ
MQTTはIoT分野で広く採用される信頼性の高いプロトコルです。その軽量性や低帯域幅での効率的なデータ通信という特徴が、多くの業界での利用につながっています。
実例にあげた産業IoT、スマートシティ、スマート農業のように、環境モニタリングや設備管理、効率的な資源管理を実現するために、MQTTは欠かせないものと言えるでしょう。
IoTの信頼できる通信基盤として、MQTTを導入してみてはいかがでしょうか。
IoTメッセージングプラットフォーム「MessagePub+」のご紹介
オージス総研が提供する「MessagePub+」は、MQTT v3.1.1と、最新のv5.0に対応した高性能なMQTTブローカーです。
高い安定性とセキュリティでIoTシステムをしっかり支えます。
無料トライアルで「MessagePub+」の機能をぜひご確認ください。
\ メッセージングプラットフォーム「MessagePub+」無料トライアル /
2025年1月9日
※この記事に掲載されている内容、および製品仕様、所属情報(会社名・部署名)は公開当時のものです。予告なく変更される場合がありますので、あらかじめご了承ください。関連サービス
-
IoTメッセージングプラットフォーム「MessagePub+」
MessagePub+ はオージス総研が開発したつなげることに特化した"IoTメッセージングプラットフォーム"です
関連記事一覧
- MQTTとMessagePub+ :ラベル(MessagePub+ )
- MQTTとMessagePub+ :トピックの名前と階層化
- MQTTとMessagePub+ :トピック分類のまとめ
- MQTTとMessagePub+ :応答系トピック
- MQTTとMessagePub+ :要求系トピック
- MQTTとMessagePub+ :通知系トピック
- MQTTとMessagePub+ :トピックの分類
- MQTTとMessagePub+ :MQTTを用いたIoTサービスにおけるトピック設計
- MQTTとMessagePub+ :MessagePub+ におけるセッション管理
- MQTTとMessagePub+ :MQTT活用のコツ