Soracom

Users

ドキュメント

WASM モジュール開発環境をセットアップする

SORACOM Orbit で動作する WASM モジュールを開発するには、WASM 形式でのバイナリの出力に対応したプログラミング言語であれば基本的にどれでもお使いいただけます。

しかしながら WASM 形式でのバイナリ出力を行う開発環境はまだそれほど一般的ではないと思われますので、セットアップの手間を軽減するため、あらかじめ各種コンパイラや SDK などをインストール済みの開発環境用 Docker コンテナ (以下、Development container) を参照として提供しています。

このページでは、Development container と Visual Studio Code (以下、VS Code) を組み合わせることでスムーズに Orbit 用の WASM モジュールの開発を始めていただける手順を記載します。

VS Code と Development container を組み合わせた開発環境の構築については、Developing inside a Container でも説明されています。

必要なソフトウェアをインストールする

以下のソフトウェアを、開発用 PC にインストールしてください。インストール方法はそれぞれの Web サイトを参照してください。

このページの説明について、ソラコムでは以下の環境で動作を確認しています。

  • OS: macOS Monterey 12.4 (21F79)
  • Visual Studio Code: 1.67.0
  • Docker: Rancher Desktop 1.3.0
Windows コンテナーには対応していません

Windows でご利用の場合はターゲットを Linux コンテナーに変更してください。参照: Windows 10 上での Linux コンテナーのセットアップ | Microsoft Docs

SAM ユーザーを作成する

WASM モジュールを開発 / テストするための SAM ユーザーを作成し、認証キーを生成します。

  1. SAM ユーザーを作成 します。

  2. SAM ユーザーの認証設定 の手順に従って、認証キーを生成します。

    この認証キーは、SORACOM CLI をインストールする ときに使用します。

  3. SAM ユーザーの権限設定 の手順に従って、以下の権限を設定します。

    {
      "statements": [
        {
          "effect": "allow",
          "api": [
            "Soralet:*",
            "Group:listGroups",
            "Group:getGroup"
          ]
        }
      ]
    }
    

SORACOM CLI をインストールする

SORACOM CLI をインストールする の手順に従って、開発用 PC に SORACOM CLI をインストールします。インストールするときは、以下の点に注意してください。

  • カバレッジタイプは、Orbit を利用する IoT SIM のカバレッジタイプを指定します。たとえば、plan01s の IoT SIM で Orbit を利用する場合は、グローバルカバレッジを選択します。
  • 認証情報は、SAM ユーザーを作成する で生成した認証キー (認証キー ID および認証キーシークレット) を使用します。
Orbit 用のプロファイルを保存することもできます

すでに別の SAM ユーザーの認証情報で SORACOM CLI を利用している場合は、以下のように --profile orbit のように指定すると、Orbit 用のプロファイルを作成できます。

$ LANG=ja soracom configure --profile orbit

Orbit 用のプロファイルを保存した場合は、SORACOM CLI を呼び出すときに --profile orbit のようにプロファイルを指定してください。

開発環境をインストールする

WASM モジュール開発環境をダウンロードして展開する

開発環境をアップデートするには

開発環境を新しいバージョンにアップデートする場合は、新しいディレクトリに展開してください。

  1. orbit-development-environment.zip (SHA256 チェックサム) をダウンロードして、正しくダウンロードできたことを確認します。

    $ wget https://s3-ap-northeast-1.amazonaws.com/soracom-files/orbit/orbit-development-environment-2022-05.zip
    $ wget https://s3-ap-northeast-1.amazonaws.com/soracom-files/orbit/orbit-development-environment-2022-05.zip.sha256
    $ sha256sum -c orbit-development-environment-2022-05.zip.sha256
    
    orbit-development-environment-2022-05.zip: OK
    
  2. 任意のディレクトリに展開します。

    $ unzip orbit-development-environment-2022-05.zip -d orbit-development-environment-2022-05
    

Development container を準備する

WASM モジュール開発環境には、プログラミング言語ごとにディレクトリが用意されています。

  • orbit-development-environment-2022-05/ (展開したディレクトリ)
    • assemblyscript/
    • c/
    • rust/
    • tinygo/

使用するプログラミング言語のディレクトリを VS Code で開くと、自動的に Development continer が開きます。Development continer には、WASM モジュールの開発に必要なツールが用意されています。ここでは、初めて Development container を開く手順を説明します。

  1. VS Code を起動して、[File][Open Folder...] の順にクリックし、WASM モジュールを開発する際に使用するプログラミング言語に応じて、assemblyscript/rust/c/tinygo/ ディレクトリ (フォルダ) を開きます。

    VS Code に WASM モジュール開発用の拡張機能がインストールされます

    既存の VS Code の動作に影響を与えずに起動する方法もあります。詳しくは、既存の VS Code の動作に影響を与えずに起動する を参照してください。

  2. Remote - Containers 拡張機能をインストールする確認画面が表示された場合は、[Install] をクリックします。

    拡張機能のインストールが正常に終了すると、フォルダを Development container で開き直すか確認する画面が表示されます。確認する画面が表示されない場合は、[File][Close Folder] の順にクリックしてフォルダを閉じてから、[File][Open Folder...] の順にクリックしてフォルダを開き直してください。

    Remote - Conainers 拡張機能をインストールしてください

    拡張機能の推奨機能を無効にしている場合 (VS Code で "extensions.ignoreRecommendations": true を設定している場合) は確認画面が表示されません。別途 Remote - Containers 拡張機能をインストールしてください。

  3. [Reopen in Container] をクリックします。

    Development container の作成が開始されます。進捗は、Starting Dev Container (show log): Building image のように表示されます。

    Development container の作成が終了すると、Development container が起動して、VS Code の左下に Dev Conatiner: SORACOM Orbit Development Container と表示されます。

Windows で Development container の起動に失敗する場合があります

Windows で環境変数 HOMEUSERPROFILE が定義されていると、Development container の起動に失敗する場合があります。

.devcontainer/devcontainer.jsonsource=${localEnv:HOME}${localEnv:USERPROFILE}/.soracom.soracom フォルダが存在するパスに書き替えて、フォルダを開き直してください。

AssemblyScript で開発する場合の追加手順

AssemblyScript で WASM モジュールを開発する場合は、Development container が起動したら、以下のいずれかの方法で package.json に定義されている init スクリプトを実行してください。

Development container を使用せずに開発する場合は Node.js バージョン 14 をインストールしてください。

NPM Scripts ビューを開き init スクリプトを実行する

  1. VS Code の Explorer を開き、[…][NPM Scripts] の順にクリックします。

  2. [NPM SCRIPTS][package.json][init][Run] をクリックします。

    init スクリプトが実行され、以下のように表示されます。

    > Executing task: npm run init <
    
    
    > orbit-development-environment-assemblyscript@0.1.0 init /workspace/assemblyscript
    > npm ci
    
    added 620 packages in 13.894s
    
    Terminal will be reused by tasks, press any key to close it.
    

統合ターミナルを開き npm run init コマンドを実行する

  1. VS Code で [Terminal][New Terminal] の順にクリックします。

  2. init スクリプトを実行します。

    # npm run init
    

Tips

既存の VS Code の動作に影響を与えずに起動する

以下のようにユーザーディレクトリと拡張機能ディレクトリを新規に作成し、VS Code の起動オプションとして指定すると、既存の VS Code の動作に影響を与えずに起動できます。

$ code --user-data-dir vscode-user-data-dir --extensions-dir vscode-extensions-dir assemblyscript

この方法で起動するためのシェルスクリプト (launch.example) が用意されています。以下の手順で使用します。

  1. launch.example をコピーします。

    $ cp launch.example launch
    
  2. VS Code で launch を開きます。

    $ code launch
    
  3. launch に、認証キー、カバレッジタイプ、および VS Code の設定を保存するディレクトリを指定します。

    項目設定
    SORACOM_AUTHKEY_IDSAM ユーザーを作成する で生成した認証キー ID を指定します。(*1)
    SORACOM_AUTHKEY_SECRETSAM ユーザーを作成する で生成した認証キーシークレットを指定します。(*1)
    SORACOM_COVERAGEIoT SIM のカバレッジタイプ (jp または g) を指定します。(*1)
    TARGET変更しないでください。
    ROOTVS Code の設定を保存するディレクトリを指定します。
  4. launch を利用して、開発環境を開きます。

    $ ./launch ${directory}
    

    ${directory} には、assemblyscript/rust/c/tinygo/ のいずれかを指定します。

    AssemblyScript を利用して開発する場合の例:

    $ ./launch assemblyscript/
    
macOS で code コマンドを実行する際は PATH 環境変数の設定が必要です
Launching from the command line を参照してください。
  • OS によっては、それぞれのディレクトリの絶対パスが 103 文字を超えると、VS Code が起動しない場合があります。
  • Windows Subsystem for Linux (WSL) 2 上の VS Code では、上記のオプションはサポートされていません。

ホスト側のディレクトリを Development container にマウントする

.devcontainer/devcontainer.json を編集すると、ホスト側のディレクトリを Development container にマウントできます。

たとえば Rust の場合は、以下のようにホスト側 PC の ~/.cargo ディレクトリをマウントするとビルドをスピードアップできます。

{
  "name": "SORACOM Orbit Development Container",
  ...
  "mounts": [
    "source=${localEnv:HOME}${localEnv:USERPROFILE}/.cargo/git,target=/workspaces/.cargo/git,type=bind,consistency=cached",
    "source=${localEnv:HOME}${localEnv:USERPROFILE}/.cargo/registry,target=/workspaces/.cargo/registry,type=bind,consistency=cached"
  ]
}

詳細は VS Code のドキュメント Advanced Container Configuration を参照してください。