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

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だけは別途用意するという設計になります。