テックブログ

SalesforceでSORACOMのデバイスを管理する

soracom_bg

SORACOM、わくわくしますね。しませんか? え、「SORACOMって何」ですって? そういう方は、クラウド業界の住人としては少しアンテナが鈍っているのかもしれません。先日開発者向けイベント「SORACOM Developers Conference #0」に参加してきたのですが、抽選で200名の会場を埋め尽くしUstream配信も行うなど、開発者を中心に期待が高まっているサービスです。

SORACOMを簡単に一言で言うと、「プログラマブルな」「割安の」SIMカードを提供するMVNOサービスです。しかしながら、カスタマイズ性そのもの、あるいは現在の価格そのものに目を向けるというよりは、こちらの記事辺りをご覧になりながら、その将来性を判断するべきサービスと考えられます。

これまでSIMカードからの通信内容をプログラムから操作することは不可能だったので、まずは試してみたい、という人もいるのでしょう。1000円弱で購入でき、2年縛りがなくいつでも終了できるところも個人が扱いやすいと言えます。AWS登場時、特に個人がサーバーをちょっと借りる目的として注目されたことを思い出させます。

しかし、それのみならず、IoT利用での利用に適するようサービス設計されていることを含め、企業がこのプラットフォームを使うメリットも大きいものです。例えばこれらの記事を読むと、SORACOMの実用面でのメリットを感じることができることでしょう。

アピリオはB2Bのシステムコンサルティング会社ですので、この記事でも企業での利用ケースについて検討してみたいと思います。

 

今回は、外出の多い社員向けの携帯端末にSORACOMのSIMカードを提供し、営業時間中のみ通信可能なSIMカードとして運用することを想定してみます。SORACOMにも独自の管理画面がありますが、端末情報は企業システムであるSalesforce上で管理することにし、SalesforceからSORACOMのAPIを実行するサンプルを作ることにします。

 スクリーンショット 2015-10-21 23.45.10

まずは、管理用のオブジェクトを作成します。SIMカード1枚ごとに1レコード作成するイメージです。IDに相当するIMSI番号を入れておきましょう。また、端末ごとに利用可能時間を設定できるようにしています。

スクリーンショット 2015-10-21 23.34.04

続いて、SORACOM APIアクセス用のApexクラスを用意します。今回必要となった部分以外は作っていないのですが、素直なAPIなので順次追加して行けるものと思います。リモートサイトの設定画面にてSORACOMのAPIエンドポイントであるhttps://api.soracom.ioを設定するのもお忘れなく。

では、実行してみましょう。SORACOMに登録したメールアドレス、パスワードと、SIMに記載されているIMSIおよびPASSCODEと書かれた登録キーを用意し、下記のようなコードにてSIMカードの登録が可能です(記述に誤りがあった場合は、"Invalid username/password supplied"、"No such resource found"といったメッセージが戻ってきます)。

同様に、登録済のSIMカード(Subscriber)の一覧取得や、Subscriberの有効化無効化も簡単なAPI呼び出しにて実施できます。有効無効の設定が数秒で端末側に反映されるのが驚くべきことです。

このAPIアクセス用のクラス(SoracomClient)は先ほど作成したオブジェクト(soracom_devices)とは独立していますが、ここから実際に、レコードの使用開始時刻、使用終了時刻の項目値に合わせてAPIを呼び出し、その結果に合わせてレコードを更新する処理を行っていきます。ただし、現在のところSORACOM APIでは使用可能時間帯を直接設定することはできません。そのため、Salesforceで毎時スケジュールジョブを実行し、各レコードの設定値に応じて随時ステータス有効化、無効化のAPIを呼び出すことにて要件を実現します。

今回はSoracomClientクラスを呼び出すSchedulableなクラス(SoracomSchedulableOperation)を作成しました。テストの都合上似たようなメソッドが幾つかありますが、スケジュール登録して実行するためには、@future(callout=true)static voidメソッドを経由して処理を行う必要があります。

毎時実行したいので、画面からではなくApexを実行してスケジュール登録します。

実行されると、レコードの開始時刻、終了時刻設定に合わせて、SORACOMのユーザーコンソールでも設定が更新されていることが確認できます。また、API呼び出しに成功したレコードについて、Salesforce側のレコードも更新されています。

スクリーンショット 2015-10-21 23.32.17

今回のサンプルはここまでですが、いかがでしたでしょうか。企業システムとSIMの連携のイメージは広がってきましたか? 例えば今回の延長で次のようなこともできそうです。

  • 夜間に多くのデータを送信するIoTデバイスのために、通信速度を昼間と夜間で変更する
  • 通信データ量を取得し各デバイスの通信量を一覧表示したり、通信量に応じて通信速度を変更したりする
  • 各デバイス管理者にデバイスの使用状況を定期的にメールする
  • SORACOM Beam経由でデバイスからSalesforceに直接安全にデータを登録する

なお、今回のサンプルで利用したスケジュールクラスでは、API呼び出しを直列に端末数の分だけ実行していますが、ご存知の通りcallout / futureにはガバナ制限やタイムアウトがありますので、端末数が増えた際は工夫が必要となります。併せて、グループやタグで指定した複数端末について一括操作を行うAPIの追加にも期待したいところです。

sims

Tags:  ,

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Appirio