#はじめに
気象情報APIを利用する機会があったのでAPIをいくつか比較したところ、
思った以上に情報にばらつきがあったり、情報量に差があったりしたので表にまとめてみました。
OpenWeatherMap | WeatherUnderGround | Forecast | |||||
天気 | ★ | 〇 | 〇 | ||||
気温 | 〇 | 〇 | ★ | ||||
最高気温 | 〇 | - | ★ | ||||
最低気温 | 〇 | - | ★ | ||||
湿度 | ★ | 〇 | 〇 | ||||
最高湿度 | - | 〇 | - | ||||
最低湿度 | - | 〇 | - | ||||
平均湿度 | - | 〇 | - | ||||
降水確率 | - | - | 〇 | ||||
降水量 | - | 〇 | 〇 | ||||
日の出 | ★ | - | 〇 | ||||
日の入り | ★ | - | 〇 | ||||
予報時刻 | 〇 | - | - | ||||
発表時刻 | - | 〇 | - | ||||
気圧 | 〇 | 〇 | 〇 | ||||
雲量 | 〇 | - | 〇 | ||||
風速 | 〇 | 〇 | 〇 | ||||
風向 | 〇 | 〇 | 〇 | ||||
最大風量 | - | 〇 | - | ||||
平均風量 | - | 〇 | - | ||||
積雪量 | - | 〇 | - | ||||
露点 | - | 〇 | 〇 | ||||
日射量 | - | 〇 | - | ||||
熱中症指標 | - | 〇 | - | ||||
UV指数 | - | ★ | - | ||||
体感温度 | - | ★ | 〇 | ||||
オゾン | - | - | 〇 | ||||
視程 | - | 〇 | 〇 | ||||
朝夕別の情報 | - | - | 〇 | ||||
朝夕別の気象情報詳細 | - | - | 〇 | ||||
過去3時間の雨量 | 〇 | - | - | ||||
過去3時間の積雪量 | 〇 | - | - | ||||
月の満ち欠け | - | - | 〇 | ||||
潮の干満 | - | 〇 | - | ||||
国名 | 〇 | 〇 | - | ||||
都市コード | 〇 | - | - | ||||
タイムゾーン | - | 〇 | 〇 | ||||
情報取得時の時刻 | - | 〇 | 〇 | ||||
予報年月日/時刻 | 〇 | 〇 | 〇 | ||||
天気アイコン | 〇 | 〇 | - | ||||
天気アイコンURL | - | 〇 | - | ||||
API提供元URL | - | 〇 | - | ||||
備考 | |||||||
予報間隔/頻度 | 5日間予報/3時間毎更新 | 3日間予報/更新頻度不明 | 現在/1時間毎/毎日の3種 | ||||
取得可能情報種類 | 18 | 28 | 23 | ||||
API call / 1分 | 60 | 10 | - | ||||
API call / 1日 | - | 500 | 1000(以降 1 / $0.0001) | ||||
※OpenWeatherMapの取得可能情報種類は5 day / 3 hour forecast APIでの情報 ※Weather Undergroundの取得可能情報種類はconditions APIでの情報 |
|||||||
####OpenWeatherMap
http://openweathermap.org/
・APIは数種類公開されていますが、無料で利用可能なものは現在の気象情報が取得できるもの、3時間毎/5日間の予報が取得できるものの2種類です。
・空港や都市部に設置されているものから個人観測所も含め40,000以上の観測所からデータを収集しています。データソースとして日本気象庁、アメリカ国立気象局、カナダ気象庁、ヨーロッパ中期予報センター等が挙げられています。
####Weather Underground
https://www.wunderground.com/
・アメリカ国内外合わせ60,000以上の都市の気象情報を提供しています 。アメリカ国内で200,000以上の観測所から、国外では29,000以上の観測所からデータを収集しています。
・200,000以上の観測所のうち、180,000以上が個人所有で、一般家庭の屋根や庭に設置された観測所だそうです。そうすることでよりローカルなポイントにフォーカスでき、利用者の現在地により近い情報が提供できるそうです。 そして、同種のサービスが気象庁やパブリックな観測所のみを利用し観測所数が12,000程度に留まっているのに対し、圧倒的な数の観測所数をキープしています。ただ、個々の観測所からの情報には差があるので正確さに欠くこともあるとの注意書きもあります。
・無料で利用可能なAPIの種類が豊富です。レーダーや衛星や観測所で撮影された映像/画像がGIF/Flash/PNGで取得できたり、潮の干満が取得できるAPIも公開されています。
・余談ですがこのWeather UndergroundはIBMの傘下であるThe Weather Companyという会社が保有しています。The Weather CompanyはIBMに買収される前からいくつかの子会社を抱えており、そのうちのひとつに The Weather Channelという、iOSに標準アプリとしてインストールされている天気予報アプリに情報を提供している会社もあります。
####Forecast
http://forecast.io/
・OpenWeatherMap同様、主なデータソースはアメリカ国立気象局やイギリス気象庁等の情報です。サイトの情報量が少なく観測所数や世界何都市をカバーしているかは不明です。
・公開されているAPIは2種類で、現在/1時間毎/毎日の情報が取得できるものと、過去60年間の指定した日付の気象情報が取得できるものの2種類が公開されています。
・非公式と記載はありますが実装が簡単にできるライブラリがサイト上でたくさん紹介されています。
#採用した理由
★が最終的に採用した項目です。
最終的に全てのAPIの合わせ技という結果になりました。
####OpenWeatherMap
ベースはOpenWeatherMapを使用しています。OpenWeatherMapは無料で利用可能で1日のコール数に制限がないため、最初はこのAPIのみを使う予定でした。しかし情報がイマイチな部分もあったので、 ベースはOpenWeatherMap、必要な箇所は別のAPIに差し替え、という実装になりました。
####Forecast
OpenWeatherMapとForecastで取得できる気温の値にさほど差はありませんでした。ただ、OpenWeatherMapは3時間毎に予報が更新されますが、
・その際に更新される気温は3時間先までの気温の平均なので今現在の気温が分かりづらい
・最高気温も3時間先までの気温の中での最高気温なので、固定ではなく3時間毎に更新される。結果、ほぼ常に気温と最高気温が同じ値になる
という理由から気温はForecastにしました。
#比較テスト
比較用のテストを作りました。
この日はラジオでも夕方から雨の予報でしたが、左から雨/雷雨/小雨と、降水量の予報が様々です。
気温は、前述の通り1日を通しての最高/最低気温が取得できるForecastに対しOpenWeatherMapは3時間先までの気温の中での最高/最低気温なので、最高気温と最低気温の差が小さく、この日1日の最低気温が25℃のように見えています。
数日間様子を見ていましたが天気に関しては主に気象庁や航空気象を基に予報を出しているOpenWeatherMapとForecastの2つは近い予報、独自のソースを持つWeather Undergroundだけ少し異なることが多い印象でした。
#まとめ
無料で利用可能、そして海外のサイトともなると情報の多少の不正確さは仕方ないようですが、このように比較検証し、好みで組み合わせることで満足のいく情報が得られたと思います。今回利用したのは基本的な情報のみでしたが、色々な情報が取得できるので、天気予報アプリだけでなく積雪量の情報なんかを使うと冬に役立つアプリが作れたりしそうだなぁと思いました。
気象情報はなかなか奥が深くおもしろかったです。
完成したアプリはこちらです
https://play.google.com/store/apps/details?id=jp.co.bravetechnology.android.heavyrain&hl=ja