天気予報 API(livedoor 天気互換)は、気象庁が配信している全国各地の今日・明日・明後日の天気予報・天気詳細・予想気温・降水確率と都道府県の天気概況情報を JSON データで提供しています。
去る2020年7月、livedoor 天気がサービス終了となりました。livedoor 天気の API はわかりやすく、認証も不要でとても利用しやすかったのですが、突然の終了となりとても残念です。
代替として使えそうな API を探しましたが、OpenWeatherMap は API キーが必要な上に予報自体が正確でなかったり、気象庁のサイトはそもそも API がなかったりなど livedoor 天気のように手軽に使える API は見つからず、こうして自作することとなりました。
(気象庁 HP のリニューアルにより現在は各種 API が存在しますが、公に公開されているものではないためドキュメントはなく、またデータが非常に取りづらい構造になっており、手軽に使えるかというと微妙…)
この API は、気象庁 から配信されている全国各地の天気予報を取得し、終了した livedoor 天気 の API と互換性のある JSON 形式のデータで提供するものです。URL を差し替えるだけで極力既存のコードを変えることなく利用できるようにしているつもりですが、livedoor 天気の API からの変更点や注意点もあります。利用される際は下記の 変更点・注意事項 をよく読んだ上でご利用ください。
2021年2月の気象庁 HP のリニューアルに対応しました。また、気象庁 HP の API を活用して 気象台名・見出し/本文のみの天気概況文・天気詳細・一時細分区域名 のプロパティを新たに追加し、より利用しやすくなりました。
気象データの取得処理が事実上すべて書き直しになった関係で、細かな挙動やこの API で追加されたプロパティが変更・統一されています(livedoor 天気との互換性は保っているはず)。詳細は下記の 変更点・注意事項 や レスポンスフィールド をご参照ください。
JSON データをリクエストする際のベースとなる URL は以下になります。
https://weather.tsukumijima.net/api/forecast
この URL に下の表のパラメータを加え、実際にリクエストします。
| パラメータ名 | 説明 |
|---|---|
| city |
地域別に定義された ID 番号を表します。 リクエストする地域と ID の対応は、livedoor 天気で使われていた 全国の地点定義表 内で 「一次細分区域(cityタグ)」の ID をご参照ください。(例・佐賀県 伊万里 = 410020 ) |
取得した JSON データは以下の定義に基づいて構成されています(プロパティ名は順不同)。
下線 の項目はこの API で新たに追加されたプロパティです。
| プロパティ名 | 内容 | ||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| publicTime | 予報の発表日時( ISO8601 形式 / 例・2020-09-01T05:00:00+09:00 ) | ||||||||||||||||||||||||||||||||||||||||||||||||||
| publicTimeFormatted | 予報の発表日時(例・2020/09/01 05:00:00 ) | ||||||||||||||||||||||||||||||||||||||||||||||||||
| publishingOffice | 予報を発表した気象台(例・福岡管区気象台) | ||||||||||||||||||||||||||||||||||||||||||||||||||
| title | タイトル・見出し(例・福岡県 久留米 の天気) | ||||||||||||||||||||||||||||||||||||||||||||||||||
| link | リクエストされたデータの地域に該当する気象庁 HP の天気予報の URL | ||||||||||||||||||||||||||||||||||||||||||||||||||
| description |
天気概況文
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| forecasts |
都道府県天気予報の予報日毎の配列
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| location |
予報を発表した地域を定義
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| copyright |
|
livedoor 天気の API では ASCII の範囲外の文字はすべてエスケープされていましたが、この API ではエスケープは行いません。
{
"publicTime": "2021-03-03T05:00:00+09:00",
"publicTimeFormatted": "2021/03/03 05:00:00",
"publishingOffice": "福岡管区気象台",
"title": "福岡県 久留米 の天気",
"link": "https://www.jma.go.jp/bosai/forecast/#area_type=offices&area_code=400000",
"description": {
"publicTime": "2021-03-03T04:43:00+09:00",
"publicTimeFormatted": "2021/03/03 04:43:00",
"headlineText": "福岡、北九州地方では、3日夕方まで高波に注意してください。福岡県では、4日まで空気の乾燥した状態が続くため、火の取り扱いに注意してください。",
"bodyText": " 福岡県は、寒気の影響により曇りとなっている所がありますが、高気圧に覆われて概ね晴れています。\n\n 3日は、寒気の影響によりはじめ曇りとなる所がありますが、高気圧に覆われて概ね晴れとなるでしょう。\n\n 4日は、高気圧に覆われて晴れとなる所もありますが、気圧の谷や湿った空気の影響により概ね曇りで、夜遅くは雨となるでしょう。",
"text": "福岡、北九州地方では、3日夕方まで高波に注意してください。福岡県では、4日まで空気の乾燥した状態が続くため、火の取り扱いに注意してください。\n\n 福岡県は、寒気の影響により曇りとなっている所がありますが、高気圧に覆われて概ね晴れています。\n\n 3日は、寒気の影響によりはじめ曇りとなる所がありますが、高気圧に覆われて概ね晴れとなるでしょう。\n\n 4日は、高気圧に覆われて晴れとなる所もありますが、気圧の谷や湿った空気の影響により概ね曇りで、夜遅くは雨となるでしょう。"
},
"forecasts": [
{
"date": "2021-03-03",
"dateLabel": "今日",
"telop": "晴れ",
"detail": {
"weather": "晴れ",
"wind": "北の風",
"wave": "0.5メートル"
},
"temperature": {
"min": {
"celsius": null,
"fahrenheit": null
},
"max": {
"celsius": "14",
"fahrenheit": "57.2"
}
},
"chanceOfRain": {
"T00_06": "--%",
"T06_12": "0%",
"T12_18": "0%",
"T18_24": "0%"
},
"image": {
"title": "晴れ",
"url": "https://www.jma.go.jp/bosai/forecast/img/100.svg",
"width": 80,
"height": 60
}
},
{
"date": "2021-03-04",
"dateLabel": "明日",
"telop": "曇のち一時雨",
"detail": {
"weather": "くもり 時々 晴れ 夜遅く 雨",
"wind": "北の風 後 北東の風",
"wave": "0.5メートル"
},
"temperature": {
"min": {
"celsius": "4",
"fahrenheit": "39.2"
},
"max": {
"celsius": "18",
"fahrenheit": "64.4"
}
},
"chanceOfRain": {
"T00_06": "10%",
"T06_12": "10%",
"T12_18": "20%",
"T18_24": "60%"
},
"image": {
"title": "曇のち一時雨",
"url": "https://www.jma.go.jp/bosai/forecast/img/212.svg",
"width": 80,
"height": 60
}
},
{
"date": "2021-03-05",
"dateLabel": "明後日",
"telop": "雨のち曇",
"detail": {
"weather": null,
"wind": null,
"wave": null
},
"temperature": {
"min": {
"celsius": "10",
"fahrenheit": "50"
},
"max": {
"celsius": "20",
"fahrenheit": "68"
}
},
"chanceOfRain": {
"T00_06": "70%",
"T06_12": "70%",
"T12_18": "70%",
"T18_24": "70%"
},
"image": {
"title": "雨のち曇",
"url": "https://www.jma.go.jp/bosai/forecast/img/313.svg",
"width": 80,
"height": 60
}
}
],
"location": {
"area": "九州",
"prefecture": "福岡県",
"district": "筑後地方",
"city": "久留米"
},
"copyright": {
"title": "(C) 天気予報 API(livedoor 天気互換)",
"link": "https://weather.tsukumijima.net/",
"image": {
"title": "天気予報 API(livedoor 天気互換)",
"link": "https://weather.tsukumijima.net/",
"url": "https://weather.tsukumijima.net/logo.png",
"width": 120,
"height": 120
},
"provider": [
{
"link": "https://www.jma.go.jp/jma/",
"name": "気象庁 Japan Meteorological Agency",
"note": "気象庁 HP にて配信されている天気予報を JSON データへ編集しています。"
}
]
}
}