Mosquittoについて
🧭 はじめに
この記事では、MQTT(Message Queuing Telemetry Transport)の代表的なブローカー「Mosquitto」について詳しく解説します。
MQTTはIoT(モノのインターネット)に特化した軽量な通信プロトコルで、Mosquittoはその中でも特に広く使われているブローカーです。この記事を通じて、Mosquittoの基本的な仕組みから実際の利用法、セキュリティ設定、運用上のポイントまでを体系的に理解できます。
MQTTについてはMQTTで説明しています。
🦟Mosquittoとは?
🪪 基本情報
-
正式名称:Eclipse Mosquitto
-
役割:MQTTプロトコルのブローカー(サーバー)
-
開発元:Eclipse Foundation(オープンソース)
-
主な用途:IoTデバイス間のメッセージ中継、スマートホーム、監視システムなど
Mosquittoは、MQTTクライアント間のPub/Subモデル通信を仲介します。送信側(Publisher)と受信側(Subscriber)が直接接続せず、Mosquittoがトピック単位で中継します。
📦 インストールと起動
🐧 Linux(Ubuntu)の場合
sudo apt update
sudo apt install mosquitto mosquitto-clients
sudo systemctl enable mosquitto
sudo systemctl start mosquitto
🪟 Windowsの場合
-
公式サイトからインストーラを取得
-
OpenSSL依存のため、DLLの配置が必要
-
デフォルトでは
mosquitto.exe
を実行すればブローカー起動
📡 基本の使い方
🔊 Publisher(送信)
mosquitto_pub -h localhost -t test/topic -m "Hello"
📥 Subscriber(受信)
mosquitto_sub -h localhost -t test/topic
これにより、test/topic
というトピックに対して送信されたメッセージを、購読中のクライアントが受け取れます。
🔐 セキュリティ機能
Mosquittoは軽量でありながら、以下のような本格的なセキュリティ機能も備えています。
🧾 認証(パスワード方式)
mosquitto_passwd -c /etc/mosquitto/passwd user1
設定ファイルに以下を追加:
password_file /etc/mosquitto/passwd
allow_anonymous false
🔒 TLS/SSL対応
自己署名証明書または正式な証明書を使って、通信の暗号化が可能です。
設定例:
cafile /etc/mosquitto/certs/ca.crt
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key
require_certificate false
TLS設定は、インターネットを介した利用やクラウド連携時には必須です。LAN内でも機密性がある場合は有効化推奨。
📖 設定ファイルの基本構成
設定ファイルは通常 /etc/mosquitto/mosquitto.conf
にあります。分割構成も可能です:
# mosquitto.conf
include_dir /etc/mosquitto/conf.d
よく使う設定項目:
-
listener 1883
:ポート指定(通常は1883) -
allow_anonymous false
:匿名アクセス禁止 -
log_type all
:ログレベルの指定
🔄 永続化とリテンション
Mosquittoは以下のようなメッセージ保持機能を備えます。
📌 Retained Message(保持メッセージ)
-
直近のメッセージをトピックごとに保持
-
新規Subscriberにも即時送信
💾 Persistence(永続化)
-
メッセージの履歴やセッション情報を再起動後も保持
-
設定例:
persistence true persistence_location /var/lib/mosquitto/
🔍 運用・デバッグ
-
mosquitto_sub -d
:デバッグ出力付き購読 -
ログファイルの場所:
/var/log/mosquitto/mosquitto.log
-
systemctl restart mosquitto
で反映
設定変更後の再起動忘れに注意。systemctl reload
は一部設定に非対応。
🌐 Mosquittoの強みとユースケース
👍 強み
-
軽量・高速(Raspberry Piでも動作可能)
-
MQTT v3.1/v3.1.1/v5対応
-
シンプルな設定と柔軟な拡張性
🏠 ユースケース例
-
家庭用スマートホームの中核ブローカー
-
工場のセンサーデータ収集基盤
-
学習用途・実験環境
🧩 関連ツール
-
mosquitto_pub/sub
:CLIクライアント(学習・デバッグ向け) -
Node-RED:MQTT連携のビジュアルプログラミング
-
Home Assistant:スマートホーム用統合環境
🏁 まとめ
Mosquittoは、MQTTの世界における「標準」ともいえる存在であり、学習用途から本格的なIoTシステムまで幅広く活用されています。軽量ながらも十分なセキュリティ機能や永続化機能を備え、カスタマイズも柔軟に可能です。
初学者でも使いやすい設計になっているため、「まずは試してみたい」人にぴったりのMQTTブローカーです。IoTやPub/Sub通信に関心がある人は、ぜひ一度Mosquittoを動かしてみてください。