S部

超高速開発ツール"Wagby"で端末の位置情報を使って天気を自動的に記録する

今回は、前回作成した位置情報を取得する機能を利用して、その場所の天気を自動的に記録する機能を追加してみます。

www.cycle-g.info

OpenWeatherMapのAPIキーを取得する

天気のデータを取得するために、"OpenWeatherMap“を使います。OpenWeatherMapが提供しているAPIを使うためには、ユーザー登録したうえでOpenWeatherMapのAPI Keyを取得する必要があります。無料のプランをはじめとしていろいろとプランがありますが、今回は無料のプランで実験してみます。

openweathermap.org

まずはアカウントを登録します。

f:id:cycle8b:20170331131457p:plain

アカウントを登録すると、マイページ的な画面にAPI Keyが表示されます。

f:id:cycle8b:20170331131819p:plain

OpenWeatherMapのAPIを試してみる

API Keyを使って現在の天気を取得します。緯度・経度から、その地点の現在の気象情報を取得する場合には、次のようなURLで取得できます。

http://api.openweathermap.org/data/2.5/weather?lon={経度}&lat={緯度}&APPID={OpenWeatherMapのAPIKey}

詳しい使い方は↓をご確認ください。 openweathermap.org


2017-04-02 追記) パラメータの"緯度(latitude)“と"経度(longitude)"が逆だったので修正しました。毎回、どっちがどっちか、分からなくなってしまう・・・。 d.hatena.ne.jp


試しにこのURLをブラウザのアドレスバーに貼り付けてアクセスすると、次のような結果が得られます。(画像は、東京 丸の内の気象情報を取得した結果です。) f:id:cycle8b:20170331164327p:plain

結果がJSON形式で返ってくるので、これをWagbyで読み込み&編集して、DBに保存します。

Wagbyに都市名と天気を保存する項目を追加する

前回作成した投稿モデルには、DBに保存しない隠し項目緯度経度が追加されています。今回はこれに、都市名天気を追加します。それぞれ、次のような型で作成します。

項目名 項目ID 型の詳細
都市 city_name 文字列 文字列
天気 weather 文字列 文字列

APIで取得した値を、登録時の初期値に設定する。

都市天気登録時の初期値として、それぞれの項目に式を設定します。(APPIDはご自身のAPI Keyを指定してください。)

f:id:cycle8b:20170331184452p:plain

都市

JSONPATH(
  HTTPSEND(
    CONCATENATE("http://api.openweathermap.org/data/2.5/weather?lon="
    , TOSTR(${longitude})
    , "&lat="
    , TOSTR(${latitude})
    , "&APPID=84xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
  ), "name"
)

天気

JSONPATH(
  HTTPSEND(
    CONCATENATE("http://api.openweathermap.org/data/2.5/weather?lon="
    , TOSTR(${longitude})
    , "&lat="
    , TOSTR(${latitude})
    , "&APPID=84xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
  ), "weather[0]['description']"
)

ビルド&確認

投稿を保存すると・・・ f:id:cycle8b:20170331181826p:plain

都市・天気が保存され、一覧に表示されています。 f:id:cycle8b:20170331184337p:plain

参考:

d.hatena.ne.jp