メインコンテンツへスキップ

MQTT

🧭 MQTTとは?

MQTTは、軽量で省リソースな通信プロトコルです。IoT(モノのインターネット)機器間のリアルタイム通信に適しており、主に低帯域・高遅延・不安定なネットワーク環境を想定して設計されています。


🔗 通信モデル(パブリッシュ/サブスクライブ)

MQTTは「Pub/Subモデル」を採用しています。

  • Publisher(発行者):トピックにメッセージを送信

  • Subscriber(購読者):特定のトピックを購読し、メッセージを受信

  • Broker(仲介者):PublisherとSubscriberを仲介するサーバ(必須)

Publisher ──> Broker ──> Subscriber

🗂️ トピック(Topic)

トピックは、階層構造の文字列キーで、メッセージの分類に使われます。

例:

home/livingroom/temperature

ワイルドカードも使えます:

  • +:1階層の任意の名前(例: home/+/temperature

  • #:任意の階層(末尾のみ、例: home/#


📦 QoS(Quality of Service)

信頼性を表す3つのレベルがあります:

QoS 内容 使いどころ
0 最善努力(届けるが保証なし) 温度など多少欠けてもよい情報
1 少なくとも1回(重複の可能性あり) 必ず届けたいが重複OK
2 1回だけ必ず(最も重い) 重複不可の重要なデータ(課金情報など)

🔒 セキュリティ

  • 通信の暗号化:TLS(MQTTSとも呼ばれる)

  • 認証:ユーザー名+パスワード、クライアント証明書

  • アクセス制御:トピック単位の権限設定(ACL)


📡 特徴まとめ

特徴 内容
軽量プロトコル 小さなパケットで通信(TCP/IP使用)
リアルタイム性 PUSH型通信で即時性が高い
接続維持 Keep Alive機能で定期Ping
運用が容易 Brokerを1台立てれば開始できる
プラットフォーム非依存 組込みデバイスからクラウドまで幅広く対応

🌍 主な利用シーン

  • スマートホーム(温度センサー・スマート電球)

  • 工場の設備監視(SCADAシステム)

  • 物流トラッキング(GPS位置送信)

  • モバイル通知

  • 医療機器の状態監視


💡 よく使われるMQTTブローカー

ブローカー名 特徴
Mosquitto オープンソースで軽量、学習用途にも◎
EMQX 高機能で商用にも対応
HiveMQ 商用向けの高可用性ブローカー
AWS IoT Core クラウド連携に最適