OpenWeatherMap とは
OpenWeatherMapは、現在の天気や天気予報などの無料APIを提供するオンラインサービスです。
APIキーを取得する
アカウント登録
OpenWeatherMapにアクセスしてサインアップします。
APIキーを取得
ログイン後のメニューに表示されているAPI Keysを選択すると、APIキーが表示されています。

OpenWeatherMapのAPIを叩く
URLを叩けば取得できます。適切に下記の値を変更してください。
{LAT} = 緯度
{LON} = 経度
{YOUR API KEY} = 取得したAPIキー
https://api.openweathermap.org/data/2.5/onecall?lat={LAT}&lon={LON}&units=metric&lang=ja&appid={YOUR API KEY}
レスポンス内容の例)
{
"lat": 000000,
"lon": 000000,
"timezone": "Asia/Tokyo",
"timezone_offset": -32400,
"current": {
"dt": 1604643808,
"sunrise": 1604598892,
"sunset": 1604626793,
"temp": -22.39,
"feels_like": -29.04,
"pressure": 1016,
"humidity": 100,
"dew_point": -22.39,
"uvi": 0.29,
"clouds": 100,
"visibility": 105,
"wind_speed": 4.26,
"wind_deg": 212,
"weather": [
{
"id": 601,
"main": "Snow",
"description": "雪",
"icon": "13n"
}
],
"snow": {
"1h": 0.72
}
},
"hourly": [
{
...(略)...
},
...(略)...
{
...(略)...
}
],
"daily": [
{
...(略)...
},
...(略)...
{
...(略)...
}
]
"alerts": [
{
...(略)...
}
]
}
主に使う値
- 時刻: dt
- 日の出: sunrise
- 日没: sunset
- 温度: temp
- 体感温度: feels_like
- 気圧: pressure
- 湿度: humidity
- UV指数: uvi
- 風速: wind_speed
- 風の向き: wind_deg
- 気象情報: weather.main
- 気象情報の詳細: weather.description
- 気象情報のアイコンID: weather.icon
- 降水量: rain.1h
- 降雪量: snow.1h ※積雪ではないので要注意
画像アイコン
10n の部分をweather.iconで取得したアイコン名に変更するだけ
https://openweathermap.org/weather-conditions
<img src="https://openweathermap.org/img/wn/10n@2x.png">
PHPで取得
$weather_config = array(
'appid' => '○○○○○○○○○○○○○○○',
'lat' => '63.027139',
'lon' => '-150.941425',
);
$weather_json = file_get_contents('http://api.openweathermap.org/data/2.5/weather?lat=' . $weather_config['lat'] . '&lon=' . $weather_config['lon'] . '&units=metric&lang=ja&APPID=' . $weather_config['appid']);
$weather_array = json_decode($weather_json, true);
weather.mainは英語しかないので日本語訳はこちらを使ってください。(自作なので適当に直してください)
$weatherTranslate = array(
'Clear' => '晴れ',
'Clouds' => 'くもり',
'Rain' => '雨',
'Drizzle' => '霧雨',
'Thunderstorm' => '雷雨',
'Snow' => '雪'
);
温度を四捨五入する
round($weather_array['main']['temp'], 1);
降雪量のmmをcmに変換
$weather_array['snow']['1h'] * 0.1;
パラメーターオプション
オフィシャルリファレンス
https://openweathermap.org/current
主に使うパラメーター
単位 ( &units=metric )
測定単位(任意)
standard、metricおよびimperialユニットが利用可能です。unitsパラメータを使用しない場合、デフォルトはstandardです。
「units=metric」で摂氏温度(℃)の取得ができます。
これがないと絶対温度(K)になるので、取得した数値から「-273.15」する必要があります。
利用可能値:standard, metric, imperial
デフォルト:standard
モード ( &mode=json )
レスポンス形式(任意)
可能な値はjson、xmlおよびhtml。modeパラメータ形式を使用しない場合、デフォルトはjsonです。
利用可能値:json, xml, html
デフォルト:json
多言語 ( &lang=ja )
言語形式(任意)
このパラメーターを使用して、ご使用の言語で出力を取得できます。
利用可能値:
-
afアフリカーンス語 -
alアルバニア語 -
arアラビア語 -
azアゼルバイジャン -
bgブルガリア語 -
caカタロニア語 -
czチェコ語 -
daデンマーク語 -
deドイツ人 -
elギリシャ語 -
en英語 -
euバスク -
faペルシア語(ペルシア語) -
fiフィンランド語 -
frフランス語 -
glガリシア語 -
heヘブライ語 -
hiヒンディー語 -
hrクロアチア語 -
huハンガリー語 -
idインドネシア語 -
itイタリアの -
ja日本人 -
kr韓国語 -
laラトビア語 -
ltリトアニア語 -
mkマケドニアの -
noノルウェー語 -
nlオランダの -
pl研磨 -
ptポルトガル語 -
pt_brポルトガル語ブラジル -
roルーマニア語 -
ruロシア -
sv, seスウェーデンの -
skスロバキア -
slスロベニア語 -
sp, esスペイン語 -
srセルビア語 -
thタイ語 -
trトルコ語 -
ua, ukウクライナ語 -
viベトナム語 -
zh_cn中国語(簡体字 -
zh_tw中国の伝統的な -
zuズールー
デフォルト:en
JavaScriptコードのコールバック関数
JavaScriptコードを使用するには、callback functionNameをJSONのコールバックに転送できます。
https://api.openweathermap.org/data/2.5/weather?q=London,uk&callback={TEST}&appid={YOUR API KEY}
各アカウント制限

無料アカウント
60コール/分
1,000,000コール/月
参考サイト
https://qiita.com/nownabe/items/aeac1ce0977be963a740
https://hsmt-web.com/blog/openweathermap-api/
https://dev.classmethod.jp/articles/use-open-weather-map/
https://yuukiyg.hatenablog.jp/entry/2019/11/17/182410