OpenWeatherMapAPI使ってみた
海外旅行向けの Web アプリを個人開発している中で使用した OpenWeatherMap API の不思議な動作について自分なりの考察を書こうと思います。
※ 本記事の内容は個人の考察であり、公式に発表されているものではありませんのでご注意ください。
OpenWeatherMap APIとはなんぞや?
OpenWeatherMap APIとはその名の通り天気情報を取得するAPIです。世界中の天気の情報が取得できます。
ざっくり特徴をまとめると
✅無料での利用が可能(機能の制限アリ)
✅1か月単位や3hごとに5日分の天気を取得するなど自由度が高い
何といっても無料で使用できるのはおいしいところではないでしょうか。このブログを書いている時点では1日に1000回までは無料でcallできるそうです。天気の情報は一度取得すればキャッシュサーバーなどに保持しておくだけでよいので無料枠でも十分なケースも多そうです。
不思議な動作と考察
ここからは実際に動かしていた時に起きた不思議な動作。それはレスポンスに含まれる天気情報の期間です。実際の挙動を見せながら説明します。
以下は 2025/06/08 21:33 に5日分を 3h ごとに取得する API を call したときのレスポンスにおける先頭要素です。最後の dt_txtを見ると「んん?」と感じませんか?
Q. 21:33に実行したのに約 6h 前の 15:00のデータが先頭にあるのはなぜ?予想では 21:00 のデータが先頭だと思っていたので、かなり気持ち悪く感じました。これについてはドキュメントに明記されていなかったのでどういうロジックなのか厳密には分かりません。しかし、他の時間帯でも実行することで1つの仮設にたどり着きました。
A. call した時間よりも前の区切り (0,3,6,9,12…) の時間 - 6h のデータがレスポンスの先頭になる。
長くなるため上で張ったデータ以外は割愛しますが、21:33の場合で見てみます。21:33 より前の区切りとなる時間は 21:00 です。そして 21:00 の6h 前は 15:00。あくまで仮説ですが、何度か試してみて問題なさそうでしたので私はこれで開発を進めました。
※ 6h の時差は謎すぎでした(笑)
終わりに
初めは YahooのAPIで実装する予定だったのですが、海外のデータを取得できないことから本APIを使用するにいたりました。開発中のアプリについては以下の記事にまとめています。
Discussion
ドキュメント に記述がありますが、
list.dt_txt
はUTCなので、JSTで扱うなら時差(UTC+9)を考慮する必要があります。今回の場合だと 先頭要素は 日本時間 2025/06/09 00:00 の予報ということになるはずです。