SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

システム環境の明後日を支える新技術

IoT時代を支えるプロトコル「MQTT」(前編)

システム環境の明後日を支える新技術(4)

IoT時代を支えるプロトコルMQTT

 MQTTは「MQTT is a machine-to-machine (M2M)/"Internet of Things" connectivity protocol. It was designed as an extremely lightweight publish/subscribe messaging transport」(http://mqtt.org/より引用)と定義されており、IoTやM2M(Machine-to-Machine)向けに開発された軽量プロトコルです。センサデバイスから少量のデータを定期的に送受信もしくは配信を行うために最適化された、私たちがなじみ深いHTTP(Hyper Text Transfer Protocol)とは異なるプロトコルです。Client-Serverにあたるソフトウェア実装はC, Java, JavaScript, Python, Lua, C++, .NET, Perl, PHP, Rubyなどで書かれており、センサデバイスの環境により最適なライブラリやソフトウェア実装を選ぶことができます(図3)。

図3 MQTT Servers/Brokers実装一覧
図3 MQTT Servers/Brokers実装一覧

 今回はまず「MQTTはどこまで軽量で安全化?」を確認するため、インターネットを経由したMQTTによるデモを見ていきましょう。

MQTTでつなぐ

 インターネット経由でMQTTのデモする場合、「http://test.mosquitto.org/」を利用するのがリーズナブルです。http://test.mosquitto.org/上ではBroker/Server側の設定はすべて済んでいますので、Client/Subscriber側を用意するだけでよいのです。今回はWindows環境でMQTTのPythonライブラリであるpaho-mqttを使って接続してみましょう。まずは図4に従いMQTT環境と整えていきましょう。

図4. MQTT Pythonライブラリをインストールする
C:\> python-3.4.1.amd64.msihttps://www.python.org/downloads/ からダウンロードする
C:\> cd Python34\Scripts
C:\Python34\Scripts> pip install paho-mqtt
Downloading/unpacking paho-mqtt
  Running setup.py (path:C:\Users … \paho-mqtt\setup.py) egg_info for package paho-mqtt
Installing collected packages: paho-mqtt
  Running setup.py install for paho-mqtt

Successfully installed paho-mqtt
Cleaning up...

 つづいてMQTT PythonライブラリをつかってClient側を設定を行います(図5)。

図5.MQTT Pythonライブラリを使ったClient/Subscriber接続のプログラム例
C:\test> notepad unencrypted-mqtt.py    ※Windowsのメモ帳を使ってプログラム作成
# coding=utf8
import paho.mqtt.client as mqtt

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))

    client.subscribe("test")

def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect("test.mosquitto.org", 1883)
client.loop_forever()

 今回は接続先をデモ環境であるtest.mosquitto.orgの1833番ポートに「SSLなし」で接続しています。

 準備が整ったら。すぐに接続してみましょう(図6)。

図6. MQTT Pythonライブラリを使ったClient/Subscriber接続の実行例
C:\test> py unencrypted-mqtt.py
Connected with result code 0
test b'Hello World'

 これで接続完了です。ですが、これでは皆様も釈然としないかと思いますので、プロトコル詳解をネットワークアナライザであるWiresharkを使って見てみましょう。

次のページ
MQTTをパケットトレースする

この記事は参考になりましたか?

システム環境の明後日を支える新技術連載記事一覧

もっと読む

この記事の著者

松本 直人(マツモト ナオト)

1996年より特別第二種通信事業者のエンジニアとしてインターネット網整備に従事。その後システム・コンサルタント,ビジネス・コンサルタントを経て2010年より,さくらインターネット株式会社 / さくらインターネット 研究所 上級研究員。(2016年より一時退任)研究テーマはネットワーク仮想化など。3~5年先に必要とされる技術研究に取り組み、世の中に情報共有することを活動基本としている。著書: 『モノのインターネットのコトハジメ』,『角川インターネット講座 ~ビッグデータを開拓せよ~』など多数。情報処理学会 インターネットと運用技術研究会 幹事

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/8000 2014/09/16 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー