可能性は無限大!SORACOM Orbit 入門 /SORACOM Orbit-UG Online #1

7cd783377515bdf8207062840b7b2f4e?s=47 SORACOM
September 24, 2020

可能性は無限大!SORACOM Orbit 入門 /SORACOM Orbit-UG Online #1

2020年9月24日(木)SORACOM UG Online #1

可能性は無限大!SORACOM Orbit 入門
株式会社ソラコム プリンシパルエンジニア 小熊 崇/ogu

7cd783377515bdf8207062840b7b2f4e?s=128

SORACOM

September 24, 2020
Tweet

Transcript

  1. 可能性は無限大! SORACOM Orbit 入門 2020.09.24 SORACOM UG Online #1 株式会社ソラコム

    プリンシパル ソフトウェア エンジニア 小熊 崇 @ogu
  2. 自己紹介 小熊 崇(おぐま たかし)- @ogu • プリンシパルソフトウェアエンジニア • SORACOM Orbit

    開発者 • AT コマンドの本を書きました: SORACOM で学ぶ AT コマンド入門 https://zenn.dev/bearmini/books/12ebf8331d6f9ea1d90d
  3. 目次 1. SORACOM Orbit とは? 2. なぜ SORACOM Orbit ?

    3. SORACOM Orbit の使い方
  4. SORACOM Orbit とは?

  5. インライン プロセッシング サービス SORACOM プラットフォームの通信経路上 (=インライン)で お客様が定義したデータ変換処理(=プロセッシング)プログラムを実行 IoT デバイス Unified

    Endpoint ユーザーコード (変換処理) SORACOM Funk SORACOM Funnel SORACOM Beam SORACOM Orbit SORACOM Lagoon SORACOM Harvest
  6. インライン プロセッシング・・・? όΠφϦͰ ૹ৴͍ͨ͠ 0x1A2B... IoT デバイス σʔλ௨৴ྔΛ ࡟ݮͰ͖Δ サーバー

    { "battery": 54, "latitude": 35.652748, "longitude": 139.750827 } +40/ Ͱ ड৴͍ͨ͠ Ϋϥ΢υͰ ॲཧ͠΍͍͢
  7. インライン プロセッシング・・・! όΠφϦͰ ૹ৴͍ͨ͠ 0x1A2B... IoT デバイス σʔλ௨৴ྔΛ ࡟ݮͰ͖Δ サーバー

    { "battery": 54, "latitude": 35.652748, "longitude": 139.750827 } +40/ Ͱ ड৴͍ͨ͠ Ϋϥ΢υͰ ॲཧ͠΍͍͢ ユーザーコード (変換処理) SORACOM Orbit
  8. バイナリパーサーとどう違うの? バイナリパーサー • ◦ シンプル • ◦ すぐに使える • ?

    固定のフォーマットにしか対応できない • ? 入力形式はバイナリのみ • ? 出力形式は JSON のみ • ? アップリンク方向のデータのみ変換できる SORACOM Orbit • ◦ 好きな言語で自由に処理を書ける • ◦ ソラコム公式の開発環境が用意されている • ◦ ある程度複雑なフォーマットでも対応可能 • ◦ バイナリ以外のデータにも対応 • ◦ JSON 以外の出力も可能 • ◦ ダウンリンクのデータも変換可能 • ◦ バイナリパーサーと組み合わせての利用も可能
  9. バイナリだけじゃない 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 のタグなどの メタ情報
  10. Funk + FaaS とどう違うの? SORACOM Funk + FaaS • ◦

    ほぼなんでもできる • ◦ クラウドサービスとの連携 • ? Harvest や Lagoon との連携にはひと工夫必要 SORACOM Orbit • ◦ Orbit の中に閉じた処理であれば何でもできる • ◦ SIM のメタデータ等を活用できる • ◦ Harvest や Lagoon に直結
  11. Funk + FaaS からの Harvest / Lagoon SORACOM Funk 経由で

    AWS Lambda を呼び出して処理 その後 Inventory を使って Harvest にデータ投入 SORACOM Inventory SORACOM Funk SORACOM Harvest SORACOM Lagoon AWS Lambda IoT デバイス 外部にサーバー等を用意しなくてすむお手軽さが Harvest / Lagoon の良さですが、 これだとちょっと大変… ユーザーコード (変換処理)
  12. Harvest / Lagoon との連携 ちょっとだけデータの形式を変えて Harvest に入れたい場合に シンプルに実現可能 SORACOM Orbit

    SORACOM Harvest SORACOM Lagoon IoT デバイス ユーザーコード (変換処理) Unified Endpoint
  13. なぜ SORACOM Orbit ?

  14. それは2017年にさかのぼります LPWA はデータサイズが 小さいとはいえ、データの 一部を読んで場合分けし たいことはありそうだよ なぁ・・・ ogu LPWA のバイナリデータを

    かんたんに JSON に変換できる バイナリパーサーを作りましょう! 記法はこんな感じで: status:0:uint:2:7 battery:0:uint:6:5:*2 latitude:5:float:32 longitude:1:float:32 altitude:7:uint:16:/10-100 いいね!
  15. ogu DSL 記法は便利だけど、ソラコム独自の記法をユーザーのみなさまに覚えてもらうのは心苦しい・・・ 場合分けなどの複雑な機能を持たせたら、なおさら学習コストが高まる・・・ 複雑な DSL を作っちゃうとソラコム側でのメンテナンスコストも・・・ nginx とかみたいに Lua

    を使えばいいのかな・・・ Lua も馴染みがない人が多いよなぁ・・・ 今後廃れちゃうかもしれないしな・・・ 任意のプログラミング言語をサポートできるのが理想だけど、 そうするためにはユーザーさんの書いたネイティブコードを動かせるようにしたり、 Java VM みたいなものを動かしてその上でユーザーさんのコードを動かせるように する必要がありそう。そうなるとセキュリティが・・・ https://blog.soracom.com/ja-jp/2020/07/14/soracom-orbit/ 新サービス SORACOM Orbit のご紹介(&開発秘話)
  16. 時は流れて2019年

  17. WebAssembly のいいところ • いろいろな言語で書いたコードを Wasm 形式に出力できる • お客様は使い慣れた言語を使えるので学習コスト:低 • ソラコム側は

    Wasm ランタイムのみサポートすればよいので メンテナンスコスト:低 • 言語の流行に左右されるリスク:低 • セキュア • もともと Web 向けに開発された • 軽量・高速
  18. WebAssembly で万事解決! όΠφϦͰ ૹ৴͍ͨ͠ 0x1A2B... IoT デバイス σʔλ௨৴ྔΛ ࡟ݮͰ͖Δ サーバー

    { "battery": 54, "latitude": 35.652748, "longitude": 139.750827 } +40/ Ͱ ड৴͍ͨ͠ Ϋϥ΢υͰ ॲཧ͠΍͍͢ ユーザーコード (変換処理) SORACOM Orbit
  19. SORACOM Orbit の使い方

  20. SORACOM Orbit の使い方 1. 対応言語で変換処理プログラムを書く 2. Wasm モジュールにコンパイル 3. アップロード

    4. テスト 5. 本番投入! 詳しくは SORACOM Orbit 開発者ガイド https://dev.soracom.io/jp/orbit/what-is-orbit/
  21. SDK 提供言語 • AssemblyScript • TypeScript のサブセット • Rust •

    WASM との親和性の高い言語 • C/C++ • Emscripten というツールセットで WASM に対応 • TinyGo • Go 言語のサブセット ※ 2020年9月現在 New!
  22. 開発は VS Code を使ってめっちゃ簡単 • Dev container • 開発環境(コンパイラ等)インストール済・設定済 •

    Orbit extension • Soralet の管理 • アップロード • テスト実行 • ログ確認
  23. でも、お高いんでしょう・・・? 無料利用枠 • 基本料金 1 SIM 分 • リクエスト 10,000

    回分 くわしくは SORACOM Orbit のご利用料金 https://soracom.jp/services/orbit/price/
  24. API Sandbox も Orbit をサポート /v1/soralets 以下の API を実行できるようになりました •

    Soralet のアップロード • テスト実行 • ログの確認 etc. … New!
  25. サンプルプログラム • 各言語用の SDK 内に同梱 • SORACOM IoT DIY レシピ

    • Meitrack T366による車両トラッキング https://soracom.github.io/iot-recipes/vehicle-tracking-by-meitrack-t366 • SORACOM Summer Challenge 2020 • 1万円で作る SORACOM LTE-M Button Plusで冷蔵庫を用いた見守りシステム https://qiita.com/reomaru7/items/8276ab4dee1c8bdc1183 • Qiita • SoracomOrbit で検索
  26. Orbit でできることのほんの一例 • デバイスからは CSV を送信、JSON に変換 • 入出力のフォーマットは自由 •

    LTE-M button の Click type を type 別にカウント • デバイスからの GPS 座標と、タグに設定しておいた中心座標から距離を 計算しジオフェンシング • SIM のタグから設定値を読み込んで処理に利用可 • デバイスやサーバーサイドのバージョン違いを吸収 :
  27. 無限大の可能性 感じていただけましたか? 特に Harvest / Lagoon との相性が最高なので オススメです! みなさまからのフィードバックお待ちしております!

  28. 世界中のヒトとモノをつなげ 共鳴する社会へ