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モデルは、パブリッシャとサブスクライバの間で疎結合なメッセージングを実現するパターンです。このモデルでは、メッセージの送信者と受信者が直接通信することなく、ブローカーを介してメッセージをやり取りします。

まずサブスクライバは、関心のあるトピックを指定してブローカーにサブスクライブ(購読)を依頼しておきます。

7838_pubsub_1.png

一方、パブリッシャはメッセージを生成し、それをトピック指定してブローカーにパブリッシュ(送信)します。ブローカーはサブスクライバがサブスクライブしているトピックにメッセージが到着すると、それをサブスクライバへ中継します。

7838_pubsub_2.png

このように、Pub/Subモデルでは、ブローカーがメッセージを中継することで、パブリッシャとサブスクライバの通信を実現します。MQTTにおいて、ブローカーはMQTTブローカーであり、パブリッシャとサブスクライバはMQTTクライアントとなります。

メッセージ

MQTTはテキストデータだけでなく、バイナリデータもメッセージとして送信することができます。
実際にMQTTを活用したIoTのシステムでは、JSONのようなテキストデータや、MessagePackのようなバイナリデータも利用されています。

MQTTの最大メッセージ長は256MB(268,435,456 bytes)です。これはヘッダを含めたメッセージ全体の長さに対する制限となり、制限を超えて大きなメッセージを扱う場合は、メッセージを分割するか、MQTTではない手段の検討が必要です。

7838_message.png

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の分野で広く採用されています。工場内のセンサや設備から収集されるデータをリアルタイムで中央システムへ送信し、稼働状況や温度・湿度など、さまざまなモニタリングを効率化します。
例えば、振動センサを用いることで機械の微細な異常をとらえ、設備の状態を継続的に監視する仕組みが可能になります。このように、異常を早期に検知し、予防保全に貢献するケースもあります。

7838_iiot.png

スマートシティ

MQTTはスマートシティのシステムで採用され、効率的なデータ通信を実現しています。
例えば、街中のIoTセンサから得られる環境情報から、空気の質や騒音データを継続的に収集し、都市環境の改善に活用しています。街路灯の自動調光やゴミ収集の最適化など、エネルギー効率の向上や運用コストの削減にも役立てています。

7838_city.png

スマート農業

MQTTはスマート農業の分野で活用されています。 温度、湿度、二酸化炭素濃度、土壌水分量などの環境データをセンサで測定し、作物に必要な環境を効率的に維持します。
例えば、ハウス栽培では収集したデータに基づき、換気装置や加湿装置、灌漑システムを自動制御することで生産性を向上させます。また、篤農家のデータと比較することで、より高精度な栽培管理が可能となり、ノウハウの共有や技術の向上にも寄与します。

7838_farm.png

まとめ

MQTTはIoT分野で広く採用される信頼性の高いプロトコルです。その軽量性や低帯域幅での効率的なデータ通信という特徴が、多くの業界での利用につながっています。 実例にあげた産業IoT、スマートシティ、スマート農業のように、環境モニタリングや設備管理、効率的な資源管理を実現するために、MQTTは欠かせないものと言えるでしょう。
IoTの信頼できる通信基盤として、MQTTを導入してみてはいかがでしょうか。

IoTメッセージングプラットフォーム「MessagePub+」のご紹介

オージス総研が提供する「MessagePub+」は、MQTT v3.1.1と、最新のv5.0に対応した高性能なMQTTブローカーです。
高い安定性とセキュリティでIoTシステムをしっかり支えます。

無料トライアルで「MessagePub+」の機能をぜひご確認ください。

2025年1月9日

※この記事に掲載されている内容、および製品仕様、所属情報(会社名・部署名)は公開当時のものです。予告なく変更される場合がありますので、あらかじめご了承ください。

関連サービス