くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

OpenWeatherMap APIで天気情報を取得する

頭痛仲間というアプリを作るときに、
気圧とかの天気情報を取得したいなと思い、
OpenWeatherMap APIを調べたときの備忘録。

シンプルだし、無料枠もあるのでよい感じだった。

OpenWeatherMapについて

現在の天候や予測履歴を含む各種気象データのAPIを提供してくれるサービス。
APIの種類も多くあるが、無料版だと制限があるので注意。

無料版だと、One Call APIだけっぽい感じ。
また、API呼び出しは、 1分に60回、1ヶ月に100万回まで。
1日に1000回、1ヶ月に30000回だった。。One Call APIの制限は少なめ。
Detailed price - OpenWeatherMap

One Call APIでは、以下の情報を取得できる

  • 現在の天候
  • 1時間後までの、1分毎の予測
  • 2日後までの、1時間毎の予測
  • 7日後までの、1日毎の予測
  • 5日前までの天候

アカウント作成

APIを利用するにはアカウントが必要なので、まずはアカウント作成
Sign Up | OpenWeatherMap

アカウントを作成するとAPI Keyを作成できるようになる
API Key | OpenWeatherMap

One Call APIの使い方

ドキュメントがわかりやすいので、こちらを参考に。

現在の天気と予測の取得(Current and forecast weather data)

APIの形式は以下の通り。
位置情報(latitude, longitude)とAPI Keyが必須。

https://api.openweathermap.org/data/2.5/onecall?lat={lat}&lon={lon}&exclude={part}&appid={API key}

レスポンスは、こんな感じ。

{
  "lat": 40.12,
  "lon": -96.66,
  "timezone": "America/Chicago",
  "timezone_offset": -18000,
  "current": {
    // 現在の天候
  },
  "minutely": [
    // 1分ごとの予報
  },
  "hourly": [
    // 1時間ごとの予報
  ],
  "daily": [
    // 1日ごとの予報
  ],
  "alerts": [
    // アラート情報
  ]
}

現在の天候(current)

"current": {
  "dt": 1595243443,        // 時刻
  "sunrise": 1595243663,   // 日の出時刻
  "sunset": 1595296278,    // 日の入時刻
  "temp": 293.28,          // 気温(ケルビン)
  "feels_like": 293.82,    // 体感気温(ケルビン)
  "pressure": 1016,        // 気圧
  "humidity": 100,         // 湿度
  "dew_point": 293.28,     // 露点温度(ケルビン)
  "uvi": 10.64,            // UV指数
  "clouds": 90,            // 雲量(%)
  "visibility": 10000,     // 視界(m)
  "wind_speed": 4.6,       // 風速
  "wind_deg": 310,         // 風向き(北=0, 東=90, 南=180, 西=270)
  "weather": [             // 天気情報
    {
      "id": 501,           // 天気ID
      "main": "Rain",
      "description": "moderate rain",
      "icon": "10n"
    },
    {
      "id": 201,
      "main": "Thunderstorm",
      "description": "thunderstorm with rain",
      "icon": "11n"
    }
  ],
  "rain": {
    "1h": 2.93              // 過去1時間の雨量(mm)
  }
},

weatherについては、以下のページに詳細が記載されている。
Weather Conditions - OpenWeatherMap

他のminutelyhourlyなども同様の情報を含んでる感じ。
Fields in API responseに詳細が記載されている。

温度関係は全部ケルビンで記載されるので、摂氏(℃)への変換が必要。
変換は以下の感じで、273.15引けばOK

℃ =K - 273.15

以上!!

頭痛仲間をリリースしました!

かわいいネコいっぱいの頭痛特化体調管理アプリです! よかったらぜひぜひ〜(´ω`)

▼頭痛仲間 http://zutsuu.memory-lovers.com/

参考にしたサイト様