80
遊佐浩史(株式会社アルゴ) JJUG CCC 2015 Spring 2015/4/11 M-6 MQTTの使いどころ 〜軽量プロトコルで低コストにデータを集めよう〜

M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

  • Upload
    -

  • View
    1.745

  • Download
    1

Embed Size (px)

Citation preview

Page 1: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

遊佐浩史(株式会社アルゴ)

JJUG CCC 2015 Spring

2015/4/11

M-6 MQTTの使いどころ

〜軽量プロトコルで低コストにデータを集めよう〜

Page 2: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

発表者について

• Twitter: @koji_yusa

• 株式会社アルゴ所属

ホットトピックス

–特殊撮影・編集

• 360度(VR)撮影・編集

• ドローンによる空撮

– ライブ配信、VOD配信(HLS)

• CDNによる暗号化配信

• スマホアプリ、Webアプリ配信

2015/4/11 1

Page 3: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

レジュメ

• MQTTについて

–概要、プロトコル概説

• ユースケース

–監視、モバイルメッセージング、チャット

• ツール

– クライアント、ゲートウエイ、ブローカー、データストア

• センサーハブ(MCU)の将来

2015/4/11 2

Page 4: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

MQTTについて

2015/4/11 3

Page 5: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

DEMO

• MQTT Whiteboard

– http://m2m.demos.ibm.com/whiteboard/

2015/4/11 4出典:MQTT資料 (B.Boyd) @SlideShare

Page 6: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

レジュメ

• MQTTについて

–概要、プロトコル概説

• ユースケース

–監視、モバイルメッセージング、チャット

• ツール

– クライアント、ゲートウエイ、ブローカー、データストア

• センサーハブ(MCU)の今後

2015/4/11 5

Page 7: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

2015/4/11 6

MQTTの歴史

• 1999年頃 EUROTECH・IBMがMQTTを開発

• 2010年8月 MQTT.orgに公開

• 2011年11月 paho(Eclipse M2M)が登場

• 2013年4月頃OASIS標準化を開始

• 2014年10月 MQTT 3.1.1がOASIS標準に

Page 8: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

Googleトレンドを調べてみた

2015/4/11 7出典:MQTT vs CoAP - Google Trends

Page 9: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

Googleトレンドを調べてみた

2015/4/11 8出典:IoT vs M2M - Google Trends

Page 10: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

MQTTの特徴

• TCP/IP

• PubSub型のプロトコル

• ツリー型のトピック

• HTTPに比べて小さなヘッダーサイズ

– 2〜4バイト

• 到達保証(QOS:0,1,2)

– QOS:0 保証なし

– QOS:1 保証あり

– QOS:2 一度の保証あり

2015/4/11 9

Page 11: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

MQTTの特徴

2015/4/11 10出典:MQTT資料 (B.Boyd) @SlideShare

Page 12: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

MQTTの特徴

2015/4/11 11出典:MQTT資料 (B.Boyd) @SlideShare

Page 13: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

MQTTの特徴

2015/4/11 12出典:MQTT資料 (B.Boyd) @SlideShare

Page 14: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

MQTTの特徴

2015/4/11 13出典:MQTT資料 (B.Boyd) @SlideShare

Page 15: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

MQTTの特徴

2015/4/11 14出典:MQTT資料 (B.Boyd) @SlideShare

Page 16: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

MQTTの特徴

2015/4/11 15出典:MQTT資料 (B.Boyd) @SlideShare

Page 17: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

MQTTの特徴

• HTTPの4~7倍少ないTCP帯域で送信できる

2015/4/11 16

パターン

HTTP MQTT

クライアント↓

サーバ

受信100

12.6KB 2.4KB x4

サーバ↓

クライアント

送信100

14.1KB 2.1KB x7

Page 18: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

MQTTクライアントライブラリ

2015/4/11 17

Page 19: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

paho〜MQTTクライアント ライブラリ

2015/4/11 18

• Javaクライアントライブラリ

• https://www.eclipse.org/paho/clients/java/

Page 20: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

paho〜MQTTクライアント ライブラリ

2015/4/11 19

• 専用のリポジトリがあるので注意

• groupId/artifactIdは、

org.eclipse.paho/org.eclipse.paho.client.mqttv3

• リポジトリは、https://repo.eclipse.org/content/repositories/paho-releases/

Page 21: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

paho〜MQTTクライアント ライブラリ

ヘッダ部、初期化部

2015/4/11 20

Page 22: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

paho〜MQTTクライアント ライブラリ

• 実行部

2015/4/11 21

Page 23: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

DEMO

• MQTT Helper

– http://mqtt-helper.mybluemix.net/

2015/4/11 22出典:MQTT資料 (B.Boyd) @SlideShare

Page 24: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

ユースケース

2015/4/11 23

Page 25: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

レジュメ

• MQTTについて

–概要、プロトコル概説

• ユースケース(Webサービス)

–監視、モバイルメッセージング、チャット

• ツール

– クライアント、ゲートウエイ、ブローカー、データストア

• センサーハブ(MCU)の今後

2015/4/11 24

Page 26: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

Webサービスとの関わり

2015/4/11 25出典:IoT Architecture (B.Trops, G.Schmutz)

Page 27: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

Webサービスとの関わり

2015/4/11 26出典:IoT Architecture (B.Trops, G.Schmutz)

センサーネットワーク

Page 28: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

Webサービスとの関わり

2015/4/11 27出典:IoT Architecture (B.Trops, G.Schmutz)

バックエンド

Page 29: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

Webサービスとの関わり

2015/4/11 28出典:IoT Architecture (B.Trops, G.Schmutz)

プッシュ通知

Page 30: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

センサーネットワーク

ユースケース

2015/4/11 29

Page 31: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

センサーネットワーク

2015/4/11 30出典:IoT Architecture (B.Trops, G.Schmutz)

センサーネットワーク

Page 32: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

センサーネットワーク

• センサー

–位置情報

–加速度情報

–温度

–湿度

–日照

–音量

2015/4/11 31

Page 33: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

センサーネットワーク

2015/4/11 32出典:ARM Techcon

スマホで汎用化したセンサーハブ

Page 34: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

センサーネットワーク

• センサー

–位置情報

–加速度情報

–温度

–湿度

–日照

–音量

⇒流用する形で安価に利用可能に

2015/4/11 33

Page 35: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

センサーネットワーク

• 既存の分野

–農業

• 気候確認

• 温度管理

–流通

• 配達

• 配車

2015/4/11 34

Page 36: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

センサーネットワーク

2015/4/11 35高機能なセンサーがスマホで常時稼働

Page 37: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

センサーネットワーク

• 既存の分野

–農業

• 気候確認

• 温度管理

–流通

• 配達

• 配車

• 人に関わる情報⇒安否・安全・快・不快• 自転車

• 騒音

2015/4/11 36

Page 38: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

センサーネットワークの選択肢

• MQTT

• MQTT-SN

• CoAP

2015/4/11 37

Page 39: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

モバイル プッシュ通知

ユースケース

2015/4/11 38

Page 40: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

プッシュ通知

2015/4/11 39出典:IoT Architecture (B.Trops, G.Schmutz)

MQTT

MQTT o/ WS

Page 41: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

モバイル プッシュ通知の選択肢

• プラットフォーム提供の通知サービス

–自前でバックエンドを実装

– (m)BaaSを利用

• Parse

• Amazon SNS

• ・・・

• MQTTで通知サービスを実装

–自前で実装

– (m)BaaSを利用

2015/4/11 40

Page 42: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

モバイル プッシュ通知

• APNS(iOS)

–ペイロードは2Kバイト(iOS8以前は256バイト)

–秒間9000メッセージは保証

– OSの制限のため、ほぼ代替手段はなし

• CGM(Android)

–ペイロードは4Kバイト

–マルチキャストは1000メッセージごと

– MQTTでリプレース可能

2015/4/11 41

Page 43: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

モバイル ログ送信

ユースケース

2015/4/11 42

Page 44: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

モバイル ログ

• クライアントからサーバー

• MQTTを使って端末状態を通知

–ログ

– イベント

2015/4/11 43

Page 45: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

モバイル ログ

• HTTP経由

–自前で実装

– (m)BaaSを利用

• Parse

• ・・・

• MQTT経由

–自前で実装

– (m)BaaSを利用

2015/4/11 44

Page 46: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

Androidのプッシュ通知

2015/4/11 45出典:msdn

Page 47: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

リアルタイムメッセージ

ユースケース

2015/4/11 46

Page 48: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

メッセージングの選択肢

• リアルタイムメッセージ プロトコル

双方向通信のためのプロトコル

– XMPP

– WebRTC

• メッセージキュープロトコル

非同期、到達保証のためのプロトコル

– AMQP

– STOMP

–各種RPC

2015/4/11 47

Page 49: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

メッセージングの利用例〜Facebook Messanger

• 2011年、Belugaで使われていたfacebookに買収後、Facebook Messengerに統合。

2015/4/11 48

Page 50: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

ゲートウェイ

ツール

2015/4/11 49

Page 51: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

Kura – IoT GateWay by Eclipse

• センサーからMQTTに変換するライブラリ

2015/4/11 50

Page 52: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

ブローカー

ツール

2015/4/11 51

Page 53: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

MQTTブローカー

• オープンソース

– Mosquitto (C)

– Mosca (Node.js)

– Moquette (Java)

2015/4/11 52

Page 54: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

MQTTブローカー

• クラウドサービス

– HiveMQ

– IBM IoT Foundation

– Sango (時雨堂)

2015/4/11 53

Page 55: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

その他

ツール

2015/4/11 54

Page 56: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

MQTTブリッジ

2015/4/11 55

• Ponte

– Eclipseプロジェクト

– Node.js実装

Page 57: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

MQTT複合サーバ

• Ponte

– Eclipseプロジェクト

– Node.js実装

2015/4/11 56

Page 58: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

MQTT-SNの構成

2015/4/11 57

ゲートウェイで変換

Page 59: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

RASPBERRY PI (ARM)用JAVAランタイム

2015/4/11 58

Page 60: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

Raspberry PiのJava環境(2013年初頃)

2015/4/11 59

デフォルトはOpenJDK(ZeroVM)

出典:Java On Raspberry Pi Performance -

Caucho Resin 4.x Wiki

Page 61: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

Raspberry PiのJava環境(2013年初頃)

2015/4/11 60出典:Java On Raspberry Pi Performance -

Caucho Resin 4.x Wiki

MBP 2.4GHz

Pi Model B

700 MHz

ARM1176JZF-S 1コア

Page 62: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

Raspberry PiのJava環境(2013年初頃)

• 以前は、OpenJDKのZeroVMがデフォルト

• ZeroVM = JITがない

• JITが必要な場合は、OracleからパッケージをDL

してインストール

2015/4/11 61

Page 63: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

Rasberry Pi(ARM用)Javaランタイム

2015/4/11 62

Page 64: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

Raspberry PiのJava環境(2015年現在)

• Oracle JVMがデフォルトでインストールされるように

2015/4/11 63

Page 65: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

Raspberry PiのJava環境(2015年現在)

2015/4/11 64

OracleのJavaSE8のJDKがデフォルトに

Page 66: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

Raspberry PiのJava環境(2015年現在)

2015/4/11 65

OracleのJavaSE8のJDKがデフォルトに

Page 67: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

Raspberry PiのJava環境(2015年現在)

2015/4/11 66

OracleのJavaSE8のJDKがデフォルトに

Page 68: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

レジュメ

• MQTTについて

–概要、プロトコル概説

• ユースケース

–監視、モバイルメッセージング、チャット

• ツール

– クライアント、ゲートウエイ、ブローカー、データストア

• センサーハブ(MCU)の今後

2015/4/11 67

Page 69: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

MPU動向について

Arduino互換機の

2015/4/11 68

Page 70: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

MCU市場は8/16bitから32bitに

2015/4/11 69

8/16bit(AVR)から32bit(ARM Cortex-M)にシフト⇒ARM用のJavaランタイムが使えるように

Page 71: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

センサーノード用のCortex-Mプロセッサ

2015/4/11 70

半導体プロセス移行に伴い消費電力はそのまま、高性能にシフト

Page 72: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

スマホのセンサーは、常時稼働が標準に

2015/4/11 71ワンチップの複合センサーが流用しやすく

Page 73: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

センサーノード用のCortex-Mプロセッサ

2015/4/11 72

半導体プロセス移行に伴い消費電力はそのまま、高性能にシフト

Page 74: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

MPU関連の画像出典について

• PC Watch連載

–後藤弘茂のWeekly海外ニュース

– IoTの波に乗るマイコン事情 (大原雄介)

• ARMの講演資料

2015/4/11 73

Page 75: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

ネットワーク環境について

Arduino互換機の

2015/4/11 74

Page 76: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

安価な2G/3Gモジュールが登場

2015/4/11 75

Page 77: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

安価な2G/3Gモジュールが登場

2015/4/11 76

日本を含む世界各国で認証済みの3Gモジュールが登場⇒端末もグローバル販売しやすく

Page 78: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

3Gモジュールを使った端末

• 3Gモジュールを使った端末が作りやすく

• 50ドル以下の端末

• 今年3月、Kickstarterに2つのプロジェクトが登場

2015/4/11 77

Page 79: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

3Gモジュールを使った端末

• 3Gモジュールを使った端末が作りやすく

• 50ドル以下の端末

• 今年3月、Kickstarterに2つのプロジェクトが登場

2015/4/11 78

月額1ドル程度のSIMカード⇒利用用途が広がる想定

Page 80: M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)

まとめ

• MQTTのユースケース

–監視、モバイルメッセージング、チャットなど

⇒HTTPにはない、軽量なサイズ、PubSub型を見極めて、Webサービスに活かそう

• Webサービスとの関わり

⇒センサーが高性能化し、人に紐づく情報を収集し活用する機会が増える

2015/4/11 79