この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
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と似ているように感じました。以上です。