SORACOM Orbit で動作する WASM モジュールを開発するには、WASM 形式でのバイナリの出力に対応したプログラミング言語であれば基本的にどれでもお使いいただけます。
しかしながら WASM 形式でのバイナリ出力を行う開発環境はまだそれほど一般的ではないと思われますので、セットアップの手間を軽減するため、あらかじめ各種コンパイラや SDK などをインストール済みの開発環境用 Docker コンテナー (以下、Development container) を参照として提供しています。
このページでは、Development container (以下、Dev container) と Visual Studio Code (以下、VS Code) を組み合わせることでスムーズに Orbit 用の WASM モジュールの開発を始めていただける手順を記載します。
- WASM モジュール開発環境の変更履歴については、WASM モジュール開発環境 を参照してください。
- VS Code と Dev container を組み合わせた開発環境の構築については、Developing inside a Container でも説明されています。
必要なソフトウェアをインストールする
以下のソフトウェアを、開発用 PC にインストールしてください。インストール方法はそれぞれの Web サイトを参照してください。
- Docker
- Visual Studio Code (VS Code)
このページの説明について、ソラコムでは以下の環境で動作を確認しています。
- OS: macOS Sonoma 14.2 (23C64)
- Visual Studio Code: 1.85.1
- Docker: Rancher Desktop 1.11.1
Windows コンテナーには対応していません
Windows で利用する場合はターゲットを Linux コンテナーに変更してください。参照: Windows 10 上での Linux コンテナーのセットアップ | Microsoft Docs
SAM ユーザーを作成して SORACOM CLI をインストールする
WASM モジュール開発環境は、SORACOM CLI に依存しています。以下の手順に従って SAM ユーザーを作成し、SORACOM CLI をインストールしてください。
SAM ユーザーを作成する
WASM モジュールを開発 / テストするための SAM ユーザーを作成し、認証キーを生成します。
SAM ユーザーを作成 します。
SAM ユーザーの認証設定 の手順に従って、認証キーを生成します。
この認証キーは、SORACOM CLI をインストールする ときに使用します。
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 を呼び出すときと、VS Code の拡張機能を利用するときに、Orbit 用のプロファイルを指定する必要があります。
SORACOM CLI を呼び出すときに
--profile orbit
のようにプロファイルを指定してください。Dev container を準備する の手順のあとで、Dev container を起動してから VS Code の設定でプロファイル名を指定してください。
- → → の順にクリックします。
- 「Soracom Profile」を入力して、 に「orbit」を入力します。
WASM モジュール開発環境をインストールする
WASM モジュール開発環境をダウンロードして展開する
開発環境をアップデートするには
開発環境を新しいバージョンにアップデートする場合は、新しいディレクトリに展開してください。
orbit-development-environment.zip (SHA256 チェックサム) をダウンロードして、正しくダウンロードできたことを確認します。
$ wget https://soracom-files.s3-ap-northeast-1.amazonaws.com/orbit/orbit-development-environment-2023-12.zip $ wget https://soracom-files.s3-ap-northeast-1.amazonaws.com/orbit/orbit-development-environment-2023-12.zip.sha256 $ sha256sum -c orbit-development-environment-2023-12.zip.sha256
orbit-development-environment-2023-12.zip: OK
任意のディレクトリ (例:
orbit-development-environment-2023-12
) に展開します。$ unzip orbit-development-environment-2023-12.zip -d orbit-development-environment-2023-12
Dev container を準備する
WASM モジュール開発環境には、プログラミング言語ごとにディレクトリが用意されています。
orbit-development-environment-2023-12/
(展開したディレクトリ)assemblyscript/
c/
rust/
tinygo/
使用するプログラミング言語のディレクトリを VS Code で開くと、自動的に Dev container が開きます。Dev container には、WASM モジュールの開発に必要なツールが用意されています。ここでは、初めて Dev container を開く手順を説明します。
orbit-sdk-c ディレクトリは SORACOM Orbit SDK for C/C++ です
orbit-development-environment-2023-12/
(展開したディレクトリ) の orbit-sdk-c/
ディレクトリは、SORACOM Orbit SDK for C/C++ です。
VS Code を起動して、
→ の順にクリックし、WASM モジュールを開発する際に使用するプログラミング言語に応じて、assemblyscript/
、rust/
、c/
、tinygo/
ディレクトリ (フォルダ) を開きます。VS Code に WASM モジュール開発用の拡張機能がインストールされます
既存の VS Code の動作に影響を与えずに起動する方法もあります。詳しくは、既存の VS Code の動作に影響を与えずに起動する を参照してください。
Dev Containers 拡張機能をインストールする確認画面が表示された場合は、
をクリックします。拡張機能のインストールが正常に終了すると、フォルダを Dev container で開き直すか確認する画面が表示されます。確認する画面が表示されない場合は、
→ の順にクリックしてフォルダを閉じてから、 → の順にクリックしてフォルダを開き直してください。Dev Containers 拡張機能をインストールしてください
拡張機能の推奨機能を無効にしている場合 (VS Code で
"extensions.ignoreRecommendations": true
を設定している場合) は確認画面が表示されません。別途 Dev Containers 拡張機能をインストールしてください。をクリックします。
Dev container の作成が開始されます。進捗は、
Starting Dev Container (show log): Building image
のように表示されます。Dev container の作成が終了すると、Dev container が起動して、VS Code の左下に
Dev Container: SORACOM Orbit Development Container
と表示されます。
Windows で Dev container の起動に失敗する場合があります
Windows で環境変数 HOME
と USERPROFILE
が定義されていると、Dev container の起動に失敗する場合があります。
.devcontainer/devcontainer.json
の source=${localEnv:HOME}${localEnv:USERPROFILE}/.soracom
を .soracom
フォルダが存在するパスに書き替えて、フォルダを開き直してください。
AssemblyScript で開発する場合の追加手順
AssemblyScript で WASM モジュールを開発する場合は、Dev container が起動したら、以下のいずれかの方法で package.json
に定義されている init
スクリプトを実行してください。
Dev container を使用せずに開発する場合は Node.js バージョン 14 をインストールしてください。
NPM Scripts ビューを開き init
スクリプトを実行する
VS Code の Explorer を開き、
→ の順にクリックします。→ → の をクリックします。
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
コマンドを実行する
VS Code で
→ の順にクリックします。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
orbit-development-environment.zip には、この方法で起動するためのシェルスクリプト (launch.example
) が用意されています。以下の手順で使用します。
launch.example
をコピーします。$ cp launch.example launch
VS Code で
launch
を開きます。$ code launch
launch
に、認証キー、カバレッジタイプ、および VS Code の設定を保存するディレクトリを指定します。項目 設定 SORACOM_AUTHKEY_ID SAM ユーザーを作成する で生成した認証キー ID を指定します。(*1) SORACOM_AUTHKEY_SECRET SAM ユーザーを作成する で生成した認証キーシークレットを指定します。(*1) SORACOM_COVERAGE IoT SIM のカバレッジタイプ ( jp
またはg
) を指定します。(*1)TARGET 変更しないでください。 ROOT VS Code の設定を保存するディレクトリを指定します。 - (*1) VS Code で WASM モジュールをアップロードする場合にのみ設定します。VS Code で WASM モジュールをアップロードする手順について詳しくは、Soralet を作成して WASM モジュールをアップロードする を参照してください。
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 では、上記のオプションはサポートされていません。
ホスト側のディレクトリを Dev container にマウントする
.devcontainer/devcontainer.json
を編集すると、ホスト側のディレクトリを Dev 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 のドキュメント Add another local file mount を参照してください。