この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
天気予報で作りたいものを思いつきましたが、「そもそも天気予報ってAPIでどう取得するんだろう?」となったので、実際に試してみました。
気象情報APIの選定
気象情報を扱うAPIはいくつかありますが、「個人でもOK・無料の範囲・1時間毎のデータを取得できる」を満たすOpenWeatherMapを使ってみます。
- Weather and forecasts - OpenWeatherMap
- YOLP(地図):気象情報API - Yahoo!デベロッパーネットワーク
- お天気Webサービス仕様 - Weather Hacks - livedoor 天気情報
OpenWeatherMapを使う
アカウント登録
OpenWeatherMapにアクセスしてサインアップします。
APIキーを取得
ログイン後のメニューに表示されているAPI Keys
を選択すると、APIキーが表示されています。
APIを叩く準備をする
One Call APIを使います。各種条件は下記とします。
- 場所: 東京駅
- 緯度: 35.681236
- 経度: 139.767125
- 単位: 摂氏・メートル
- 言語: 日本語
これらをもとにAPIのクエリ文字列を作りました。
curl "https://api.openweathermap.org/data/2.5/onecall?lat=35.681236&lon=139.767125&units=metric&lang=ja&appid={YOUR API KEY}"
なお、APIキーの取得直後は「Invalid API key」と401エラーになりますが、数時間ほど待てばOKです。
レスポンス内容を確認する
実際のレスポンスは大量にあるため省略します。(見やすく整形して約1300行)
全体構造
構造としては下記となっており、current
とhourly
とdaily
のデータがバッチリあります。One Call APIのドキュメント通りですね。
{
"lat": 35.68,
"lon": 139.77,
"timezone": "Asia/Tokyo",
"timezone_offset": 32400,
"current": {
...(略)...
},
"hourly": [
{
...(略)...
},
...(略)...
{
...(略)...
}
],
"daily": [
{
...(略)...
},
...(略)...
{
...(略)...
}
]
}
hourly
の1要素を抜粋すると下記です。
{
"dt": 1591866000,
"temp": 24.02,
"feels_like": 20.91,
"pressure": 1004,
"humidity": 88,
"dew_point": 21.91,
"clouds": 75,
"wind_speed": 11.09,
"wind_deg": 203,
"weather": [
{
"id": 501,
"main": "Rain",
"description": "適度な雨",
"icon": "10d"
}
],
"rain": {
"1h": 1.52
}
}
使いそう&面白そうな値
- 時刻: dt
- 温度: temp
- 体感温度: feels_like
- 気圧: pressure
- 湿度: humidity
- UV指数: uvi
- 風速: wind_speed
- 気象情報: weather.main
- 気象情報の詳細: weather.description
- 気象情報のアイコンID: weather.icon
- 降水量: rain.1h
- 積雪量: snow.1h
公式ドキュメントのアイコンIDを参照すれば、対応したアイコン(画像)が分かります。
さいごに
次はこの情報を活用してみたいと思います!