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 件のコメント:
コメントを投稿