まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:weather

久しぶりに The Weather Company API を使ってみました。なお以下で紹介するサンプルのソースコードはこちらで公開しています:
https://github.com/dotnsf/twc_api

2018081400


使い方は Node.js が導入されているシステムに git clone(またはダウンロード&展開)して、npm install して、node app.js します。成功すると "server starting on XXXX ..." というメッセージが表示されます(この XXXX が動的に決まるポート番号です。以下の例では 6039 番):
$ npm install
$ node app.js
server starting on 6039 ...

ウェブブラウザで上記のポート番号を指定してサンプルアプリケーションに接続します。成功すると東京周辺の(OpenStreetMap の)地図が表示されます:
2018081401


2018/08/14 時点では、このサンプルアプリケーションで3つの The Weather Company API を試すことができ、それぞれ画面上部にある3つのボタンで実行可能です:
2018081402


一番左の "alertsByCoundryCode" ボタンは GET /v1/country/{countrycode}/alerts.json を countrycode = "US" で実行します。つまり "US"(アメリカ合衆国)で現在発生している天候に関する警報の一覧を取得します:
https://twcservice.mybluemix.net/rest-api/#!/Weather_Alerts/v1ccalertheadln


このサンプルアプリケーションでは上位30個の警報を取り出して、その発生位置にマーカーを置き、各警報の内容を参照できるようにしています:
2018081403
(↑この API は以前には存在してなかったような・・・)


真ん中の "currentConditions" ボタンをクリックすると、そのタイミングで地図の中心にある地点を座標を使って GET /v1/geocode/{latitute}/{longitude}/observations.json を実行します。地図の中心にある地点の現在の天候の様子を取得して表示するので、最初に地図をある程度スクロール(マウスドラッグでスクロールします)してから実行し、このサンプルアプリケーションではその情報の一部を表示します:
2018081404


一番右の "historicalData" ボタンをクリックすると、そのタイミングで地図の中心にある地点を座標を使って GET /v1/geocode/{latitute}/{longitude}/observations/timeseries.json を実行します。地図の中心にある地点の過去 24 時間の天候の移り変わりの様子を取得します。このサンプルアプリケーションでは過去 24 時間の気温の移り変わりを表示するようにしています:
2018081405


実装方法など、詳しくは Github 上のソースコードと、The Weather Company API の API Reference を参照ください。

IBM Bluemix には、IBM の中の人しかアクセスできない環境があります。いわゆる「ステージング環境」で、安定運用よりも実験的な意味合いの強い環境です。中身はパブリックに公開している API に加え、今後公開予定の API が隠れていたりします。

で、その中に面白そうな API があったので、予告編的な意味合いでチラ見せします(注 2015/Oct/28 正式サービス化されました)。それがこの "Insights for Weather" 、天気情報の API です:
2015102101


実はこれ、全くの新しい情報ではなく、今年の3月に IBM と The Weather Company 社とのビジネスパートナーシップが提携されてから進められてきた成果の1つでもあります:
http://www.ibm.com/big-data/us/en/big-data-and-analytics/ibmandweather.html

こちらは英語の開発者ブログですが、この中では「Bluemix カタログからの提供も予定されている」と言及されていました。このプロジェクトが着々と進んでいる、ということだと思っています:
https://developer.ibm.com/bluemix/2015/03/31/weather-means-business/


現状で(このステージング環境上で)提供されている API は、大きく「予報」と「状況」の2つの情報に関するものです。API では位置(緯度、経度)言語を指定して、例えば「状況」を調べる API であれば、
https://(username):(password)@twcservice.mybluemix.net/api/weather/v2/observations/current?geocode=35.69,139.77&units=m&language=ja
のように HTTP GET を実行すると、
{
  :
  :
 "observation":{
  "class":"observation",
  "expire_time_gmt":1445420253,
  "obs_time":1445418000,
  "obs_time_local":"2015-10-21T18:00:00+0900",
  "wdir":40,
  "icon_code":33,
  "icon_extd":3300,
  "sunrise":"2015-10-21T05:51:54+0900",
  "sunset":"2015-10-21T16:58:54+0900",
  "day_ind":"N",
  "uv_index":0,
  "uv_warning":0,
  "wxman":"wx1500",
  "obs_qualifier_code":null,
  "ptend_code":1,
  "dow":"水曜",
  "wdir_cardinal":"北東",
  "uv_desc":"弱い",
  "phrase_12char":null,
  "phrase_22char":null,
  "phrase_32char":"快晴",
  "ptend_desc":"上昇",
  "sky_cover":"所により曇り",
  "clds":"SCT",
    :
    :
 }
}

といった感じの JSON テキストを得ることができ、指定した場所の天候状況が指定した言語で分かる、というものです(実際に試すともっと詳しい情報が得られています)。

ちなみにこの例で指定した位置(北緯 35.69 度、東経 139.77 度)は東京の神田駅あたりです。つまり日本国内の位置情報ですが、ちゃんと取得できていることがわかります。また language を en-US などにすると、数値情報は同じもので、日本語の部分が英語になったものを得ることができます。


同様にして、「予報」の API の場合は、1日ごとに昼と夜の天気予報を数日分まとめて取得できたり、24時間以内の情報を1時間おきにまとめて取得できる、というものでした。

なお、この API の詳細な使い方についてはリファレンスを参照ください:
https://twcservice.mybluemix.net/rest-api/#!/twc_observations_current/v2obscurrent


天気の情報は単に「雨が降るかどうか、わかると個人的に便利」なだけでなく、株式市況の出来高にも影響を与える可能性があり、その応用範囲はかなり広くなると思います。もちろん独自のアイデアを盛り込んだ天気アプリを作りたい人や、地図情報&位置情報を使ったアプリとの連携情報としても有用だと思っています。そういった情報が API で、位置や言語をピンポイントに指定して取得できる、というこの API は開発者という個人的な視点でも是非早く公式リリースされて欲しいと思っています(注 リリースされました)


API の(結果テキストの)仕様そのものはリリース前に変更される可能性があることをご了承ください。でも楽しみですよね。 リリースされたら、また改めて API の使い方を紹介する予定です。

※現時点では公開予定日や価格情報はまだ未定です

※2015/Oct/28 正式リリースにともなってタイトルと内容を一部変更しました。
 

このページのトップヘ