About SORACOM & Updates
SORACOM UG 信州 #3
Mar. 3, 2018 /コワーキングスペース GREAM
株式会社ソラコム
テクノロジー・エバンジェリスト
松下 享平
自己紹介
株式会社ソラコム / テクノロジー・エバンジェリスト
松下 享平 (まつした こうへい) “max”
• 静岡県民 🗻
• 前職: 東証二部ハードウェア・メーカーで
IoT事業のコーディネート
• 好きなソラコムサービス
• SORACOM Air メタデータサービス
• SORACOM Funnel
• soracom-cli
• Facebook, Twitter: ma2shita
NEW!!!
IoTの基本要素とネットワークの課題
近距離
無線通信
スマートフォン等
接続の方法
人向け通信プラン
割高の通信費
長期固定契約
中・長距離
無線通信
2015年9月30日発表
1日10円〜 1回線~
モノ向け通信サービス
SORACOM Air for セルラー
IoTの基本要素とネットワークの課題
近距離
無線通信
スマートフォン等
便利なモバイル(3G/LTE)通信
IoT向け通信プラン
使ったら使った分だけの費用
1日10円、1回線から
中・長距離
無線通信
Raspberry Pi 等
専用線
インターネット
SORACOM Air ― 無線データ通信サービス
キャリアの
交換局
お客様
① SIMを購入して
モノに挿す
Webコンソール②Webから
コントロール
③APIでコントロール
API
IoT通信プラットフォーム SORACOM
SORACOMのグローバルなインフラ
欧米や日本も含めたアジア多くの国と地域で利用可能
IoT向けデータ通信
SORACOM Air
Cellular (2G, 3G, LTE) / LPWA (LoRaWAN, Sigfox)
データ通信
インターフェース
ライブラリ & SDKs
CLI, Ruby, Swift
Web インターフェース
User Console
API
Web API, Sandbox
ネットワーク
アプリケーション
データ転送支援
SORACOM
Beam
クラウドアダプタ
SORACOM
Funnel
データ収集・蓄積
SORACOM
Harvest
プライベート接続
SORACOM
Canal
デバイスLAN
SORACOM
Gate
専用線接続
SORACOM
Direct
仮想専用線
SORACOM
Door
認証サービス
SORACOM
Endorse
デバイス管理
SORACOM
Inventory
透過型
トラフィック処理
SORACOM
Junction
まとめ
• IoTで使われる通信回線を1回線でも、大量でも
• セキュリティや管理といった非機能要件※を
SORACOMで実現、使ったら使った分だけ
無線通信をクラウドのように使えるのが
SORACOM
※収益にしづらい要件
SORACOM API
https://dev.soracom.io/jp/docs/api/#/
SORACOM API Sandbox (テスト環境)
https://dev.soracom.io/jp/docs/api_sandbox/
soracom-cli
https://dev.soracom.io/jp/tools/soracom_cli/
$ soracom subscribers list | jq .
[
{
"apn": "soracom.io",
"createdAt": 1485450993028,
"createdTime": 1485450993028,
"expiredAt": null,
"expiryAction": null,
"expiryTime": null,
"groupId": null,
…
CLI ツールの注意点
SORACOM SDK for Ruby 同梱の`soracom` と
soracom-cli の `soracom` は異なります
より最新のAPIを使いたい場合は soracom-cli の
`soracom` を推奨します
イベントハンドラ
アクション
• SIM の速度を変更
• 特定のアドレスにメールを送信
• オペレータのアドレスにメール送信
• SIM の状態を使用中に
• SIM の状態を休止中に
• Webhook を起動
• AWS Lambda を起動
条件
• SIM ステータス変更
• 通信量
• 有効期限
イベントハンドラー機能詳細
https://dev.soracom.io/jp/docs/event_handler/
SORACOM Air のイベントハンドラーと
AWS Lambda を連携してみる@j3tm0t0
http://qiita.com/j3tm0t0/items/71fe2d52397c5f37359b
IoT通信プラットフォーム SORACOM
SORACOMのグローバルなインフラ
欧米や日本も含めたアジア多くの国と地域で利用可能
IoT向けデータ通信
SORACOM Air
Cellular (2G, 3G, LTE) / LPWA (LoRaWAN, Sigfox)
データ通信
インターフェース
ライブラリ & SDKs
CLI, Ruby, Swift
Web インターフェース
User Console
API
Web API, Sandbox
ネットワーク
アプリケーション
データ転送支援
SORACOM
Beam
クラウドアダプタ
SORACOM
Funnel
データ収集・蓄積
SORACOM
Harvest
プライベート接続
SORACOM
Canal
デバイスLAN
SORACOM
Gate
専用線接続
SORACOM
Direct
仮想専用線
SORACOM
Door
認証サービス
SORACOM
Endorse
デバイス管理
SORACOM
Inventory
透過型
トラフィック処理
SORACOM
Junction
セキュア&クラウドネイティブな
プロトコル
SORACOM Beam / Funnel による
ソフトウェア実装の工数削減
モノ
Google Cloud Platform
Microsoft Azure
AWS
簡素なプロトコル
認証情報
センサー制御、エッジ処理
バッファリング、エラー処理
バッファリング、エラー処理
暗号化・プロトコル実装
認証処理(SDK)
SORACOM Beam や Funnelで
クラウドを活用
デバイス開発を最小限に
SORACOM Beam
SORACOM Funnel
SORACOM Funnel ― 出力フォーマット
{
"operatorId": "OP9999999999",
"timestamp": 1519556756833,
"destination": {
"resourceUrl": "https://data.iot.us-west-2.amazonaws.com/my_topic/#{imsi}",
"service": "aws-iot",
"provider": "aws"
},
"credentialsId": "awsiot-dataaccess",
"payloads": <<PAYLOAD_DATA>>,
"imei": "86XXXXXXXXXXXX6",
"sourceProtocol": "udp",
"imsi": "440XXXXXXXXXXX3"
}
SORACOM Funnel クラウドサービス
(データ受信側)
デバイス
(データ送信側)
データ送信側のデータフォーマットと
SORACOM Funnel での「送信データ形式」で変化
<<PAYLOAD_DATA>>
SORACOM Funnel ― 活用メリット
HTTP / TCP / UDP 通信でクラウド活用が可能
• デバイスに SDK の準備や証明書等の更新運用が不要
• デバイス実機が無くとも nc や curl にてクラウド側開発を進めることが可能
クラウドへの接続情報を SORACOM Funnel で管理
• デバイスに鍵など接続情報を保管するセキュアストレージや更新運用が不要
タイムスタンプを SORACOM Funnel で付与
• デバイスに RTC 等のモジュールが不要
IMSI や IMEI を SORACOM Funnel で付与
• デバイスにユニーク ID の埋め込みが不要
SORACOM Funnel クラウドサービス
(データ受信側)
SORACOM Funnel ― 対応済みサービス
2018年2月現在
Partner Hosted Adapter
― パートナーによって提供される SORACOM Funnel アダプタ
モバイルアプリ開発
データ可視化BIツールIoTアプリケーション
バックエンドサービス
ストリームデータ処理エンジン
ノンプログラミングデータ連携
リアルタイム大規模データ分析基盤
AWS IoT Core Amazon Kinesis
Data Streams
Amazon Kinesis
Data Firehose
Azure
Event Hubs
Google
Cloud Pub/Sub
クラウド側アーキテクチャ例 ― AWS
Amazon
Elasticsearch Service
Amazon Athena
Amazon
QuickSight
Amazon S3
AWS IoT Core
https://d1.awsstatic.com/events/jp/2017/summit/slide/D3T5-8.pdf
Amazon Kinesis
Data Firehose
SORACOM
Funnel
ダウンロード
クラウド側アーキテクチャ例 ― Azure
SQL Database
Event Hubs
https://docs.microsoft.com/ja-jp/azure/stream-analytics/stream-analytics-real-time-event-processing-reference-architecture
Stream AnalyticsSORACOM
Funnel
ダウンロード
Blog Storage
Power BI
HDInsight
クラウド側アーキテクチャ例 ― GCP
Cloud
BigQuery
Cloud
Pub/Sub
https://cloud.google.com/dataflow/?hl=ja
Cloud
Dataflow
SORACOM
Funnel
ダウンロード
Cloud Storage
Data Studio
パートナー提供 SaaS の活用
SORACOM Funnel 対応アダプタ
SORACOM
Funnel 目的に合った SaaS で
構築の手間を軽減
モバイルアプリ開発
データ可視化BIツール
IoTアプリケーション
バックエンドサービス
ストリームデータ処理エンジン
ノンプログラミングデータ連携
リアルタイム大規模データ分析基盤
SORACOM Beam ― 対応サービス
AWS IoT Core
Google
Cloud IoT Core
2018年2月現在
PubNub
MQTT
Mosquitto
Standard MQTT Broker
HTTP
• HTTP → HTTP(S)
• Webサイト
L4 プロトコル
• TCP → HTTP(S)
• UDP → HTTP(S)
• TCP → TCP(S)
Amazon MQ
Azure IoT Hub
SORACOM Beam 設定の様子と
検証用 Web アプリケーション
<?php
$fp = fopen('php://stdout', 'w');
fprintf($fp, "---¥n");
fprintf($fp, print_r($_SERVER, true));
fprintf($fp, "---¥n");
fprintf($fp, file_get_contents('php://input'));
fprintf($fp, "¥n---¥n");
echo "This is traditional web system.¥n";
SORACOM Beam 変換の様子
$ echo -ne "hello beam via tcp" | nc beam.soracom.io 23080
---
Array
(
[SERVER_SOFTWARE] => PHP 5.4.16 Development Server
[SERVER_PROTOCOL] => HTTP/1.1
[SERVER_NAME] => 0.0.0.0
[SERVER_PORT] => 8000
[REQUEST_URI] => /index.php
[REQUEST_METHOD] => POST
[SCRIPT_NAME] => /index.php
[PHP_SELF] => /index.php
[HTTP_USER_AGENT] => SORACOM Beam
[HTTP_X_SORACOM_IMEI] => 866XXXXXXXXXXX6
[HTTP_HOST] => ec2-XX.us-west-2.compute.amazonaws.com:8000
[HTTP_ACCEPT] => application/json
[HTTP_CONTENT_TYPE] => application/json
[HTTP_CONTENT_LENGTH] => 38
[HTTP_CONNECTION] => close
[REQUEST_TIME_FLOAT] => 1519568380.8614
[REQUEST_TIME] => 1519568380
)
---
{"payload":"aGVsbG8gYmVhbSB2aWEgdGNw"}
---
$ curl -d "Hello Beam via HTTP" http://beam.soracom.io:8888/entrypoint
---
Array
(
[SERVER_SOFTWARE] => PHP 5.4.16 Development Server
[SERVER_PROTOCOL] => HTTP/1.1
[SERVER_NAME] => 0.0.0.0
[SERVER_PORT] => 8000
[REQUEST_URI] => /index.php
[REQUEST_METHOD] => POST
[SCRIPT_NAME] => /index.php
[PHP_SELF] => /index.php
[HTTP_X_SORACOM_IMSI] => 440XXXXXXXXXXX3
[HTTP_CONTENT_TYPE] => application/x-www-form-urlencoded
[HTTP_CONTENT_LENGTH] => 19
[HTTP_ACCEPT] => */*
[HTTP_USER_AGENT] => curl/7.47.0
[HTTP_HOST] => ec2-XX.us-west-2.compute.amazonaws.com:8000
[HTTP_CONNECTION] => close
[REQUEST_TIME_FLOAT] => 1519568549.4837
[REQUEST_TIME] => 1519568549
)
---
Hello Beam via HTTP
---
SORACOM Beam SRC アドレス固定機能
《VPG 固定グローバルIPアドレスオプション》
アプリケーションに手を入れることなく
ルータ等のACL (Access Control List) で
アクセス制御可能
SORACOM Beam 署名ヘッダ機能
事前共有鍵
(ユーザーの任意な文字列)
SORACOM Beam アプリケーションサーバ
IMSI や IMEI 等と 事前共有鍵で
SORACOM_SIGNATURE を生成
HTTP_X_SORACOM_IMSI
= 440XXXXXXXXXXX
HTTP_X_SORACOM_SIGNATURE
= ccc25948040.....4becf5b1 送られてきた IMSI や IMEI などと
事前共有鍵で、送られてきた
SORACOM_SIGNATUREを検証
認証情報ストアへ
あらかじめ設定
ペイロードの安全性検証が可能
デバイス運用の課題
パラメータや動作モード等を
ファームウェア内に組み込む
ファームウェアの
書き換えが必要
まだ一般的で無い
OTA (Over the Air)
費用が掛かる
現地作業
Cloud DI パターン
DI = Dependency Injection; 個別情報の注入
http://en.clouddesignpattern.org/index.php/CDP:Cloud_DI%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3
Device DI パターン
起動
IMSI に紐づいた
メタデータを読み込み
SORACOM Air メタデータサービス
Device DI パターン 実装
HTTP でメタデータを取得
グローバル変数に格納
パラメータとして利用
#ソラコムサンタ
ntp.soracom.io
https://blog.soracom.jp/blog/2017/12/24/soracom-santa/
#ソラコムサンタ 2017年の実績
https://qiita.com/ma2shita/items/37d1c7217c71b6e0f978
#ソラコムサンタ 2017年の実績
SIM (subscriber) を検索する
https://dev.soracom.io/jp/start/subscriber_search/
https://blog.soracom.jp/blog/2017/12/24/soracom-santa/
#ソラコムサンタ 2017年の実績
https://blog.soracom.jp/blog/2017/12/24/soracom-santa/
Private Garden
https://dev.soracom.io/jp/docs/private_garden/
Private Garden 機能
インターネット
SORACOM Beam
beam.soracom.io
SORACOM Funnel
funnel.soracom.io
SORACOM harvest
harvest.soracom.io
Private Garden VPG
通常はインターネットに出られる
Private Garden VPG に所属する SIM は
SORACOM Beam / Funnel / Harvest にのみ、アクセスできる
※インターネットへ直接出られなくなる
設定ミスなど
想定外の通信を防止
#ソラコムサンタ
季節外れだろうと、絶賛募集中!
SPS認定済パートナー (2018年1月 現在)
SORACOMの願い
クラウド ⇒ 多くのビジネス、Webサービス
SORACOM ⇒ 多くのIoTビジネス、システム
たくさんの
IoTプレイヤーが生まれますように
世界中のヒトとモノをつなげ
共鳴する社会へ

SORACOM UG 信州 #3 | About SORACOM & Updates