MENU

Soracom

Users

SORACOM プラットフォームへのデプロイとテスト

デプロイ用 WASM モジュールのビルド

以下のいずれかの方法で最適化済み WASM モジュールをビルドしてください。

  • NPM Scripts ビューを開き build:optimized を実行
  • 統合ターミナルを開き npm run build:optimized コマンドを実行
    • build/soralet-optimized.wasm が生成されます
  • 統合ターミナルを開き cargo build --release コマンドを実行
    • target/wasm32-unknown-unknown/release/soralet.wasm が生成されます
  • 統合ターミナルを開き make release コマンドを実行
    • build/soralet-optimized.wasm が生成されます
  • 統合ターミナルを開き make release コマンドを実行
    • build/soralet-optimized.wasm が生成されます

ビルドした環境やプログラムの内容によっては WASM モジュールのサイズが大きくなることがあります。4 MB 以上の WASM モジュールはアップロードすることができません。Development container にインストールされている WebAssembly/wabt: The WebAssembly Binary Toolkit に含まれる WABT(1) コマンドを利用するとサイズを削減できます。
SORACOM API Sandbox を使用して本番環境に影響を与えずにデプロイとテストができます。Sandbox 用オペレーターの作成方法は SORACOM API Sandbox 利用ガイド を参照してください。vscode で Sandbox を利用する場合は Visual Studio Code 拡張機能における SORACOM API Sandbox の利用 を参照し設定してください。

WASM モジュールのアップロード

Orbit で使用する WASM モジュールをアップロードするために、その入れ物である Soralet (ソラレット) を作成します。

ユーザーコンソール 左上 Menu ボタン → SORACOM OrbitSoralet 管理から新規作成ボタンをクリックします。

Soralet の作成

ダイアログが表示されますので Soralet ID と概要(オプション)を入力し 作成 ボタンをクリックます。使用できる文字と長さは 制限事項 を参照してください。

Soralet の作成ダイアログ

Soralet が作成されると「新しい WASM のアップロード」ボタンからアップロードできます。

WASM モジュールのアップロード アップロードするファイルの選択

Soralet (WASM モジュールのアップロード先) を作成

soralets create コマンドで --soralet-id オプションに任意の ID を指定し、WASM モジュールをアップロードする先の入れ物となる “Soralet” を作成します。

$ soracom soralets create --soralet-id my-soralet

引数

  • soralet-id: Soralet ID を指定します。使用できる文字と長さは 制限事項 を参照してください。

Soralet が作成されたことを確認

soralets get コマンドで Soralet が作成されたことを確認します。

$ soracom soralets get --soralet-id my-soralet
{
        "createdTime": 1592491058519,
        "description": "",
        "operatorId": "OP0000000000",
        "soraletId": "my-soralet",
        "updatedTime": 1592491058519
}

引数

  • soralet-id: Soralet ID を指定します。

WASM モジュールをアップロード

soralets upload コマンドで Soralet にデプロイ用 WASM モジュールをアップロードします。以下の例では example.wasm ファイルをアップロードしていますが、任意の WASM ファイルを指定できます。

$ soracom soralets upload --soralet-id my-soralet \
    --content-type application/octet-stream \
    --body @example.wasm
{
        "createdTime": 1592491690521,
        "operatorId": "OP0000000000",
        "soraletId": "my-soralet",
        "srn": "srn:soracom:OP0000000000:jp:Soralet:my-soralet/1",
        "version": 1
}

引数

  • soralet-id: Soralet ID を指定します。
  • content-type: application/octet-stream を指定してください。
  • body: アップロードするファイルを @ に続けて指定します。

同じ Soralet に対して複数回 WASM モジュールをアップロードすると srn (SORACOM Resource Name。リファレンス参照) の version (バージョン番号) 部分がインクリメントされます。

$ soracom soralets upload --soralet-id my-soralet \
    --content-type application/octet-stream \
    --body @example.wasm
{
        "createdTime": 1592491919049,
        "operatorId": "OP0000000000",
        "soraletId": "my-soralet",
        "srn": "srn:soracom:OP0000000000:jp:Soralet:my-soralet/2",
        "version": 2
}

soralet list-versions コマンドでアップロードされているバージョンを一覧できます。 size は WASM モジュールのサイズ、hash は SHA-512 のハッシュ文字列です。

$ soracom soralets list-versions --soralet-id my-soralet
[
        {
                "createdTime": 1592491690521,
                "hash": "0671a28cce494d6848bd5ba9c88d00070cfdc1bd8a47f8e9174c2eb178905279b90c06c6f1a7c8b3d0a9ffcd5bb3f508f46f3d83737c5f83db35b4eac29216ae",
                "operatorId": "OP0000000000",
                "size": 15684,
                "soraletId": "my-soralet",
                "srn": "srn:soracom:OP0000000000:jp:Soralet:my-soralet/1",
                "version": 1
        },
        {
                "createdTime": 1592491919049,
                "hash": "7f2a8b7b424267458f318a6959f1bf6e24e6384aeb9dd05c075510e5edff07e8a1660a22812cc02e57e8f5645417798916703b2bf5c10cb29e1538a6b0ecdd8a",
                "operatorId": "OP0000000000",
                "size": 31213,
                "soraletId": "my-soralet",
                "srn": "srn:soracom:OP0000000000:jp:Soralet:my-soralet/2",
                "version": 2
        }
]

引数

  • soralet-id: Soralet ID を指定します。
  1. Activity Bar から SORACOM Orbit Tools ビューを開きます。
  2. Soralets パネルのタイトルバーにある Create Soralet ボタンをクリックします。
  3. Soralet ID を入力し Enter を押します。
  4. Description を入力し Enter を押します。概要が不要な場合は空のまま Enter を押してください。
  5. Soralets パネルが更新され新しい Soralet が表示されます。
  6. Soralet 右側の Upload new WASM ボタンをクリックします。
  7. ワークスペース内の WASM モジュールのパスを指定し OK をクリックします。
  8. Upload された WASM モジュールがバージョン番号、アップロードした日時とあわせて作成した Soralet 配下に表示されます。

WASM モジュールのテスト

実機で実行する前に SORACOM CLI あるいは vscode を使って SORACOM プラットフォーム上で動作確認できます。

soralets exec コマンドを使用してテストを実行します。以下のように引数とデータを渡します。

$ cat test.json
{
  "source": { "resourceType": "Subscriber", "resourceId": "295050919999999999" },
  "payload": "{\"value\":23.54,\"name\":\"sorao\"}" // body ではなく payload でデバイスからのデータを指定します
}
$ soracom soralets exec --soralet-id my-soralet \
    --version 2 \
    --direction uplink \
    --content-type application/json \
    --body @test.json

引数

  • soralet-id: Soralet ID を指定します。
  • version: Soralet バージョンを指定します。
  • direction: Soralet の実装に合わせて、Soralet を利用する経路 uplink / downlink を指定します。
  • content-type: 送信されるデータの Content Type を指定します。
  • body: @ の後にファイル名で入力データを指定します。JSON 形式でも指定できます。Soralet へ渡される情報はリファレンスの WASM モジュールへの入力 を参照してください(body ではなく payload と指定する必要があることに注意してください)。
バイナリデータを送信する場合は content-typeapplication/octet-stream に設定し payload に base64 エンコードした文字列として記載してください。
  1. Activity Bar から SORACOM Orbit Tools ビューを開きます。
  2. Soralets パネルからテスト対象のバージョンを含む Soralet を展開します。
  3. テスト対象のバージョン右側に表示される Test Soralet with data from a file ボタンをクリックします。
  4. テストデータとなる JSON ファイルのパスを指定し OK をクリックします。
  5. 実行結果が OUTPUT パネルに出力されます。
AssemblyScript をご利用の場合、スナップショットテストを実行後に tests/inputs/ ディレクトリに生成された JSON ファイルを利用できます。開発中のローカルでのテストケースと SORACOM プラットフォーム上で動作確認する際に同一のテストケースを利用できるため便利です。
vscode のコマンドパレットから SORACOM Orbit: Run Last Test を実行すると、最後に実行した Soralet バージョンと JSON ファイルを使ったテストを再実行できます。