Google Drive APIを利用する上で注意すべきポイント
皆さんは普段 Google ドライブを使っていますか?私はプライベート用途に限らず、ビジネス用途でもファイルストレージとして利用しています。しかし、 Google ドライブはツールとして使うだけでなく、例えば私たちの業務フローに組み込むことができることをご存知でしょうか。
Google ドライブ はユーザーがより便利に Google ドライブを活用するためにAPIを公開しているため、私たちはAPIを利用して独自のアプリケーション、拡張機能を開発することができます。しかしながら、いくら莫大なコンピューティングリソースを保持する Google と言っても、無制限にAPIを実行できるわけではありません。今回は Google Drive APIの制限値について解説します。
Google Drive APIの制限値をまとめてみる
Google Drive APIの制限値を以下にまとめました。公開されている情報もあれば、非公開情報もあります。
各制限 | 制限値 | 備考 |
---|---|---|
アップロード | 750GB/日/ユーザー | |
アップロード最大サイズ | 5TB | |
API実行回数(日) | 1,000,000,000回 | Google Cloud Platform の管理コンソール上で確認した時のデフォルトの制限値 |
API実行回数(100秒単位) | 20,000回 | Google Cloud Platform の管理コンソール上で確認した時のデフォルトの制限値 |
API実行回数(100秒/ユーザー単位) | 20,000回 | Google Cloud Platform の管理コンソール上で確認した時のデフォルトの制限値 |
ダウンロード | 非公開 |
アップロード制限はほとんどの利用ケースで問題なし?
上表の通り、アップロードに対しては一日750GBの制限がありますが、これだけの容量があれば、ほとんどの要件で問題は発生しないのではないでしょうか。しかも、これはユーザー単位の制限です。
回避テクニック
マイドライブ上に750GB以上のファイルをアップロードしたい場合は、複数のユーザーアカウントを利用してアップロードすると良いでしょう(共有ドライブの場合は、チームで750GBの制限が発生するため、アカウントの負荷分散は利用できません)。ユーザーによって、負荷分散を行うことができれば、(あなたが利用するネットワーク帯域にもよりますが)デイリーで数TBのファイルをアップロードすることは論理的には可能です。ただし、そもそも Google ドライブの保存容量自体が少なければ、前述した制限に関らず、大容量のファイルをアップロードすることはできません。それについては注意が必要です。
APIの秒間実行回数に注意
例えば、バッチ処理で大量のファイルに対してAPIを実行する場合は、APIの実行回数制限に注意が必要です。Google Cloud Platform で ドライブ APIのquotaを確認すると、100秒に10,000回の制限が記載されていますが、これは1秒単位にも制限が発生すると思われます(開発経験上の知見ですので、オフィシャルな情報ではありません)。APIの制限値については、 Google に申請すれば制限値を上げることも可能ですので、そちらを検討をしてみるのも良いかもしれません。ただし、申請フォームには、制限値を上げたい理由等、記載項目が多く、非常に面倒ではあります。
回避テクニック
前述した通り、APIのquotaは申請によって上げることも可能ですが、「指数バックオフ」によって制限エラー対策を行うことも可能です。「指数バックオフ」とは、待機時間を指数対数的に増やしながら、APIの再リトライを行う対応を指します。1秒、2秒、4秒、8秒・・・のように待機時間を増やしていきます。これは Google 公式の回避テクニックであるため、有効に作用すると思われます。
ダウンロードの制限値は非公開
ドライブ APIのダウンロード制限値は公開されていませんが、以前ファイルを不特定、大多数のユーザーに公開した時に接続ができなかった事があります。
回避テクニック
回避テクニックは正直・・・ありません。一度制限が発生すると、Google が制限を解除するまで私たちは何もする事ができません。ダウンロードについては制限値が公開されていない以上、利用には注意が必要です。
制限超過を連続して起こした場合、24時間ロックがかかる可能性がある
Google が公式でアナウンスしているわけではないですが、1日のうちでAPIの制限超過を何度も起こした場合、 Google アカウントにロックがかかる可能性があります。このアカウントロックが発生した場合そのアカウントでAPIを実行できなくなります。私は何度かその事象に遭遇したことがありますが、サンフランシスコ時間の0:00になるまでその制限は解除されませんでした。おそらく私のケースでは、APIの実行回数の制限超過を何度も起こしてしまったことがアカウントロックの原因だと思われます。実際に「指数バックオフ」を取り入れてから、このアカウントロックは発生しなくなりました。
APIの制限を考慮して開発を行おう
以上が主な Google Drive APIの制限値です。「こんな制限もあったんだ?」と思った方も多いのではないでしょうか。Google Drive APIの制限は Google ドライブの拡張開発を行う以上、避けては通れません。是非、ここまで説明した制限値を考慮した上で開発を行っていただければと思います。
今回のまとめ
今回の記事のまとめは以下の通りです。
- アップロード制限: Google ドライブのアップロード制限は750GB/日/ユーザーです。これは大半のユーザーにとっては十分な制限値であり、日常的な使用では問題になることは少ないでしょう。
- APIの実行回数と制限の申請: Google ドライブのAPIには秒間の実行回数制限が設定されていますが、特定のプロジェクトや要件に応じて、Googleに制限値を上げる申請を行うことが可能です。これにより、大規模なプロジェクトやデータ集約型のアプリケーションでの使用が容易になります。
- 指数バックオフの利用: APIの実行回数制限に対処する一つの方法として、指数バックオフが有効です。これは、APIリクエストが制限に達した場合にリトライ間隔を徐々に延長していく手法で、APIの使用を最適化し、制限を超えるリクエストを避けるのに役立ちます。
- ダウンロード制限の非公開性: Google ドライブのダウンロード制限に関する詳細は非公開です。そのため、大量のダウンロードや高頻度のアクセスを行う際には注意が必要です。突然の制限やアクセス遮断を避けるために、使用パターンを慎重に管理することが推奨されます。
これらの制限は、Google ドライブの効率的かつ安全な利用を保証するために設けられており、ユーザーはこれらのガイドラインに従ってサービスを利用すると良いでしょう。