2023/12/06

つないでみよう:#3)気象庁の天気予報

Web 系アプリ開発のど素人が、チャレンジする WebAPI 連携日記の第 3 回です。今回からは、気象庁の天気予報を題材にします。


ノーツで作るポータル画面に天気予報を表示できないかとネットを調べていると、気象庁の Web サイトから取得できることがわかりました。

今回はその調査結果をレポートします。


天気予報データの取得

次のリンクをクリックすると気象庁の天気予報の Web ページが確認できます。

気象庁 天気予報(大阪)


このサイトから天気予報データを抽出できる構造になっているようです。次の URL をクリックすると、天気予報のデータがテキストデータ(JSON 形式)で表示されます。これをノーツで利用しようということですね。

https://www.jma.go.jp/bosai/forecast/data/forecast/270000.json


また、天気予報以外では、明後日までと1週間の天気概況がテキストデータで取得できます。

https://www.jma.go.jp/bosai/forecast/data/overview_forecast/270000.json

https://www.jma.go.jp/bosai/forecast/data/overview_week/270000.json


なお、これら URL はリクエストした時点での最新情報が返される仕様になっており、固定された URL でいつでもデータ取得が可能です。


JSON の確認

それでは、天気予報の JSON を確認しましょう。表示されたテキストを VS code で開き、JSON として成形して構造を確認します。

まず大枠として、2つのオブジェクトがあり、明後日までの天気予報と週間天気予報があります。

明後日までの天気予報はさらに3分割されていて、天気、降水確率と気温の予報が入っています。

天気予報のオブジェクトは、"timeDefines" に予報日時が配列で入っており、各予報が同じ要素数の配列で記録されています。

なお、この例では翌日の予報までしか含まれていませんが、JSON を取得する時刻によっては明後日を含む場合があります。コーディングする際には、このあたりを柔軟に行う必要があそうですね。


降水確率のオブジェクトも同様の構造になっていますが、"timeDefines" が天気予報とは合致していません。降水確率は 6 時間ごとの予報が提供されるようです。


気温予想に関しては、日ごとの最低/最高気温が取得できます。ただ、当日の最低気温は通常不要です。Web ページでも以下のように省略されています。

JSON では、以下のようにデータが存在しているのですが、最高気温と同じ数値が入っていて、配列の並び順が逆転しています。このあたりで省略する条件を表していると想定しているのですが、不明瞭ですね。仕様がわからないので判断が難しいところです。


週間天気予報についても同様の構造になっていて、7 日分の天気予報だけでなく、降水量や平均気温まで、Web ページに表示されている情報が含まれています。


エリアコード

URL の最後の数字部分が取得するエリアのコードです。例えば、東京の情報を取得するなら 130000.json となります。エリアの定義は、以下の URL の JSON で確認できます。

https://www.jma.go.jp/bosai/common/const/area.json

天気予報の上記3 URL では、”offices” に定義されているエリアコードが利用できるようです。


まとめ

今回は、気象庁の Web サイトから天気予報を取得する方法についてまとめました。

ただ、気象庁として正式な API サービスではないとのことなので、仕様変更や最悪提供中止があるかもしれません。とはいっても、特定の URL にアクセスすると JSON 形式で天気予報や概況が取得できる仕様になっていますので、インターフェース的には WebAPI といっても問題ないと思います。

正式なサービスではないため、仕様が公開されていません。手探りの部分があり、不明瞭な点は存在はしますが、必要十分な情報は取得できそうです。とはいっても、公的は Web サイトから取得できるのはありがたいですね。

なお、以下のリンクに利用規約などが記載されております。実用前にはご確認ください。

気象庁ホームページについて


前回 連載:つないでみよう 次回

0 件のコメント:

コメントを投稿