Geocoding APIとは
Google の Google Maps Platform で使用できるAPIの中に Geocoding API というものがあります。
Geocoding API を使用すると、住所から緯度と経度を取得することができます。これをジオコーディングと呼びます。
また、緯度と経度から住所を取得することもできます。これを逆ジオコーディングといいます。
緯度と経度を取得することができると、その値を使用してGoogle Maps API で地図を表示したり、緯度と経度から目標地点との距離を計算して、目標地点から近い順にカフェをリスト化するといったことができるようになります。
Geocoding API の料金について
Geocoding API は 1,000リクエストごとに5ドルかかります。(2020/12/11現在)
Google Maps Platform は月間200ドル分までは無料で使えるので、Geocoding API だけを使用する前提で考えると月間40,000リクエストまでは無料で使用できます。
しかし、できる限りは節約したいのです。
例えば、同じ住所を何度も検索する場合に、都度 Geocoding API を使用してもいいのですが、そのたびにリクエストされてしまいます。
なので、一度検索した住所はデータベースに保存しておこうという発想に至りました。
そうすれば都度Geocoding API にリクエストしなくて済むので料金も発生しないという算段です。
※ただし、Google Map では住所がずれた、建物が変わったなど発生した場合に古い情報しか使用できないなどのリスクがあります。そのあたりはしっかり検討しないといけません。
リクエスト数の制限
データベースに保存するために住所録を用意し、住所ごとに Geocoding API を呼び出すバッチを作成することを考えました。
そこで気になるのはリクエスト数の制限です。制限に引っかからないようなバッチを作成するには知っておきたい情報です。
確認したところ標準では以下が最大です。
割り当て名 | 上限 |
Requests /日 | 無制限 |
Requests1分あたり | 3,000 ※ |
Requests1分あたり/ユーザー | 無制限 |
なお、Requests1分あたりの最大回数については、Google Maps のサポートに問合せをすることで増やすことができるとの記述があるので、何件まで増やすことができるかを問い合わせてみたところ、実際はよほどのことがないと増やすことができないと言われました。
私のアカウントが個人であったことがもしかしたら響いているかもしれませんので、法人用アカウントで引き伸ばしたい方はサポートに問い合わせてみてください。
なお、1日当たりのリクエストを1200程度に設定すると Geocoding API しか使わない場合は、絶対に料金を発生させないことができます。
まとめ
1分あたりの最大リクエスト可能数は3,000件ということから、バッチ処理などで使用したい場合は3,000リクエストを超えないようにスリープ処理やキュー待ちなど検討する必要がありそうです。
しかしながら、一般的な利用では無料枠を超えるリクエストをすることはまず無いでしょうと本家 Google も仰っているのでそこまで気にしなくてもいい内容かもしれないですね。
業務などで使用する方は参考にしていただけると良いかと思います。