新サービス 「SORACOM Orbit」- IoT通信経路でデバイスとクラウドの差分を吸収 - / SORACOM Orbit

新サービス 「SORACOM Orbit」- IoT通信経路でデバイスとクラウドの差分を吸収 - / SORACOM Orbit

株式会社ソラコム主催 SORACOM Discovery 2020 ONLINEにて発表された新サービス、IoTデバイスとクラウド間の通信経路上で データ処理プログラムを実行できる​「SORACOM Orbit」​の詳細をご説明しています。

7cd783377515bdf8207062840b7b2f4e?s=128

SORACOM

July 14, 2020
Tweet

Transcript

  1. インライン プロセッシング サービス SORACOM Orbit IoT デバイスとクラウドの間の通信経路上で双方向のデータ処理を実現 株式会社ソラコム プリンシパル ソフトウェア

    エンジニア 小熊 崇 @ogu
  2. 目次 • IoT データ通信の困りごと:データフォーマットの不一致 • SORACOM Orbit とは • SORACOM

    Orbit の使い方 • デモ • まとめ
  3. IoT データ通信の困りごと • データフォーマットの不一致 • デバイスはバイナリデータを送りたい でもサーバーは JSON で受け取りたい どちらかのプログラムを変更できればフォーマットを一致させられるけど…

    どちらの変更も難しい場合があります。
  4. SORACOM Air バイナリパーサー機能 σʔλసૹࢧԉ 403"$0.#FBN Ϋϥ΢υϦιʔεΞμϓλ 403"$0.'VOOFM σʔλऩूɾ஝ੵ 403"$0.)BSWFTU %BUB

    *P5޲͚σʔλ௨৴αʔϏε 403"$0."JS όΠφϦύʔαʔػೳ σʔλΛύʔε σʔλॲཧ ʢσίʔυɺ࢛ଇԋࢉʣ ΧελϜϑΥʔϚοτΛ ෇༩ͯ͠ૹ৴ { "battery": 54, "latitude": 35.652748, "longitude": 139.750827 } όΠφϦσʔλΛૹ৴ 0x1A2B... Ϋϥ΢υͰॲཧ͠΍͍͢ ϑΥʔϚοτ +40/ ΁ σʔλαΠζΛ࡟ݮ Ϋϥ΢υϑΝϯΫγϣϯ 403"$0.'VOL
  5. より高度な変換処理がしたい! • デバイスが複数種類のデータを送っ てくるので、ヘッダーなどを見て解釈 を変えたい • デバイスが送ってくる CSV を JSON

    に変換したい • 下り方向のデータも変換したい
  6. 回避策 SORACOM Funk 経由で AWS Lambda を呼び出して処理 ユーザーコード (変換処理) AWS

    Lambda SORACOM Funk IoT デバイス サーバー • いろいろなプログラミング言語を使える • 高度な処理を自由に書ける • ダウンリンクも処理できる
  7. Harvest や Lagoon を使いたい! • Harvest や Lagoon を使ってデータを 確認したいけど、Harvest

    にデータを 入れる前にちょっとした変換処理を行 いたい • センサーデータの単位の変換 • SIM のメタデータを追加
  8. 回避策 SORACOM Funk 経由で AWS Lambda を呼び出して処理 その後 Inventory を使って

    Harvest にデータ投入 SORACOM Inventory SORACOM Funk SORACOM Harvest SORACOM Lagoon AWS Lambda IoT デバイス 外部にサーバー等を用意しなくてすむ お手軽さが Harvest / Lagoon の良さですが、 これだとちょっと大変… ユーザーコード (変換処理)
  9. SORACOM Orbit がお悩みを解決! SORACOM プラットフォームの通信経路上で、お客様が定義したデータ変換処理プログラ ムを実行 IoT デバイス Unified Endpoint

    ユーザーコード (変換処理) SORACOM Funk SORACOM Funnel SORACOM Beam SORACOM Orbit SORACOM Lagoon SORACOM Harvest
  10. SORACOM Orbit のメリット • バイナリ以外の任意のデータを処理できる • 外部に変換サーバー等を用意しなくて良い • Harvest 等に連携しやすい

    • ダウンリンクのデータにも処理を行える • SIM のメタデータを利用可能
  11. 変換プログラムの書き方 • 変換プログラムは WebAssembly (WASM) のモジュー ルにコンパイルしてアップロード • 詳しくは SORACOM

    Orbit 開発者ガイド https://dev.soracom.io/jp/orbit/what-is-orbit/
  12. WebAssembly (WASM) とは? W3C が策定した、仮想マシンと命令セットの仕様 Web ブラウザ上でアプリケーションをより高速に 実行するために作られた → 汎用的なので

    Web ブラウザだけでなく 一般的な処理のために利用可能
  13. WASM モジュールとは? WASM 処理系で実行可能なファイル 一般的には JIT でネイティブコードに変換後 実行されるので高速 Web ブラウザでの実行を想定してセキュリティも考慮

  14. WASM 対応言語は? 様々な言語が WASM モジュールの出力に対応 https://github.com/appcypher/awesome-wasm-langs "Language-agnostic"

  15. WASM 対応言語は? 注意点: Orbit で実行可能なのは Non-Web Embedding 環境向けに出力された形式。Standalone などとも呼ばれる。 JS

    環境 / Web 環境向けの出力にのみ対応している言語がまだ一般的。 WASI 環境向けに出力した WASM モジュールは一部実行可能。(外界と作用するための機能は使えない) WASM モジュール Node.js / Web ブラウザ WASM モジュール Windows / macOS / Linux WASM モジュール 独自ホスティング 環境 JS 環境 / Web 環境 WASI 環境 Non-Web Embedding 環境 SORACOM Orbit
  16. SDK 提供言語 • AssemblyScript • TypeScript のサブセット • Rust •

    WASM との親和性の高い言語 • C/C++ • Emscripten というツールセットで WASM に対応 ※ 2020年7月現在
  17. サンプルプログラム(C/C++) SORACOM Lagoon SORACOM Harvest { "lat":35.000000, "lon":139.000000, "bat":3, "rs":4,

    "temp":16.0, "humi":32.4, "x":0.0, "y":-64.0, "z":-960.0, "type":0 } ユーザーコード (変換処理) SORACOM Orbit { "lat":35.000000, "lon":139.000000, "bat":3, "rs":4, "temp":16.0, "humi":32.4, "x":0.0, "y":-64.0, "z":-960.0, "type":0, "name":"oguのGPSマルチユニット", "imsi":"44010xxxxxxxxxx", "inside_area":1, "distance":0.123487 } GPS マルチユニット SORACOM Edition SIM のタグなどの メタ情報
  18. サンプルプログラム(C/C++)

  19. サンプルプログラムのビルド

  20. WASM モジュールのアップロード モジュールのアップロード先は Soralet(ソラレット) IoT デバイス Unified Endpoint ユーザーコード (変換処理)

    SORACOM Orbit ID: hello-soralet v1 v2
  21. WASM モジュールのアップロード方法 • ユーザーコンソール • CLI • Visual Studio Code

    Extension https://dev.soracom.io/jp/orbit/deployment/
  22. WASM モジュールのアップロードとテスト実行

  23. WASM モジュールの動作確認(ユーザーコンソール)

  24. Funk/Orbit/バイナリパーサー 機能比較 SORACOM Funk + AWS Lambda SORACOM Orbit バイナリパーサー

    対応する通信 SORACOM Air (SIM, Sigfox, LoRa WAN, SMS, USSD) SORACOM Air(SIM のみ)※1 SORACOM Air (SIM, Sigfox, LoRa WAN, SMS, USSD) 対応言語 Java, Go, PowerShell, Node.js, C#, Python, Ruby, Docker, 独自 Runtime AssemblyScript, Rust, C/C++ ※2 独自 DSL ダウンリンク対応 Yes Yes No 他の SORACOM サービスとの連携 ※3 Yes Yes 処理中のインター ネットアクセス Yes No No ※1 - 2020 年 7 月現在。今後 Sigfox、LoRaWAN 等にも順次対応予定 ※2 - 2020 年 7 月現在。今後対応言語拡充予定 ※3 - SORACOM Inventory のデバイスとして Harvest にデータを投入することは可能
  25. フィードバックお待ちしております • お使いいただいた感想 • 機能要望 • 技術的質問 : なんでも結構です! SORACOM

    プラットフォームは 皆様からのフィードバックを元に 成長・進化していきます!
  26. 世界中のヒトとモノをつなげ 共鳴する社会へ