IoT
OpenBlocks
SORACOM

SORACOM Airの回線速度変更APIの適用タイミング検証

More than 3 years have passed since last update.

SORACOMリリース記念のリレーブログ10/2担当の ma2shita(まにした) です

9/30にセンセーショナルなローンチをされたソラコムさんのSORACOM Airですが、なんとAPIでSIM制御ができます

じゃあ回線速度の変更APIを叩いたら、どのくらいのタイムラグでそれが適用されるのか?気になったので検証してみました
(早速APIネタでいいのか、という声は無視してAPIトライネタです)

検証機は、弊社のIoTゲートウェイ "OpenBlocks IoT BX1" を使いました。無論、SORACOM Airに対応しております! (広告)

fig 1-1.png

※お約束ですが、これは個人のメモ/意見であり、所属する組織を代表するものではありません

ちなみに従来だと

回線速度を変えるとなったら、一大事でした
事務手数料はかかる、別のSIMが来る、実際の切り替えまで1ヶ月かかる、そんな不満をAPIで解消するわけです!

TL;DR

結論から書いちゃうと APIを叩いてから2〜3秒で適用されます
もはや即時適用と言って過言ではありません

実際にやってみた時のスクリーンキャスト動画(90秒)はこちらです

開封の儀

Docomoさんの回線を使っているとのことなので、SIMは Docomoさんのパッケージです

fig 1-2a.jpg

SIMは3種類から選べます。今回入手したのはnano-SIMです
交換対応はどうなんでしょうか?情報が待たれます

"OpenBlocks IoT BX1" をWi-Fiルータにしてみる

検証用として OpenBlocks IoT BX1 (以下、BX1) にSORACOM AirのSIMを挿し、BX1をWi-Fiルータにしてみます

作業としては、たった2つです

  1. 無線APとしてBX1を設定する
  2. APNの設定をする

SIMを挿す

まずは、電源OFF状態のBX1に SORACOM Air のSIMを挿します

fig 1-3.jpg

BX1は標準SIMサイズ(mini-SIMサイズ)を挿れることが出来ます。SIMアダプタの使用は保証外のようです1

電源を入れる

BX1には電源ボタンが無く、シリアルコンソール兼電源用コードを挿すだけで起動が始まります
起動に4分程かかりますので、腹筋しながらお待ちください2

Web管理画面から設定する

無線APとして設定する

BX1のWeb管理画面の表示から無線APとして設定する方法は、クラスメソッドのせーのさんの記事が秀逸です。是非ご覧ください!3

Screenshot from 2015-09-30 14:34:34.png

APNの設定をする

SORACOM Airの設定はBX1のWeb管理画面にAPN設定があるので、マニュアル記載のAPNやID/Passwordを設定して再起動するだけです

fig 1-4.png

以上で、BX1をWi-Fiルータ化でき、3G回線を使ったIoTゲートウェイとして利用することができます

SORACOM AirのスゴさはAPI

SORACOM Airのスゴさは、SIM、即ち回線の制御がすべてAPIで提供されるところです

変更は即時適用され、しかも標準で提供されるという、今までのキャリア回線では考えられなかった環境が手に入ります
APIドキュメントは公開されていて、直ぐに利用可能です。今回は回線速度の変更のAPIを使って、ダイナミックに回線速度を変更してみます

やりたいことは、こんな感じ

fig 1-5.png

注: 文中のAPIリクエスト/レスポンスは10/1時点のもので、変更されているかもしれませんので、最新のドキュメントを確認してください

RubyのSDKをインストールする

API操作のため、Ruby向けのAPI SDKツールをインストールします

SORACOMのAPIはHTTPS RESTです。が、認証の仕組み等、正直めんどうです(^^;
Ruby向けSDKが用意されており、コマンドラインからAPI操作ができるようになりますので、是非とも入れましょう4

Ruby SDKのインストール

SDKページの方法に沿ってインストールします
https://dev.soracom.io/jp/tools/

$ (sudo) gem install soracom

これで soracom コマンドが使えるようになります

$ soracom version
Soracom API tool v1.0.1

APIを叩いてみる (soracom sim list)

Web consoleのアカウントを作成したら、APIが直ぐ叩けます

まず、いきなり叩いてみましょう

コマンド中の YOUR_SORACOM_EMAIL YOUR_SORACOM_PASSWORD は、Webコンソールへのログインアカウント情報です
※これ以降では省略します

$ export SORACOM_EMAIL=YOUR_SORACOM_EMAIL
$ export SORACOM_PASSWORD=YOUR_SORACOM_PASSWORD
$ soracom sim list
[]

まだSIMを登録していないので、空のJSON配列が返ってきました5
見ての通りJSONでデータが返されるため、jqを使った加工操作も可能です

SIMを登録する

SIMの登録もAPIからできますが、ここはWebコンソールから行いました

必要な情報はSIMカードに書かれている「IMSI」「PASSCODE」です

fig 1-6.png

上記情報をWebコンソールに入力し、登録を完了します

fig 1-7.png

再度 sim list してみましょう

$ soracom sim list
[
  {
    "imsi": "4XXXXXXXXXXX2",
    "msisdn": "8XXXXXXXXXXX3",
    "ipAddress": "X.XXX.X.XXX",
    "apn": "soracom.io",
    "type": "s1.standard",
...snip...
    "status": "active",
    "tags": {
      "FormFactor": "nano",
      "name": "ma2sim",
      "Manager": "ma2shita"
    },
...snip...
  }
]

ええ感じで返ってきました!
tagもSIMに割り当てることができますから、管理も捗ります

ここまで出来れば、あとは弄りたい放題ですので、速度の変更を試してみます

速度の変更API

あらためて現状のSIMの回線速度を確認します

$ soracom sim list | jq .[0].speedClass
"s1.minimum"

速度変更は sim update_speed_class です。対象となるSIMのIMSIと、変更先速度の名前を指定します

s1.fastに変更してみます

$ soracom sim update_speed_class --imsi=4xxxxxxxxxxx2 --speed-class=s1.fast | jq .[0].speedClass
"s1.fast"

無事、変更完了です。あっけないほど、簡単です

--speed-class に指定できるのは、10/1時点での速度クラスは 4つです

  • s1.minimum
  • s1.slow
  • s1.standard
  • s1.fast

色々なところで書かれていますが、どこかで見たことのあるような、クラス名です

本題: 通信中の速度変更はどうなのか?

恐れいります、やっと本題です

通信中にAPIで速度を変更すると、どうなるのか?です

fig 1-5.png

結論、即時適用されます!

s1.minimum → s1.fast → s1.standard → s1.minimum と試してみたスクリーンキャストがこちらです (90秒動画)

SORACOM Air APIの適用タイミング検証の動画

APIを叩いてから、2〜3秒で転送速度が変化しています
無論、セッションも切れていません。素晴らしいの一言に尽きます!

まとめ & ひきつぎ

SORACOM Airは「通信費が8割も安い」と価格面が強調した紹介がされていますが、本質的にはモバイル回線を "24時間365日つながってるもの" から "必要なときだけ使うもの" へと変えてしまう、ルールチェンジャー的なサービスといえます

今回のAPIコントロールや、ここでは紹介できなかった SORACOM Beamと、今までできなかったことを実現するソラコムのサービスに今後も期待できます

次は10/5(月)のクラスメソッド 都元さんにバトンをお渡しします、よろしくお願いします!



  1. ※どうしても使う場合はフィルムで固定する系統のSIMアダプタが使えるらしいですが、何度も言いますがアダプタ利用は保証外です。最悪は、SIMスロットが壊れてしまいます(T_T 

  2. ※3GモデムとSIM情報の読み込みに時間がかかっているようです。この辺は改善が待たれます 

  3. ※自社のページじゃないところが、なんともニンニン 

  4. ※ さもなくば、curlとお付き合いください 

  5. ※ サブコマンドの simsubscriber の別名です。本体は subscriber ですが、個人的には sim の方がわかりやすいです。。。