SORACOM SDK for Rubyを試してみた
はじめに
SORACOMにはRubyにてAPIを操作するためのSORACOM SDK for Rubyが用意されています。Rubyを使ってSORACOMを弄くれる、ということで、ちょっと試してみました。
作成した処理の概要
SORACOMのSIM(SORACOMの用語では「サブスクライバー」)をグループに所属させるサンプルを作成してみました。予めSORACOMのAir SIMを契約し、ユーザコンソールから登録していることが前提条件となります。またグループもユーザコンソールから予め作成しておく必要があります。
作成したソースと手順
以下、作成したソースと手順になります。
1.SDKなどのgemのインストール
Rubyのアプリとして作成したので、SORACOM SDK for Rubyも含めて使用するgemはローカルにインストールすることにしました。まずはGemfileに以下のように記述します。
Gemfile
# A sample Gemfile source "https://rubygems.org" gem 'soracom' gem 'settingslogic' # gem "rails"
SORACOM SDK for Rubyは「gem 'soracom'」で指定します。その下の「gem 'settingslogic'」は後述する定義ファイルを読み取るためのものです。以下のコマンドでインストールします。
$ bundle install --path vendor/bundle
2.SIM(サブスクライバー)をグループに所属させる
以下が今回のメインの処理となります。
main.rb
require 'soracom' require './secret_settings' client = Soracom::Client.new(email: SecretSettings.soracom.email, password: SecretSettings.soracom.password) # SIM(サブスクライバー)を取得 sims = client.list_subscribers sims.each do |sim| puts sim['imsi'] client.set_group(sim['imsi'], '622a0ac0-bfbd-482d-9a99-8efab931daf1') end puts 'set group end.'
やっていることは
- SORACOMのクライアントを取得する(4行目)
- クライアントに所属しているSIM(サブスクライバー)を取得する(7行目)
- SIMを特定するためのIMSIを取得し(10,11行目)
- クライアントのメソッドを呼び出し、対象のSIMのIMSI、グループIDを渡す(11行目)
となっています。
クライアントを取得するとき(4行目)に定義ファイルに記述したメールアドレス・パスワードを渡していますが、これらは環境変数に設定しておいて、プログラムでは渡さない方法もあるようです。詳細は公式ページを参考にしてください。
3.定義ファイルの読み込み
今回の主題とは外れますが、定義ファイルに記述したメールアドレス・パスワードを読み込むところも載せておきます。
secret_settings.rb
require 'settingslogic' class SecretSettings < Settingslogic source File.join("../etc", "secret.yml") namespace 'defaults' end
「../etc/secret.yml」を定義ファイルとし、そこに記述した値を読み込むためのクラスです。詳細についてはsettingslogicを参考にしてください。
実行結果
先に書いたようにユーザコントロールにてグループを予め作成しておきます。
上記の「main.rb」を実行してみます。
$ ruby main.rb 440XXXXXXXXXXXX set group end.
ユーザコントロールより対象のSIMを見ると、グループが設定されていることが確認できます。
まとめ
非常に簡単な処理ですが、実装できました。今回作成したソースやSORACOM SDK for Rubyにて紹介されているソースを見ると
- クライアントを取得する
- クライアントよりSIM(サブスクライバー)を取得する
- クライアントにSIMのIMSIを渡し、メソッドを呼び出すことで操作を行う
というのが基本的な流れの一つのように感じます。
このようなところはAWS SDKと似ているように感じました。以上です。