やらなイカ?

たぶん、iOS/Androidアプリの開発・テスト関係。

MQTT Meetup Tokyo 2014.08 に行ってきました #mqttja

MQTTに関するアレコレを聞ける会 MQTT Meetup Tokyo 2014.08 (時雨堂さん主催、@niftyさん会場提供 )に行ってきたのでメモ

MQTTの概要(若山さん@ツキノワ)

MQTT(Message Queue Telemetry Transport)の特徴

  • TCPベース、オーバーヘッドが小さく、省電力なのでモバイルでも安心。M2MとかIoTとか。
  • publish/subscribe
  • メッセージごとにQoS(Quality of Service)を設定できる。QoS 0は保証なし、1は必達だが重複の可能性あり、2は正確に一回配信。
  • Will(遺言):クライアント接続時に、切断されたときに送るメッセージを設定できる。サーバ(ブローカー)がよきにはからってくれる
  • Retain:メッセージを配信するときにサーバでこれを保持して、後から接続されたサブスクライバにも配信してくれる
  • CleanSession:CleanSession=falseで接続したサブスクライバは、接続が切断されて再接続したとき、切断されていた間に送られたメッセージも受け取ることができる

現在、MQTT 3.1.1の仕様がOASIS標準の最終プレビュー中。 3.1から3.1.1では、パケット内のプロトコル名の変更、トピック名およびクライアントのIDがUTF-8固定になるなど。

より詳しくは、こちらにまとまっています。

MQTTについてのまとめ — そこはかとなく書くよん。

IBM MessageSight(鈴木さん@IBM

MQTT専用筐体であるIBM MessageSightの紹介。100万台つなげて、16message/secくらい送れている。 パレーマンスレポートも公開されている。

IBM ZP00: IBM MessageSight Appliance - Performance report - United States

MQTTでクラウドに上げたビッグデータのアナライズを部品化して提供するBluemixの紹介。

CoAP(林達也さん@lepidum)

MQTTの競合、CoAP(Constrained Application Protocol)について。

  • UDPベース、RFC7252
  • HTTP/RESTとの親和性(メソッドステータスコードマッピング
  • QoSとかはない
  • firefoxの拡張にcopperというものがある
  • 実用化にむけて追加仕様を検討しつつある。CoAP-MQとか
  • CBOR(しーぼる)
  • 課題は今は安全性、認証、認可、セキュリティ、プライバシー

MQTTブローカーを作った話(voluntasさん@時雨堂)

時雨堂MQTTブローカーを実装するにあたっての苦労など。

  • IBMさんのように専用筐体でなくクラウドで運用するもの
  • MQTT 3.1.1準拠、テストはパスしている
  • MQTT 3.1.1仕様では「メッセージが到達すること」などと書かれており、実装依存箇所が多い
  • クライアントの実装負担が軽い仕様である反面、サーバ側の負担は大きい。また接続数を考えると、リトライなどの負担を軽減することに腐心した。
  • MQTTの外、サービスとして必要な機能も実装。接続数、送信メッセージ数。またRetainの保持期限を設けるなど。

廣江さん@小松電機産業

センサー類→RaspberryPi+Arduino→MQTTをつなげてみた話。

  • アナログセンサー(水位とか)は一定間隔で送るので、QoS 0
  • デジタルセンサー(降雪とか)はON/OFFタイミングでしか送られないので、最低限QoS 1で、かつRetainにする
  • 移動体通信で従量課金であることを考えると、(MQTTといえども)メッセージは集約したい。アナログなら配列、デジタルはビット化するなど。またJSONでなくMessagePackを使うなど。
  • 実装言語は、軽量にするのであればC。その他、Golang、mruby
  • 時雨堂さんのMQTTブローカー(米東部?)を使ったデモ動画。若干の遅延はあるが、厳密なリアルタイム性を求められないなら十分実用的。シンガポールに移って遅延は減っている。

Sangoについて

時雨堂さんのMQTT as a Service。当日の00:00にローンチされた。

MQTT as a Service sango

現在はフリープランのみで、同時接続数3、QoS 0のみ。10月目標で有料プランを準備中。GitHubアカウントでサインアップして利用できる。

使いかたなどはこちら。

MQTT as a Service: Sango のリリースをお手伝いしました — そこはかとなく書くよん。