ウェブサービスの使用を最適化

注: 現在、新規にお申し込みのお客様は Google Maps Platform プレミアム プランをご利用いただけません。

概要

アプリケーションによる Google Maps Platform ウェブサービスの使用量が上限を超えると、そのサービスからエラー メッセージが返されます。使用量上限を超える状態がその後も続くと、ウェブサービスへのアクセスがブロックされ、場合によっては「403 Forbidden」レスポンスが返されます。

アプリケーションのウェブサービス リクエストでエラー メッセージが返された場合は、次の方法で対処できます。

  1. ウェブサービスの運用効率が高まるようにアプリケーションを最適化し、使用量を削減する。
  2. 可能であれば、Maps API クレジットを追加購入し、使用量上限を引き上げる。

事前の確認事項

アプリケーションによるウェブサービスの使用を最適化する前に、ユースケースに応じた適切なサービスと Maps API ライセンスを使用していることをご確認ください。

ユースケースを確認する

Google Maps Platform のウェブサービスは、リアルタイムでのユーザー入力を必要としないアプリケーションや、ウェブブラウザを使用しない場合に適しています。たとえば、ユーザー入力とは無関係のデータセット(不動産サイトで、ジオコーディングが必要な一連の住所データなど)を使用するアプリケーションは、ウェブサービスが適しています。

ウェブサービスを使用する場合、リクエストを送信した IP アドレスの数にかかわらず、プレミアム プラン ライセンスに秒間クエリ数(QPS)に上限が適用されます。

一方、Maps JavaScript API で使用できるクライアント側サービスでは、リクエストがすべてのユーザーに分散され、ユーザーの増加に応じて拡張できるようにするため、ブラウザ セッションごとにレート制限が適用されます。したがって、ユーザーの自宅周辺の店舗を検索するなど、ユーザーが入力した住所をリアルタイムでジオコーディングするアプリケーションには、クライアント側サービスが適しています。

ウェブサービスが適しているユースケースについて詳しくは、ジオコーディング時の最適化方法をご覧ください。このドキュメントではジオコーディングの推奨事項に焦点を当てていますが、サーバー側のウェブサービスが適しているケースと、クライアント側の同等の機能が適しているケースについての説明は、あらゆるウェブサービスにあてはまります。

Google Maps Platform プレミアム プランのライセンスを使用する

アプリケーションのリクエストに、Google Maps Platform プレミアム プランの正しい認証情報が含まれていることを確認してください。つまり、Google Cloud Platform Console のプレミアム プラン プロジェクトで、クライアント ID または API キーが使用されている必要があります。

アプリケーションでプレミアム プラン ライセンスが正しく使用されていないと、標準プランの使用量上限、および Google Maps Platform 利用規約のライセンス制限が適用され、プレミアム プラン SLA の対象外となります。さらに、アプリケーションのテクニカル サポートを利用できなくなります。

ウェブサービスの使用を最適化する方法

ウェブサービスを効率的に使用するには、必要なときのみリクエストを送信して使用量を減らし、負荷を均等に分散させて、上限を超えないようにする必要があります。

結果をキャッシュする

Google Maps Platform 利用規約の第 3.2.4.b 項では、アプリケーションのパフォーマンスを向上するためであれば、Google マップのデータを一時的に(最長 30 日間)キャッシュできると定められています。ウェブサービスのレスポンスをキャッシュすれば、同じリクエストを短期間に何度も送信せずにすみます。ウェブサービスのレスポンスには必ず Cache-Control HTTP ヘッダーが含まれています。これは、結果をキャッシュできる期間を示します(例: Cache-Control: public, max-age=86400)。運用効率を高めるため、少なくとも、このヘッダーで指定されている期間は結果をキャッシュしてください。ただし、Google Maps Platform 利用規約で定められている最大時間を超えないようにする必要があります。

ウェブプロキシを使用してキャッシュ機能を実装できます。ほとんどのウェブプロキシでは、この機能を初期設定のまま実行できます。独自のウェブプロキシ実装を使用することも可能です。なお、一部の HTTP クライアント ライブラリでも、HTTP レスポンスをキャッシュします。

キャッシュ ヒット率を上げるため、 経度 / 緯度(lat/long)座標を小数点以下 6 桁で丸めます。これにより、赤道上で約 11 cm の精度が得られます。小数点以下桁数をこれ以上増やしても、ウェブサービスからの結果は変わらず、キャッシュ ヒット率が下がります。

リクエストを絞り込む(スロットリング)

使用制限の超過を避けるため、リクエストの送信日時を監視するキューにリクエストを入れて、リクエストを絞り込むようにアプリケーションを設定できます。アプリケーションが QPS 制限を超える追加のリクエストを受信した場合、最初のリクエストのタイムスタンプを確認し、1 秒待ちます。

スロットリングを行っても、ステータス コード OVER_QUERY_LIMIT のレスポンスを受け取る可能性があります。このようなレスポンスを受信したら、短時間の遅延(20 ms)を挿入するようにアプリケーションを設定し、再試行してください。

QPS 制限を引き上げる

スロットリングを適切に実装すれば、アプリケーションが送信するリクエストが使用量上限を超えることはなくなります。ただし、アプリケーションが受け取る入力が多すぎたり、頻度が高すぎたりすると、Google Maps Platform ウェブサービスの使用レート上限(通常は 50 QPS)を超えてしまう可能性があります。その場合、スロットリング キューが増加し、未処理のリクエストが発生します。また、Places API は、当初は 50 QPS に制限されています。アプリケーションで、このような未処理のリクエストが毎日特定の時間帯や一日を通して定期的に発生する場合は、Google Maps Platform プレミアム プラン ライセンスの QPS 上限を引き上げる必要があります。QPS の引き上げをご希望の場合は、Google Maps Platform のセールス アカウント マネージャーにお問い合わせください。