MQTTを用いたアプリをPythonで実装する場合の推奨ライブラリ
🛰️ はじめに
本記事では、MQTT(Message Queuing Telemetry Transport) をPythonで使う際に、Subscriber(購読者)・Publisher(発行者)・Broker(仲介サーバー) それぞれに適したライブラリについて紹介します。
IoTやリアルタイム通信の世界で大活躍するMQTT。そのPython実装を学びたい人にとって、ライブラリ選びは最初の重要ステップです。
📥 Subscriber(受信者)で使うライブラリ
▶️ 基本は paho-mqtt
MQTTクライアントとして定番のライブラリが paho-mqtt
。
MQTTプロトコルを使って トピックを購読し、メッセージを受信する処理に適しています。
✅ インストール
pip install paho-mqtt
✅ サブスクライブのサンプルコード
import paho.mqtt.client as mqtt
def on_message(client, userdata, msg):
print(f"受信トピック: {msg.topic}, メッセージ: {msg.payload.decode()}")
def on_connect(client, userdata, flags, rc):
print("接続成功" if rc == 0 else f"接続失敗: {rc}")
client.subscribe("test/topic")
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.hivemq.com", 1883, 60)
client.loop_forever()
paho-mqtt
はSubscriberとPublisherの両方に使える万能クライアントライブラリです。
🚀 Publisher(送信者)で使うライブラリ
▶️ こちらも paho-mqtt
でOK!
Publisherとしてメッセージを送るだけなら、設定もシンプルです。
✅ 最小限のサンプルコード
import paho.mqtt.client as mqtt
client = mqtt.Client()
client.connect("broker.hivemq.com", 1883, 60)
client.publish("test/topic", "こんにちは MQTT")
client.disconnect()
✅ 他の選択肢(応用向け)
ライブラリ名 | 特徴 |
---|---|
asyncio-mqtt |
asyncio対応。非同期処理と相性が良い |
gmqtt |
高度な非同期制御が可能。イベントドリブン向け |
hbmqtt |
Python製の古いブローカー兼クライアント(非推奨) |
単発送信なら paho-mqtt
一択で問題ありません!
🧩 Broker(仲介役)で使うライブラリ/ツール
▶️ ブローカーには paho-mqtt
は使えない
paho-mqtt
はあくまでクライアント用ライブラリなので、ブローカー(MQTTサーバー)は別途立てる必要があります。
✅ 実運用におすすめのブローカー
ブローカー名 | 言語 | 特徴 |
---|---|---|
Mosquitto | C | 定番。軽量かつ信頼性高い。Dockerでの利用も簡単 |
EMQX | Erlang | 高性能でスケーラブル。商用利用にも強い |
HiveMQ | Java | エンタープライズ向け。プラグインなど豊富 |
Aedes | Node.js | JavaScript製。軽量で開発者フレンドリー |
✅ Pythonだけでブローカーを立てたいなら:hbmqtt
pip install hbmqtt
from hbmqtt.broker import Broker
import asyncio
config = {
'listeners': {'default': {'type': 'tcp', 'bind': '0.0.0.0:1883'}},
'sys_interval': 10,
'topic-check': {'enabled': False}
}
broker = Broker(config)
async def start_broker():
await broker.start()
asyncio.run(start_broker())
hbmqtt
はメンテナンスが止まっており、学習・デモ用に限定するのが無難です。
🎯 まとめ
役割 | 推奨ライブラリ | 備考 |
---|---|---|
Subscriber | paho-mqtt |
もっとも一般的なMQTTクライアントライブラリ |
Publisher | paho-mqtt |
単発送信から非同期対応まで柔軟に使える |
Broker | Mosquitto (推奨)hbmqtt (学習用) |
実運用ではMosquitto一択。Pythonだけで完結したい場合はhbmqttで検証可能 |
✨ おわりに
PythonでMQTTを使うためには、SubscriberとPublisherは同じライブラリ(paho-mqtt
)で共通化でき、Brokerだけは別途用意するという設計になります。