OpenWeatherで天気情報を取得

# はじめに

こんにちは。だい（[@ishidad2](https://x.com/ishidad2)）です。
梅雨が明けそうで明けないですねぇ〜（2024/7/11現在）
明日の天気は晴れるかなぁ？やっぱり雨かな？と天気アプリをずっと眺めています（嘘です。そんなに眺めてないです）
とまぁそんなこんなで、基本的な機能が無料で使える天気予報プラットフォームとしては有名どころのOpenWeatherというものがあるそうなので使ってみたいと思います。

https://openweathermap.org/


# アカウント登録

OpenWeatherは基本英語のサイトなので、翻訳機能等を使ってアカウント登録をします。

https://home.openweathermap.org/users/sign_up

上記より、必要な情報を入力してアカウント登録を行なってください。
メールが届くと思うので、メールから認証したらアカウントが使用できるようになります。
そんなに難しいことはないと思うので、詳しくは説明しません。

# プランの確認

OpenWeatherでは以下のプランが用意されています。（2024/7時点）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/5c6ce61a-b6e3-f749-4c7e-1d7802828880.png)

今回試したかったのが、Current WeatherというAPIになります。
Freeプランでも使用できるので今回はFreeプランを試してみようと思います。
**「Get API kye」** というボタンをクリックします。（アカウント登録していない場合はアカウント登録画面になります）

## Current Weatherとは

>Access current weather data for any location on Earth! We collect and process weather data from different sources such as global and local weather models, satellites, radars and a vast network of weather stations. Data is available in JSON, XML, or HTML format.

DeepL翻訳
>地球上のあらゆる場所の現在の気象データにアクセスできます。世界および地域の気象モデル、衛星、レーダー、広大な気象観測所のネットワークなど、さまざまなソースから気象データを収集して処理します。データは JSON、XML、または HTML 形式で利用できます。

https://openweathermap.org/current

# API keyの取得

**「Get API kye」** というボタンをクリックすると以下の画面に切り替わります。
上部タブの「API key」をクリックします。

![スクリーンショット 2024-07-11 15.59.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/fc3d27c0-daf9-7dd9-c97a-3294a7bb3cf7.png)

1つのAPI Keyは自動的に生成されるようです。

![スクリーンショット 2024-07-11 16.05.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/8c4235e2-461c-55f4-9d29-723a8cae643c.png)

## API Keysの追加

Create Keyの部分にAPI key nameという欄とGenerateというボタンがあるのでそれをクリックします。
API key nameには適当に好きな名称を入れてください。


![スクリーンショット 2024-07-11 16.05.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/2d3fcaad-277c-320b-a409-08295927171d.png)

新しいkeyが追加されました。

![スクリーンショット 2024-07-11 16.08.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/a9ffba1d-c29b-982c-6048-c4833236ce67.png)

# APIを実行する

https://openweathermap.org/current

早速、current weatherを試してみます。

エンドポイント情報は以下のようです（その他、都市を渡したりもできるみたい）

```
https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={API key}
```

このエンドポイントでは緯度経度とAPIkeyをパラメータに指定してエンドポイントを叩けば良さそうなので以下のようなエンドポイントを作成しました。（APIkeyは伏せてありますので自身の環境に合わせてください）
ちなみに、パラメータに指定した緯度経度の場所は東京スカイツリー周辺です。

```
https://api.openweathermap.org/data/2.5/weather?lat=35.71005584999215&lon=139.81071722377004&appid=xxxxxxxxxxxxxxxxxx
```

レスポンスは以下のようなJSON。

```json
{
	"coord": {
		"lon": 139.8107,
		"lat": 35.7101
	},
	"weather": [
		{
			"id": 501,
			"main": "Rain",
			"description": "moderate rain",
			"icon": "10d"
		}
	],
	"base": "stations",
	"main": {
		"temp": 302.37,
		"feels_like": 306.56,
		"temp_min": 300.94,
		"temp_max": 302.62,
		"pressure": 999,
		"humidity": 71,
		"sea_level": 999,
		"grnd_level": 998
	},
	"visibility": 10000,
	"wind": {
		"speed": 6.69,
		"deg": 210
	},
	"rain": {
		"1h": 1.54
	},
	"clouds": {
		"all": 75
	},
	"dt": 1720682379,
	"sys": {
		"type": 2,
		"id": 268105,
		"country": "JP",
		"sunrise": 1720640012,
		"sunset": 1720691913
	},
	"timezone": 32400,
	"id": 1857140,
	"name": "Minamisenju",
	"cod": 200
}
```

簡単に天気情報を取得することができました。
ユーザー登録、APIkey生成、天気情報取得までほぼ迷うこともなくできました。
この流れでJSONの解析は次回行いたいと思います。