SORACOMリリース記念のリレーブログ10/2担当の ma2shita(まにした) です
9/30にセンセーショナルなローンチをされたソラコムさんのSORACOM Airですが、なんとAPIでSIM制御ができます
じゃあ回線速度の変更APIを叩いたら、どのくらいのタイムラグでそれが適用されるのか?気になったので検証してみました
(早速APIネタでいいのか、という声は無視してAPIトライネタです)
検証機は、弊社のIoTゲートウェイ "OpenBlocks IoT BX1" を使いました。無論、SORACOM Airに対応しております! (広告)
※お約束ですが、これは個人のメモ/意見であり、所属する組織を代表するものではありません
ちなみに従来だと
回線速度を変えるとなったら、一大事でした
事務手数料はかかる、別のSIMが来る、実際の切り替えまで1ヶ月かかる、そんな不満をAPIで解消するわけです!
TL;DR
結論から書いちゃうと APIを叩いてから2〜3秒で適用されます
もはや即時適用と言って過言ではありません
実際にやってみた時のスクリーンキャスト動画(90秒)はこちらです
開封の儀
Docomoさんの回線を使っているとのことなので、SIMは Docomoさんのパッケージです
SIMは3種類から選べます。今回入手したのはnano-SIMです
交換対応はどうなんでしょうか?情報が待たれます
"OpenBlocks IoT BX1" をWi-Fiルータにしてみる
検証用として OpenBlocks IoT BX1 (以下、BX1) にSORACOM AirのSIMを挿し、BX1をWi-Fiルータにしてみます
作業としては、たった2つです
- 無線APとしてBX1を設定する
- APNの設定をする
SIMを挿す
まずは、電源OFF状態のBX1に SORACOM Air のSIMを挿します
BX1は標準SIMサイズ(mini-SIMサイズ)を挿れることが出来ます。SIMアダプタの使用は保証外のようです1
電源を入れる
BX1には電源ボタンが無く、シリアルコンソール兼電源用コードを挿すだけで起動が始まります
起動に4分程かかりますので、腹筋しながらお待ちください2
Web管理画面から設定する
無線APとして設定する
BX1のWeb管理画面の表示から無線APとして設定する方法は、クラスメソッドのせーのさんの記事が秀逸です。是非ご覧ください!3
APNの設定をする
SORACOM Airの設定はBX1のWeb管理画面にAPN設定があるので、マニュアル記載のAPNやID/Passwordを設定して再起動するだけです
以上で、BX1をWi-Fiルータ化でき、3G回線を使ったIoTゲートウェイとして利用することができます
SORACOM AirのスゴさはAPI
SORACOM Airのスゴさは、SIM、即ち回線の制御がすべてAPIで提供されるところです
変更は即時適用され、しかも標準で提供されるという、今までのキャリア回線では考えられなかった環境が手に入ります
APIドキュメントは公開されていて、直ぐに利用可能です。今回は回線速度の変更のAPIを使って、ダイナミックに回線速度を変更してみます
やりたいことは、こんな感じ
注: 文中の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」です
上記情報をWebコンソールに入力し、登録を完了します
再度 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で速度を変更すると、どうなるのか?です
結論、即時適用されます!
s1.minimum → s1.fast → s1.standard → s1.minimum と試してみたスクリーンキャストがこちらです (90秒動画)
APIを叩いてから、2〜3秒で転送速度が変化しています
無論、セッションも切れていません。素晴らしいの一言に尽きます!
まとめ & ひきつぎ
SORACOM Airは「通信費が8割も安い」と価格面が強調した紹介がされていますが、本質的にはモバイル回線を "24時間365日つながってるもの" から "必要なときだけ使うもの" へと変えてしまう、ルールチェンジャー的なサービスといえます
今回のAPIコントロールや、ここでは紹介できなかった SORACOM Beamと、今までできなかったことを実現するソラコムのサービスに今後も期待できます
次は10/5(月)のクラスメソッド 都元さんにバトンをお渡しします、よろしくお願いします!