mutao.net

いわゆる雑記。

Golangでopenweathermapを使ってみる

openweathermap.org

天気予報の個人使用無料のAPIを使ってみたかったので作成。

気象庁が公開している非公式のAPIもありますが、1時間毎のデータを取得できる等のメリットがあるopenweathermapを使用。

openweathermap.org

FreePlanでアカウントを作成してマイページからAPP_IDをコピペしてリクエストできます。

APP_IDが発行されたばかりではリクエストできず401が帰ってきます。数時間立てばリクエストできるようになります。

openweathermap.org

試しに東京の天気を取得します。

curl "https://api.openweathermap.org/data/2.5/onecall?lat=35.681236&lon=139.767125&units=metric&lang=ja&appid=#{appId}"
{
    "lat": 35.6812,
    "lon": 139.7671,
    "timezone": "Asia/Tokyo",
    "timezone_offset": 32400,
    "current": {
        "dt": 1629008734,
        "sunrise": 1628971183,
        "sunset": 1629019889,
        "temp": 19.85,
        "feels_like": 20.37,
        "pressure": 1012,
        "humidity": 95,
        "dew_point": 19.03,
        "uvi": 0.37,
        "clouds": 75,
        "visibility": 5000,
        "wind_speed": 2.06,
        "wind_deg": 350,
        "weather": [
            {
                "id": 701,
                "main": "Mist",
                "description": "霧",
                "icon": "50d"
            }
        ]
    },
{省略}

大量のデータを取得できます。

これをGoでParseして構造体にするにはこんな感じ。

github.com

使ってみてわかったこと。

  • 大量のデータを取得できるので色んなことができそう。
  • go get で扱えるようにしたい。
  • とりあえず動くようにしただけなのでもっと作り込みがしたい。