「Soracom」につないでみる。

  • Posted on
  • by

こんにちは。製品開発部の渡辺です。

2015年9月30日、IoT産業を加速するべくMVNOの一角として登場しました、「Soracom」。数々のIT系記事やBlogで取り上げられており期待の高さがうかがえるサービスです。
今回は、そんなサービスにSkyOnDemandを利用してつないでみました。

MVNOとは、通信事業会社から携帯電話回線などの通信基盤を借り受け、独自サービスを付加して提供するサービスになります。※「Soracom」は正確にはMVNE(Mobile Virtual Network Enabler)に定義されるようです。(参考:Serverworks大石さんのBLOGより
ちなみに、
このサービスを提供している株式会社ソラコムの代表である玉川さんは、弊社のプライベートイベントである「TerraSky Day 2015」のパネルディスカッションでご登壇いただきました。

「Soracom」とは

「Soracom」には、以下、2つのサービスが存在します。

「Soracom Air」

こちらは、IoT向けのデータ通信SIMを提供するサービスです。NTT docomoの通信基盤を利用したMVNEになり、発行されるSIMカードはdocomoマークが入ったものになります。

データ通信の利便性をあげるべく、Webコンソールでの通信料や各種設定の管理や、利用状況の確認ができます。また、APIが公開されておりSIMに対する操作をアプリケーション経由で実施できるようになってます

その他の特徴としては、SIM1枚、1日10円という低価格の基本料金で、それ以外はデータ通信量に応じた従量課金制となっていることです。1MBあたり0.2円からの料金設定で、深夜料金や、ダウンロード<<アップロードといった割引料金も用意されてます。
また、SIMの発行が1枚から数1,000枚といった単位で発行できるので、利用用途に応じた量を発行でき事業サービスとしての多数の発行から、数枚といった個人的な利用にも気楽に発行できます。

「Soracom Beam」

こちらは、IoT事業の課題である、セキュリティ課題に対するサービスになります。
SIMカードを搭載したモノから通信業者のゲートウェイまでは安全なので、その先の各サービス(サーバ)までの経路を暗号化すればよいのですが、その暗号化をモノに組み込むと、負荷やコスト面で負担が大きくなってしまいます。それをソラコムのサービス上で実装し、各モノでそれらの暗号化処理をするといった負担を減らす仕組みになってます。
HTTPSSSLやMQTTSはもちろん、今後新たにセキュアプロトコルが登場してきても、ソラコム上で対応がなされれば利用者側はその恩恵を受けられるといった事が想定されます。

現在、このサービスはPublic Betaというステータスで提供されており、「お客様からのフィードバックをもとに、頻繁に機能追加、進化を続けるという意味 」が込められているそうです。

Soracom API

続いては、ソラコムの特徴となっている、SIMを操作するAPIの中を覗いてみましょう。
APIリファレンスページ(https://dev.soracom.io/jp/docs/api/ )は、リクエスト情報を設定して実行する事で、APIの実行結果がその場で見れる開発者には嬉しい作りとなっております。
APIとしては、以下のものが用意されてます(2015年11月現在 Soracom API v1)

-Auth

認証処理周りですね。アカウント情報を利用して他のAPI実行で利用するキーやトークンの発行であったり、パスワードリセットが行えます。

-Operator

作成したアカウントに対して認証処理をする事で、OperatorIDが作成されます。そのアカウント情報の取得であったり、各種トークンの再取得であったりパスワードの更新が実行できますまた、Operatorの新規作成もできます。

-Subscriber

SIMの管理を行います。SIMの情報取得はもちろんですが、有効化/無効化したり通信速度の変更だったり、ユーザコンソールでSIMに対して設定できる内容が実施できますSIMの登録もできるのですが、解約(terminate)もできます。ちなみに一度terminateしてしまうと、そのSIMは再利用不可となってしまいますのでAPIリファレンスから等で気軽に実行して後悔をしてしまいそうな処理の1つですので気をつけたいですね!!

-Stats

登録したSIMの利用情報を取得します。通信料の履歴情報をJSON形式で取得する他、その情報をAWS S3にCSV形式で出力する処理も用意されてます。

-Group

SIMをグルーピングする事が可能でそのためのグループを作成したり、SIMをそのグループに所属させたりする事ができます。

-Event Handler

利用に対する監視設定ができ、設定の閾値を超えた時点で通知や制限をする設定ができます。

SkyOnDemandでつないでみる

Soracom APIの、"Auth"を利用し、API Key及びTokenを取得。それを利用して、APIの"Subscriber"を利用して、SIMの速度クラスを変更していきます。

まずは認証。利用するアダプタは、RESTアダプタのPOST処理を利用します。
必要な情報である、"email"、"password"をJSON形式で渡す設定をするだけです。

結果として得られる、"API Key"と"token"は後続の処理で必要なので、スクリプト変数に格納しておきます。他の処理でも必ず使うであろう、認証処理は他の処理からも呼ばれるよう、サブスクリプトとして呼ばれるようにしておくと便利ですね。

続いて、Subscriberのupdate_speed_classを実行するため、同様にRESTアダプタのPOST処理を利用します。

更新対象となるSIMのIMSIコードを"パス"に設定し、リクエストヘッダーに取得したAPI-Key及びTokenに設定します。また、リクエストボディには変更したいスピードクラス(S1.XXXX)を設定し、実行します。

実行結果を、ユーザコンソールで見てみましょう。

この流れで、API-KeyとTokenを設定し、APIリファレンスにしたがって必要な値を設定する事でSkyOnDemandからSoracom APIは容易に実行できます。

「Soracom」と「SkyOnDemand」

大量のSIMの取り扱い

Soracomのユーザコンソールは、非常に見やすく使いやすく、特に説明もなくて操作できます。
数枚~数十枚のSIM管理であれば何の面倒もないと思います。しかし、IoTをターゲットとすると、それなりに扱うSIMも多くなってきますので、数百から数千枚のSIM管理が必要になります。
もちろんAPIが公開されてますので、得意な言語でサクッとプログラミングできてしまえば一括管理をすることも可能でしょう。
しかし、サクッと開発できない場合でもSkyOnDemandを利用すれば、APIの実行はもちろん、スケジュール管理やトリガーを利用した実行などもノンプログラミングで可能となります。

クラウドサービスとの連携

SoracomはAWS上に構築されている事もあり、AWSの各種サービスとの親和性は高いです。またクラウド上にあるサービスと連携した利用というのも考えられるでしょう。
下の例を見てください。


Salesforce上には、SIMの情報を設定できるようにしておき、
上記のスクリプトでは、使用中となってないSIM情報だけを取得しSoracomAPIを利用して、有効化(activate)していく処理になります。成功した場合の後処理として、Salesforce上の対象データの使用中フラグをONにする流れとなっております。この処理をSkyOnDemandのスケジュールトリガーを利用すれば、Salesforceで入力したSIM情報が定時でチェックされ有効化されるような仕組みだって簡単に構築できます。
SalesforceのAPIコール数の制限を考慮すると、更新する数次第では、上記のスクリプトのようにループ中で1件ずつの更新ではなく、ファイルに更新対象の情報を出力して一括での更新のほうが良さそうですね。

上記のような更新もあれば、今後は、Soracomを搭載したモノから集めた情報をSalesforce上で管理し、その情報を条件に有効化や無効化などの制御はもちろん、前述で紹介した通信速度を動的に変更する処理などもSkyOnDemandを利用して手軽に実装できそうです。

IoTにまつわるサービスは年を追うごとに増えていき、またその実績も増えてきています。我々もそれらの情報に対してキャッチアップしていきたいと思います。

またご報告できる内容できましたら、投稿させていただきます。

それでは、今回はこの辺で。。。