Web APIの使い方

日付:2016年12月21日 水曜日
テーマプロダクト&サービス

IIJ 畠山です。
お客様よりいただくお問い合わせの中に「Web API」に関するものがあります。「Web APIで何ができるの?」「Web APIはどう使うの?」といったお問い合わせです。
今回は、そんなWeb APIの使い方や便利なツール類をご紹介します。

Web APIとは

WebAPIとは、インターネット(Web)を経由して、データ取得などの処理を実行するための手段や決め事のことを表します。
TwitterやFacebook、Googleといった世の中にある多くのサービスでは、Web APIを公開しています。そして、それらのサービスのWeb APIを活用したアプリやサービスがたくさん存在しています。
同様にIIJ スマートメーターBルート活用サービスも、Web APIを実装しており、サービス利用者に向けて公開しています。

事前準備

IIJ スマートメーターBルート活用サービスのWeb APIを使うに当たって、以下の3点の情報を控えておく必要があります。

① APIのホスト名とリクエストパスの確認

Web APIのホスト名やリクエストURLやパラメータの詳細は、ご契約時にお渡しする「サービス詳細資料」に記載してあります。
そのドキュメントを参照しつつ、用途に応じた適切なリクエストURLとパラメータを選択してください。

② 認証情報の確認

WebAPIを使用するためには、Access KeyとAccess Tokenの認証情報が必要です。
認証情報は以下の「API認証管理」画面で確認することができます。

③ サービスコードの確認

IIJ スマートメーターBルート活用サービスではサービスコードと呼ばれるコードを機器毎に付与しています。
Web APIを実行時にはどの機器の情報が欲しいか指定する必要がありますが、その際にサービスコードを使用します。
サービスコードは以下の「機器一覧」画面で確認することができます。


※赤枠で囲っている部分がサービスコードです。

事前準備で必要な情報が揃ったら、実際にWeb APIを使ってデータを取得してみましょう。

ブラウザの拡張ツール

準備に手をかけずにお手軽にWeb APIの動作を確認したいという方には、ブラウザ拡張ツールという選択肢があります。
Chromeなどのブラウザにはアプリと呼ばれる拡張ツール群が存在します。アプリと言うだけあってUIもちゃんとあって、なかなか便利です。
ただし、ブラウザ拡張ツールの中には悪意を持ったマルウエアが存在する場合があります。拡張ツールをインストールする際には、該当のツールの最新情報をご確認の上、インストールを実行するようご注意ください

本稿では Postman – REST Clientというツールを紹介します。
※2016年12月19日時点では安全なツールです。ただし、以前は安全だったのに、ある時点からマルウエアになってしまった拡張ツールの実例もありますので、繰り返しになりますがインストールの際は最新情報を確認するようにしてください。

Postman – REST Client はChromeブラウザの拡張ツールで、アプリの名前どおりに指定したURLに対して任意のリクエストを送信することができます。
では、実際の使い方を見てみましょう。
Postman – REST Clientを最初に起動させると以下のような画面が表示されます。

最初に認証情報の設定を行います。「Basic Auth」のタブを選択し、事前準備で確認したAccess Key と Access Token を 「User Name」と「Password」に入力します。

そして「Refresh headers」のボタンをクリックすると、自動的にAuthorizationヘッダが生成されます。

最後にリクエストURLを入力して「send」ボタンをクリックすると、

のようにJSON形式のデータが表示されます。
また、Postmanには送信したリクエストを履歴として保存する機能があります。複数のユーザや日にちのパターンで複数回データを取得するような場合は、履歴からリクエストを読み出して一部を変えて送信すればよいのでなかなか便利です。

curlコマンド

Linuxなどshellスクリプトが動く環境をお持ちの方には、データを転送するコマンドラインツールに cURL というツールがあります。
このコマンドラインツールでも比較的容易にWeb APIからデータを取得することができます。
入力するコマンドの例は以下の通りです。

$ curl -u [Access Key]:[Access Token] “https://[ホスト名]/external_api/v1/fwd_int_power/[サービスコード]”

※ []で囲まれた部分は、事前準備で確認したご自身の値を入力します。
上記のコマンドを実行すると、最新の正方向定時積算電力がJSON形式のデータで取得できます。

[{“measured_at”:”2016-12-04T22:00:00.000+09:00″,”missing”:false,”value”:4287.5},
{“measured_at”:”2016-12-04T22:30:00.000+09:00″,”missing”:false,”value”:4287.6},
{“measured_at”:”2016-12-04T23:00:00.000+09:00″,”missing”:false,”value”:4287.8},
{“measured_at”:”2016-12-04T23:30:00.000+09:00″,”missing”:false,”value”:4288.0},
{“measured_at”:”2016-12-05T00:00:00.000+09:00″,”missing”:false,”value”:4288.2},
{“measured_at”:”2016-12-05T00:30:00.000+09:00″,”missing”:false,”value”:4288.2},
<<中略>>
{“measured_at”:”2016-12-05T09:30:00.000+09:00″,”missing”:false,”value”:4289.7},
{“measured_at”:”2016-12-05T10:00:00.000+09:00″,”missing”:false,”value”:4289.8},
{“measured_at”:”2016-12-05T10:30:00.000+09:00″,”missing”:false,”value”:4289.9},
{“measured_at”:”2016-12-05T11:00:00.000+09:00″,”missing”:false,”value”:4290.0},
{“measured_at”:”2016-12-05T11:30:00.000+09:00″,”missing”:false,”value”:4290.1},
{“measured_at”:”2016-12-05T12:00:00.000+09:00″,”missing”:false,”value”:4290.2}]

また、パラメーターを使うことで、特定の日にちのデータを取得することもできます。
例えば、2016年12月3日のデータを取得したい場合は、

$ curl -u [Access Key]:[Access Token] “https://[ホスト名]/external_api/v1/fwd_int_power/[サービスコード]?y=2016&m=12&d=3”

と、パラメータに”?y=2016&m=12&d=3”を追記すると、

[{“measured_at”:”2016-12-03T00:00:00.000+09:00″,”missing”:false,”value”:4272.4},
{“measured_at”:”2016-12-03T00:30:00.000+09:00″,”missing”:false,”value”:4272.7},
{“measured_at”:”2016-12-03T01:00:00.000+09:00″,”missing”:false,”value”:4272.8},
{“measured_at”:”2016-12-03T01:30:00.000+09:00″,”missing”:false,”value”:4273.0},
{“measured_at”:”2016-12-03T02:00:00.000+09:00″,”missing”:false,”value”:4273.1},
<<中略>>
{“measured_at”:”2016-12-03T21:00:00.000+09:00″,”missing”:false,”value”:4279.1},
{“measured_at”:”2016-12-03T21:30:00.000+09:00″,”missing”:false,”value”:4279.4},
{“measured_at”:”2016-12-03T22:00:00.000+09:00″,”missing”:false,”value”:4279.5},
{“measured_at”:”2016-12-03T22:30:00.000+09:00″,”missing”:false,”value”:4279.7},
{“measured_at”:”2016-12-03T23:00:00.000+09:00″,”missing”:false,”value”:4279.8},
{“measured_at”:”2016-12-03T23:30:00.000+09:00″,”missing”:false,”value”:4279.9}]

のように2016年12月3日だけのデータが取得できます。

CSV形式への変換

IIJ スマートメーターBルート活用サービスのWeb APIで取得できるデータの形式はJSON形式となっています。
JSON形式のデータは、プログラム上で扱いやすいという長所があります。その反面、JSON形式のデータは、MS Excelなどの表計算ソフトとの相性が悪く、一度CSV形式などに変換して表計算ソフトが扱いやすい形にする必要があります。
ただ、CSV形式への変換についても、便利なツールを使うことで簡単に変換することができます。
インターネットで検索すると様々なCSV変換ツールがヒットすると思いますが、本稿では Convert JSON to CSVというフリーのオンラインツールを紹介します。
まず、Convert JSON to CSV のサイトにブラウザでアクセスすると、以下ような画面が表示されます。

次にWeb APIで取得したJSON形式のデータをConvert JSON to CSV の上部の入力エリアに貼り付けします。
すると、ほぼリアルタイムでCSV形式に変換され、以下のような画面が表示されます。

あとは、ページの中段にある「Download the entire CSV」 と青文字になっているリンクをクリックして、CSV形式ファイルをダウンロードするだけです。とても便利です。

日付形式の変換

Web APIで取得できるデータの中に”measured_at”という項目のデータがあります。これはデータの取得日時を表す文字列で、ISO 8601という形式になっています。
残念なことにISO 8601形式もMS Excelと相性が悪く、素のままでは「日付」形式と認識してくれません。
「日付」形式と認識させるには、以下のようなExcel関数に置き換えてあげる必要があります。

=DATEVALUE(MIDB(A1,1,10))+TIMEVALUE(MIDB(A1,12,8))

※ 上記の「A1」の部分はセルを表しており、「A1」セルにISO 8601形式の日付情報が格納されているという意味になります。

最後に

本稿ではIIJ スマートメーターBルート活用サービスのWeb APIを利用してデータを取得してデータ形式を変換するところまでをご紹介いたしました。
認証情報など少々面倒なお約束もありますが、それさえ守れば簡単にお好みのデータを取得することができます。

例えば、WebAPIで取得した1週間分の積算電力量のデータをCSV形式に変換してMS Excelに読み込み、1日毎の電気使用量のグラフを作成するなんてことも簡単にできます。
まだWeb APIを使ったことがない方は、この機会にちょっと触ってみていただけると幸いです。