天気予報 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 データへ編集しています。" } ] } }