【えむきゅーてぃーてぃー】

MQTT とは?

最終更新:
💡 トピックとブローカーで、発行側と購読側をつなぐ

制約のある機器や低帯域のネットワークを考慮した軽量なメッセージングプロトコル。クライアントはトピックへ発行し、ブローカーが購読者へ仲介する。到達の扱いや保存、通信の保護は設定・実装を確認する。

📌 このページのポイント
発行したデータを、購読先へ仲介する トピック:temperature/room1 🌡️ 温度センサー 発行側 24度を発行 Publish ブローカー トピックに一致する 購読先へ送る 仲介役 発行 購読側 表示 購読側 制御 QoS 0:最大1回 / 1:少なくとも1回 / 2:1回だけ ブローカーへの配送と、購読者への配送は別 例:AWS IoT CoreはQoS 0・1に対応(2は非対応) アプリの業務処理・保存・認証やTLSも設計する
temperature/room1を通常購読する2クライアントへの配送例。矢印はデータの配送で、購読設定や確認応答は省略。QoSは各送信者と受信者の間で扱う。
ひよこ ひよこ
MQTTはどうやってメッセージを送るの?
ペンギン先生 ペンギン先生
クライアントがトピックにメッセージをPublish(発行)し、ブローカーがそのトピックに合う購読者へ送るよ。発行側は購読者ごとの宛先を直接指定しなくてよい。通常の購読なら、同じトピックを購読する複数のクライアントへ配信できるんだ。
ひよこ ひよこ
トピックって何?
ペンギン先生 ペンギン先生
メッセージを分類する名前だよ。例えば温度センサーがtemperature/room1へ24度という値を発行し、その名前を購読するダッシュボードや制御アプリが受け取る。購読には複数のトピックへ一致させるフィルターも使えるんだ。
ひよこ ひよこ
QoS 0・1・2って何?
ペンギン先生 ペンギン先生
0は最大1回で、届かない場合もある。1は少なくとも1回の配送を行い、重複する場合がある。2は1回だけの配送を行う方式だよ。ただしこれは一つの送信者と受信者の間の規則。発行側からブローカー、ブローカーから購読者ではQoSが異なる場合があり、アプリの業務処理まで必ず1回になるという保証ではないんだ。
ひよこ ひよこ
すべてのサービスでQoS 2を使える?
ペンギン先生 ペンギン先生
対応は実装ごとに確認する必要があるよ。例えばAWS IoT Coreが対応するのはQoS 0と1で、2には対応していない。切断中のメッセージを保持するかもセッションや有効期限、保存上限に依存する。QoSを選んだだけで無期限に保存されるわけではないんだ。
ひよこ ひよこ
通信の安全性はどう守るの?
ペンギン先生 ペンギン先生
TLSで通信を保護し、利用者や機器を認証して、発行・購読できるトピックの権限を絞るなどの設計が必要だよ。認証方式はブローカーやサービスによって異なる。MQTTを使うだけで通信が自動的に暗号化されるとは考えず、採用する環境の設定を確認しよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「MQTT」って出てきたら「IoT向けの軽量メッセージ通信プロトコル」と思えればだいたいOK!
📖 おまけ:英語の意味
「MQTT」 = 軽量なメッセージ通信プロトコルの名称
💬 1999年にIBMのAndy Stanford-ClarkとArcomのArlen Nipperが考案したよ。現在の規格はOASISの標準として公開されているんだ

参考資料

← 用語集にもどる