SORACOM API Sandbox を使って IoT SIM の作成と解約を試してみた。

## 目次

1. [はじめに](#はじめに)
2. [動作環境](#動作環境)
3. [SORACOM API Sandbox とは](#soracom-api-sandbox-とは)
4. [実践：SORACOM API Sandbox の設定と操作](#実践soracom-api-sandbox-の設定と操作)
   - [1. SORACOM CLI のインストールと設定](#1-soracom-cli-のインストールと設定)
   - [2. 架空のオペレーターの作成](#2-架空のオペレーターの作成)
   - [3. 架空の IoT SIM の作成と登録](#3-架空の-iot-sim-の作成と登録)
     - [3.1 SIM の作成](#31-sim-の作成)
     - [3.2 SIM の登録](#32-sim-の登録)
   - [4. SIM の解約プロテクション設定と解除](#4-sim-の解約プロテクション設定と解除)
     - [4.1 解約プロテクションの確認](#41-解約プロテクションの確認)
     - [4.2 解約プロテクションの有効化解除](#42-解約プロテクションの有効化解除)
   - [5. SIM の解約](#5-sim-の解約)
5. [まとめ](#まとめ)

## はじめに

IoT プロジェクトを進める中で、API の動きを試してみたいと感じたことはありませんか？でも、本番環境をいじるのはちょっと怖い……そんな時に使えるのが「SORACOM API Sandbox」です。

この記事では、実際に私が Sandbox を使って IoT SIM の作成から解約まで試してみた様子をまとめました。失敗談やハマりどころも紹介するので、これから試す方の参考になれば嬉しいです。

実施するにあたって、下記の SORACOM ユーザードキュメントを参考にしました：

- [SORACOM API Sandbox 利用ガイド](https://users.soracom.io/ja-jp/tools/api-sandbox/)
- [SORACOM API リファレンス](https://users.soracom.io/ja-jp/tools/api/reference/)

---

## 動作環境

私がこの記事を書く際に使用した環境です：

- **OS**: macOS 14.3 (Sonoma)
- **SORACOM CLI バージョン**: SORACOM CLI v1.3.0
- **依存環境**: Homebrew 3.6 以上
- **カバレッジタイプ**: Global

---

## SORACOM API Sandbox とは

**SORACOM API Sandbox** は、本番環境をいじることなく、SORACOM API の操作を安全に試せる環境です。この環境を使えば、たとえば、以下のことができます：

- 架空のオペレーターの作成
- 架空の IoT SIM の作成や管理
- SIM の解約やその他 API 操作のテスト

「実際のデータに影響を与えない」という安心感があるので、API を初めて触る人でも気軽に試せます。

---

## 実践：SORACOM API Sandbox の設定と操作

以下に、私が実際に試した手順を詳しく書いていきます。これを読めば、きっとあなたも Sandbox を活用できるはず！

### **1. SORACOM CLI のインストールと設定**

まずは SORACOM CLI のインストールから始めます。私は macOS を使っているので、Homebrew でインストールしました。

#### **SORACOM CLI のインストール**

```bash
arch -arm64 brew install soracom-cli
```

> **メモ:**
> 私の環境では、初めに `brew install soracom-cli` を試したところ、以下のエラーが出ました：
>
> ```
> Error: Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)!
> To rerun under ARM use:
>     arch -arm64 brew install ...
> ```
>
> そのため、`arch -arm64` を付けて再実行することで解決しました。このエラーが出た場合は、このオプションを忘れずに指定してください。

インストール後、バージョンを確認：

```bash
soracom version
```

実行結果（例）:

```
SORACOM API client v1.3.0
```

#### **Sandbox 用プロファイルの作成**

次に、Sandbox 用のプロファイルを作成します。

```bash
soracom configure-sandbox
```

プロンプトに従って以下を入力しました：

1. **カバレッジタイプ**: Global (選択肢 1 を入力)
2. **AuthKeyId と AuthKey**: 本番環境の認証情報（確認用に必要です）
3. **Sandbox オペレーターのメールアドレスとパスワード**: サンドボックス用の情報を入力

これでプロファイル `sandbox` が作成されました。

---

### **2. 架空のオペレーターの作成**

作成したプロファイルを使って、Sandbox 内にオペレーターを作成します。

```bash
soracom operator get --profile sandbox
```

結果はこんな感じ：

```json
{
  "createDate": "2024-12-05T09:27:34.193",
  "email": "shoichi+202412051827@*****",
  "operatorId": "OP0081733389",
  "updateDate": "2024-12-05T09:27:34.195"
}
```

自分の Sandbox オペレーター ID を確認できました。

---

### **3. 架空の IoT SIM の作成と登録**

#### **3.1 SIM の作成**

次に、架空の IoT SIM を作成します。

```bash
soracom sandbox subscribers create --profile sandbox --coverage-type g \
--body '{
  "subscription": "plan01s"
}'
```

結果：

```json
{
  "imsi": "001014383947094",
  "subscription": "plan01s",
  "status": "ready",
  "terminationEnabled": false
}
```

#### **3.2 SIM の登録**

作成した SIM を登録します。

```bash
soracom subscribers register --profile sandbox --coverage-type g \
--imsi 001014383947094 \
--body '{
  "registrationSecret": "34230"
}'
```

登録後に確認：

```bash
soracom subscribers list --profile sandbox
```

出力（抜粋）：

```json
[
  {
    "imsi": "001014383947094",
    "status": "ready",
    "subscription": "plan01s"
  }
]
```

作成した SIM が登録され、「status」が `ready` となっていることを確認できました。

---

### **4. SIM の解約プロテクション設定と解除**

#### **4.1 解約プロテクションの確認**

まずは解約プロテクションの状態を確認します。

```bash
soracom sims list --profile sandbox
```

出力（抜粋）：

```json
[
  {
    "imsi": "001014383947094",
    "terminationEnabled": false
  }
]
```

この時点では `terminationEnabled` が `false`、つまり解約プロテクションが無効であることを確認しました。

#### **4.2 解約プロテクションの有効化/解除**

プロテクションを有効化する場合：

```bash
soracom subscribers enable-termination --profile sandbox \
--imsi 001014383947094
```

解除する場合：

```bash
soracom subscribers disable-termination --profile sandbox \
--imsi 001014383947094
```

---

### **5. SIM の解約**

最後に SIM の解約を試しました。

```bash
soracom subscribers terminate --profile sandbox \
--imsi 001014383947094
```

結果：

```json
{
  "status": "terminated"
}
```

無事に解約完了！

---

## まとめ

Sandbox を使えば、本番環境をいじることなく API の操作を安心して試せます。特に IoT SIM の解約といった操作を試せるのは魅力的でした。

今回のハマりポイントとして、「--profile sandbox」をつけ忘れると本番環境に対して API を叩いてしまうので注意が必要です。

ぜひ皆さんも試してみてください！