投稿日

システム連携や自動化に役立つ「SORACOMのAPI」基礎から実際の操作

こんにちは。ソリューションアーキテクトの内田(ニックネーム:jet)です。

4月6日は「4(シ)6(ム)」と読めることもあり、SORACOMのIoTデータ通信サービスで欠かせないモジュール「SIM」の日と位置付けて、SORACOM UG Online #11 ~SIMの日記念~」を開催いただきました。イベント当日の様子は、以下のページで動画や資料がご確認いただけます。

そのイベントの中で私は「SORACOMプラットフォームは、APIで操作可能」という話をしました。操作と言えば、皆さんの身近な例でストSORACOM ユーザーコンソールがありますが、実はこのユーザーコンソールもSORACOMのAPIを利用して情報の取得や操作を行なっています。

そこで今回は、実際にSORACOMのAPIを動作確認してみたいと思います。

そもそもAPIとは?

APIとはApplication Programming Interfaceの略で、そのまま訳すと「アプリケーションをプログラミングするインターフェース」となります。簡単に言い換えると「アプリケーションやサービス間をつなげるインターフェース」という感じでしょうか。
身近なところだと、Webサービスへのログイン処理や、ネットショッピングでの決済処理など意識しない部分でAPIが利用されていることが多いかと思います。

一般的にAPI活用は、以下の利点が考えられます。

  • 再利用性の高さ
    • 必要な情報や機能が標準化されることで再利用性が高くなる
    • 必要なAPIだけ利用するといった、柔軟な対応が可能
    • 結果的に必要な部分だけ開発するなどの対応がとれるため開発効率が高くなる
  • 標準化によるメリット
    • 標準化されることで暗黙知化しにくくなる
    • 標準化されているAPI同士で連携を行うことでセキュリティ面の “考慮漏れ” を減少できる効果
  • 自動化への親和性
    • 多数のオペレーションを自動化していく中で親和性が高い
    • 作業速度の向上と、ミスの現象を同時に満たせる

IoTにおいても、特に回線数やサービスの規模が大きくなった際には不可欠です。
例えば、デバイスの台数や操作の回数の増加を、人力ではなくプログラムによる効率的な管理に置き換えることで、コスト削減だけでなく操作のスピードアップやミス軽減につながります。

SORACOMのAPIとユーザーコンソールの関係

SORACOM ユーザーコンソールは、以下のSORACOMアーキテクチャ紹介でも登場していますが、表示部分とAPIに分かれていて、表示部分はAPIから取得したデータ表示しています。

https://speakerdeck.com/soracom/technology-camp2020-day3-s02?slide=20

ユーザーコンソールの画面を切り替えたり、また設定変更を行った際には、ユーザーコンソールからSORACOMのAPIが呼び出され、値の取得や変更がされ、その結果をWeb上で見ることができるようになっています。
SORACOMのAPIは、HTTP REST API形式です。HTTPクライアントとなるソフトウェアやライブラリから利用することになりますが、どちらかと言うとPythonやnode.jsといったプログラム言語内から呼び出すことが一般的になります。

では、プログラムを書かないとAPIが利用できないのか…?というと、そんなことはありません。プログラムよりも利用ハードルが下がる方法としてCLI (Command Line Interface; Linux等のコマンドライン) からAPIが操作できる「SORACOM CLI」もあります。
SORACOM CLIを利用すれば、コマンドライン上で一問一答形式でAPI操作が可能です。

先ほどのWeb上のユーザーコンソールと比較すると、表示や入力にWebブラウザを利用するのがユーザーコンソール、表示/入力にコマンドライン(一般的にはターミナルと呼ばれる)を利用するのがCLIという関係になります。
では早速試してみましょう!

CLIを試す ― SIMの一覧を表示

実際にユーザーコンソールとCLIで同じ情報を取り扱えるのかを試してみたいと思います。
ユーザーコンソールとCLIを始めて利用する場合には、以下を参照してください。

ユーザーコンソールの1行と、CLIで表示されているJSONで同じ情報が取得できているのが以下になります。ユーザーコンソールで検索条件として指定している文字列を、CLIでは出力されたJSONのフォーマッティングにjqを利用して指定しています。

それぞれの操作手順については以下を参照してください。

コンソールとAPIは両方とも同じSim:listSims API を利用することで、同一の情報を取得しています。
このようにインターフェースが規定されていることで、表示部分は自由に値を取得できます。

希望するAPIの探し方

まず、ユーザーコンソール上でできる操作のほとんどがAPI(= CLI)で可能です。そのため「ユーザーコンソール上の “この作業” を自動化したい!」と思い立ったら、APIによる自動化のチャンスです!

実際に探す方法ですが、関連ドキュメントは無償で公開しています。SORACOM のAPIではAPIリファレンスが提供されていますので、こちらのドキュメント参照してください。

また、SORACOMプラットフォームの機能とAPIの関係ついても以下のドキュメントに整理されていますので参照してください。

今回確認したSORACOM Air for セルラーの情報取得については、Subscriber API / Files APISim API がマッピングされています。

今回利用したSim APIとSubscriber APIについては、どちらもSIMの情報取得や操作ができます。
Sim APIの方はSubscriber と同等でサブスクリプションコンテナに対応した新しい APIとなります。イメージしやすくすると、Sim APIは「物理的なSIM単位での情報取得や操作」対してSubscriber APIは「SIMのプラン単位での情報取得や操作 」と言い換えられます。

そのため、サブスクリプションコンテナ対応のSIMの場合は、複数プランを適用できるためSIM1枚に対して複数のプランが紐づくことになります。ユーザーコンソールで表示切り替えが用意されているのもこのためです。

Sandbox(テスト環境)を利用して練習する

ここまではすでに利用中の環境に対してAPIでの情報取得を試してきました。実務を考えると実環境=本番環境となっていることも多いかと思います。このような利用中の環境への操作が難しい場合は、Sandbox環境で確認が行えます。

たとえば、削除や更新を伴う操作を実際の環境で試そうとすると、実環境に影響が出ることが想像できます。
そうした場合にSandbox環境を利用することで、事前に確認を行うことができます。

まとめ

コンソールとCLIを使ってSORACOM APIを実際に利用してみました。
APIを利用することで、システム連携や自動化処理が行えたり、人力では対応が難しい大量操作や一括操作などを行えます。

ただし、一括で大量に操作を行う場合には注意が必要となります。例えば、SORACOMプラットフォームではAPIにレート制限があり、例えば一度に行える操作の制限があったりします。

このようなレート制限は、プラットフォームへの急な負荷を避けるために設定されています。
レート制限に当たってしまった場合には、API呼び出しの間隔を空けたり、エラー発生時のリトライを実装することを検討してください。ちなみに間隔の空け方については、Exponential backoff という考え方が参考になります。

今回はSIMの一覧を取得するのみ、基本的な動作確認となりましたがAPIを利用することでコンソールでの操作はCLIでも同様に行えることを実感していただけたと思います。コンソールを利用していて、繰り返しの操作やスクリプトで便利に操作がしたいといった要望があるさいには、APIやCLIの利用をご検討ください。

最後に、今年もSORACOM Discoveryの開催がいよいよ近くなってきました。今年は、7/6 ~ 7/7でオンライン開催されます!皆さまのご参加お待ちしております!

― ソラコム内田(jet)