PHONE APPLI Engineer blog

エンジニアブログ

気象庁さんの天気予報APIを触ってみる

リサーチデベロップメントのたかはしとし( @doushiman_jp ) です レスラーになったり、動物になったりしています。

天気予報APIとわたし

以前作っていたアプリに天気予報を組み込もうとしたことがあったんですけど、当時気軽に使用できるAPI が存在しなくて、結局有料のサービスを使ったような記憶があります。

さて、時は2021年初頭。

Web界隈で「気象庁さんが天気予報のAPI を公開しているらしい」という噂が流れてきました。

仕様の継続性やら運用状況やらでAPI ではない、と気象庁の方が明言されているので、天気予報のAPI を公開、というのは少し違うようなのですが(気象庁のHP のリニューアルに伴い天気予報の取得がAPI 経由になった、ということのよう)、 アカウント登録不要で天気予報が取得できるのはありがたい。

実際どんなデータが取れるのか見てみます。

API として提供されているわけではないので、公式なリファレンス等もなさそうです。

なので、先人のお知恵を拝借したり、気象庁さんのHP の動作をみながら、データを取得して、指定した地域の天気予報を表示してみます。

エンドポイント

まずはどのエリアの情報が欲しいのか、エリアを指すエリアコードを取得します。

エリアコードは下記から取得できます。

どうやら国内の観測所に割り当てられたコードみたいですね。

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

area.json の中身は

  • centers
  • class10s
  • class15s
  • class20s
  • offices

となっていて、上からそれぞれ親子関係になっています。

今回取得したい天気予報で使いたいのはoffices だけなので、その部分だけ抜き出します。

offices の中身は

エリアコード:{
  name:"エリア名",
  enName:"英語エリア名"
  officeName:"気象台名",
  parent:"親コード"
}

となっていました。

だいたい各都道府県ごとに気象台が1箇所あるようですが、北海道は

のように6箇所も存在していました。さすが北海道は広い・・・

このOffices データをselect から選択したら、いよいよ天気予報を取得します。

エンドポイントは

https://www.jma.go.jp/bosai/forecast/data/overview_forecast/{{エリアコード}}.json

です。

取得したデータは下記のような配列になっています。

[
  {
    publishingOffice
    reportDatetime
    timeSeries[...]
  },
  {
    publishingOffice
    reportDatetime
    timeSeries[...]
    precipAverage{
      areas:[{...}]
    }
    tempAverage{...}
  }
]

最初の配列に直近3日間の天気予報、2番目には直近1週間の天気予報が格納されています。

取得できる情報は

3日間

  • 天気予報
  • 降水確率
  • 最低気温最高気温

1週間

  • 天気予報(天気コード)
  • 降水確率
  • 最高気温最低気温
  • 平均気温
  • 平均降水量

とりあえず今回は本日の天気を知りたいので、最初の配列を使います。

時系列にそってのデータがtimeSeries に格納されているので、最初のデータを取得して表示させます。

できました。

本日の天気と比べてみましたが、予報は正しいと思いました(当たり前)

所感

レスポンスとしては10ミリsec 単位で返ってきますので悪くはないです。と言うか良いです。

正式なAPI ではないですし、気象庁さんのサーバに負担をかけない程度に使う分には、アカウントの登録も不要ですのですごく使いやすいですね。

(観測所単位ではなく、市区町村コードとか緯度軽度単位で取得できるともっと使いやすいけど…)

気象庁さんがAPI としての継続性を保証しているわけではないので、自前のサービスに組み込むことは難しそうですが、個人で使う分には十分かな〜という感じでした。

代替サービスとしてOpen Weather Mapもありますが、あちらはアカウント作成が必要だし、なんとなく気象庁さんのお墨付きの方が精度が高そう(個人の感想です)。

バッチで毎朝起動して、その日の天気をチャットにポストしたりしようかな。

API利用について

なお、このAPIについては「厳密にはAPI」ではない、ということが明言されております。

基本的に「政府標準利用規約に準拠してご利用いただける」とのことですので、気象庁さんのHPをご確認の上で、出典元の明記や第3者の権利に注意した上でお使いください、とのことですね。


PHONE APPLIについて

phoneappli.net
phoneappli.net