MENU

Soracom

Users

WASM モジュール開発環境のセットアップ

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

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

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

Visual Studio Code と Development container を用いた開発について、詳しくは Developing inside a Container をご参照ください。

前提条件のインストール

以下のソフトウェアをインストールしてください。インストール方法はそれぞれの Web サイトをご確認ください。

上記のソフトウェアが稼動する環境であれば OS を問わず当ガイドがご利用いただけると考えられますが、お客様の環境によっては稼動しない可能性があります。ソラコムでは以下の環境で動作を確認しています。

  • OS: macOS Big Sur 11.3 (20E232)
  • Visual Studio Code: 1.56.2
  • Docker: Docker Desktop Community Edition 3.3.3 (64133) Stable Channel
Windows Container には対応していません。Windows でご利用の場合はターゲットを Linux Containers に変更してください。参照: Windows 10 上での Linux コンテナーのセットアップ | Microsoft Docs

SAM ユーザーの作成と SORACOM CLI のインストール

vscode や Development container で開発・設定・テストを行うため 、SAM ユーザーと SORACOM CLI をセットアップします。

アクセス管理 (SORACOM Access Management) を利用して SAM ユーザーを作成し認証キーを設定してください。SAM ユーザーには最低限以下の権限を付与してください。

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

続けて、 Getting Started: SORACOM CLI をインストールし SIM カードの一覧を取得する | SORACOM CLI 利用ガイド をを参照し、AuthKeyId と AuthKey による認証を設定してください。

SORACOM CLI の認証設定を実施し、ユーザーのホームディレクトリに .soracom ディレクトリが存在する状態で次のステップに進んでください。存在しない場合は vscode 起動時にエラーとなります。
Windows で環境変数 HOMEUSERPROFILE の 2 つが定義されていると起動に失敗する場合があります。.devcontainer/devcontainer.jsonsource=${localEnv:HOME}${localEnv:USERPROFILE}/.soracom 部分から .soracom ディレクトリが存在しない箇所(${localEnv:...})を削除してください。

開発環境のインストール

各言語共通

  1. orbit-development-environment.zip ( SHA256 チェックサム) を任意のディレクトリに展開します。過去のバージョンからアップデートする際は新しいディレクトリへ展開してください。
  2. 展開したディレクトリに各種プログラミング言語別の開発環境が用意されています。お好みのプログラミング言語に応じて assemblyscript/rust/c/tinygo ディレクトリを vscode で開いてください。(既存の環境に影響を与えない起動方法は以下 Tips セクション も参照してください。)
  3. vscode に Remote - Containers 拡張機能がインストールされていない場合、インストールするようプロンプトが表示されますので Install All をクリックしてください。拡張機能の推奨機能を無効にしている場合 ("extensions.ignoreRecommendations": true を設定している場合) はプロンプトが表示されませんので手動で Remote - Containers 拡張機能をインストールしてください。
  4. 拡張機能のインストールが正常に終了するとワークスペースを Development container で開くかプロンプトが表示されます。 Reopen in Container をクリックしてください。
  5. 開発環境用の Docker コンテナの作成が開始します(Starting Dev Container (show log): Building image のように進捗が表示されます)。完了までしばらく時間がかかるのでお待ちください。

AssemblyScript のみ

Development container の作成と起動が完了したら、以下のいずれかの方法で package.json に定義されている init スクリプトを実行してください。

  • NPM Scripts ビューを開き init を実行
  • 統合ターミナルを開き npm run init コマンドを実行

以下のような表示が確認できればインストールは終了です(NPM Scripts ビューからの実行例)。

> Executing task: npm run init <

> orbit-development-environment-assemblyscript@0.0.1 init /.../orbit-development-environment/assemblyscript
> npm ci

npm WARN prepare removing existing node_modules/ before installation
added 892 packages in 7.776s

Terminal will be reused by tasks, press any key to close it.

Tips

既存の vscode に影響を与えず起動する

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

$ mkdir vscode-{data,extensions}-dir
$ code --user-data-dir vscode-user-data-dir --extensions-dir vscode-extensions-dir assemblyscript

macOS で code コマンドを有効にするためには PATH 環境変数の設定が必要な場合があります。 Running Visual Studio Code on macOS を参照し設定してください。

launch.example として上記の起動を支援する簡単なシェルスクリプトを用意していますので適宜ご利用ください。

$ cp launch.example launch
$ vi launch # 環境変数や vscode の設定を保存するディレクトリの指定
$ ./launch assemblyscript # AssemblyScript を利用して開発する場合
$ ./launch rust # Rust を利用して開発する場合
$ ./launch c # C/C++ を利用して開発する場合
$ ./launch tinygo # TinyGo を利用して開発する場合
OS によってはそれぞれのディレクトリの絶対パスが 103 文字を超えると vscode が起動しない場合があります。
Windows Subsystem for Linux (WSL) 2 上の vscode では本ドキュメント執筆時点で上記のオプションはサポートされていません。
ホスト側に存在しないディレクトリを記載すると Development container の起動に失敗します。

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

.devcontainer/devcontainer.json を編集し ~/.ssh などホスト側のディレクトリを Development container にマウントできます。

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

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"
  ]
}

詳細は vscode のドキュメント Advanced Container Configuration をご参照ください。