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 | クラウド連携に最適 |