概要
天気の情報を取得できるAPIとして、けっこう挙がるのがOpenWeatherAPIでしょう。無料枠もあるので試しに使ってみたのですが、レスポンス項目について調べないとピンとこないのがあったので、今回メモ書きします。
前提
- 今回使用するAPIは無料プランで使える
3-hour Forecast 5 days
です。無料プランで使えるAPIはこちらを参照ください。(おそらく他のAPIもほぼ同様の形式だと思いますが) -
3-hour Forecast 5 days
のAPIの仕様については、こちらのドキュメントを参照ください。 - 前提とするAPIの仕様について、2022年4月時点のものとします。
- APIのメモ書きについて、主に使われそうな項目をピックアップして取り上げます。(全項目は触れません)
- API 送信時に使用する
appid
の取得については、世界の天気API「OpenWeatherMap」の無料APIキー発行・取得、リクエスト方法の記事を参照ください。
メモ書き
<リクエスト>
リクエスト項目で主に指定するのはappid
、lat(緯度)
、lon(経度)
、units(単位)
だと思います。
unitsの詳細についてはこちらで解説されてます。基本的には気温の単位を設定するものになっていて、日本では摂氏での表記が一般的だと思うのでmetric
を指定すれば良いと思います。
というわけで、リクエストのURLは以下の通りに投げれば、ほぼほぼ問題ないかなと思います。
https://api.openweathermap.org/data/2.5/forecast?lat=35.6806429&lon=139.7599219&appid=xxxxxxxxxxxxxxxx&units=metric
<レスポンス>
上記のURLでリクエストを投げると、以下のようなレスポンスが得られると思います。
{
"cod": "200",
"message": 0,
"cnt": 40,
"list": [
{
"dt": 1650790800,
"main": {
"temp": 17.04,
"feels_like": 16.39,
"temp_min": 17.04,
"temp_max": 17.04,
"pressure": 1014,
"sea_level": 1014,
"grnd_level": 1013,
"humidity": 61,
"temp_kf": 0
},
"weather": [
{
"id": 500,
"main": "Rain",
"description": "light rain",
"icon": "10d"
}
],
"clouds": { "all": 100 },
"wind": { "speed": 2.46, "deg": 15, "gust": 2.72 },
"visibility": 10000,
"pop": 0.54,
"rain": { "3h": 0.2 },
"sys": { "pod": "d" },
"dt_txt": "2022-04-24 09:00:00"
},
・
・
・
]
}
ざっくりと項目毎に内容を以下で補足します。
【天気】
weather
項目に入ってるのが天気の情報です。main
項目にざっくりとした天気の文字が入っています。id
とicon
の意味合いについては、Weather condition codesのドキュメントを参照ください。
【日時】
dt
項目にUnixtimeが入っています。一応、dt_txt
でテキスト形式の項目もありますが、上記のリクエスト形式で投げるとUTCで返ってきます。
【気温】
temp(気温)
、feels_like(体感気温)
、temp_min(最低気温)
、temp_max(最高気温)
が摂氏で取得できます。
【気圧】
pressure(気圧)
、sea_level(海面気圧)
、grnd_level(地点気圧)
がヘクトパスカル(hpa)の単位で取得できます。気圧の詳細については気圧と高さ・高度の関係【気象予報士が解説】を参照頂きたいのですが、基本的にpressure
にはsea_level
が設定されるようです。
【湿度】
humidity
の項目でにて、%表記で取得できます。
【雲】
clouds
の項目で、雲が覆われてる度合いが%表記で取得できます。
【降水量】
天気がRain
の時だけ、降水量がrain
の項目で取得できます。3時間単位でミリメートルで設定されます。
【風】
wind
の項目にて、speed(風速)
、deg(方位角)
、gust(最大瞬間風速)
が取得できます。風速の単位はメートル/秒になります。方位角の詳細については方位角・仰角・偏波角の解説を参照ください。