適材適所

パソコン作業の自動化・効率化のための情報を発信するブログ(VBA,PowerShellなど)

PowerShellでREST APIをいじる_天気予報API

PowerShellでREST APIをいじる

世の中には本当にありがたいサービスがたくさんあります。
昔では考えられないようなサービスを少しのお金で、時には無料で、受けることができるようになっています。

REST APIはそんなサービスの代表ではないでしょうか。

色々なAPIを使ってみるシリーズ(?)第一弾、天気予報APIを使ってようと思います。

天気予報APIについて

簡単に好きな地域の天気予報を受け取ることができるREST APIです。

livedoorが提供しているサービスです。

weather.livedoor.com

使い方は簡単、基本となるURLのお尻に、地域別のID番号をパラメータとしてくっつけます。  

http://weather.livedoor.com/forecast/webservice/json/v1?city=400040

できあがったURLををリクエストすると、JSON形式で結果が返ってきます。

PowerShellを使うことで、JSONの処理などを意識することなく結果を扱うことが可能です。

PowerShellで天気予報APIをリクエストしてみる

PowerShellでREST APIにリクエストを送る場合、Windows8以降なら「Invoke-RestMethod」が便利です。

使い方は単純です。

Invoke-RestMethod "http://weather.livedoor.com/forecast/webservice/json/v1?city=400040"

これだけです。

あとは、PowerShellが良い感じに結果のJSONをラッピングしてくれます。

$rec=Invoke-RestMethod "http://weather.livedoor.com/forecast/webservice/json/v1?city=400040"

これで結果のオブジェクトを変数に格納することができます。 JSONがそのままオブジェクトになっています。

ここで便利なのは、$rec変数はJSONオブジェクトのためJSONのプロパティ名でアクセスすることができる点です。 $rec.と書いた後、tabキーでコード補完の一覧にプロパティ名が出てきます。

次のコマンドでタイトルを取得できます。

$rec.title
福岡県 久留米 の天気

天気予報の概況は次のコマンドで取得できます。

$rec.description.text
九州北部地方は、台風第17号の影響により、雨で雷を伴った激しい雨の降っている所があ ります。・・・

他にも最高気温、最低気温なども取得することができます。

おわりに

天気予報APIのPowerShellでの取り扱いについて紹介しました。

PowerShellのInvoke-RestMethodを使うと、JSONの処理などの面倒なことを意識せずにREST APIを使うことができるので便利です。

今回は天気予報APIでしたが、他にもおもしろいAPIがありましたら紹介していきたいと思います。

ここまでお読みいただき、ありがとうございました。