ここ1、2年くらいYouTube Data API(v3)を使ったWebサイトを作成して遊んでみました。今回はクォータ(割り当て、quotas)について、公式マニュアルを見て分からなかった部分や勘違いしてしまった部分に記載します。
前回の記事
YouTube Data APIを導入した際のページは以下になります。導入などの際は参考にしてもらえればと思います。
公式マニュアルについて
マニュアルページ
まずは公式マニュアルの記載内容について確認します。
https://developers.google.com/youtube/v3/getting-started
公式マニュアルの記載
公式マニュアルの「クォータの使用量」の内容を読むと以下のように書いてあります。
クォータ コストは操作の種類ごとに異なります。
https://developers.google.com/youtube/v3/getting-started
読み取りおよび書き込み操作で使用されるクォータの量は、各リクエストが取得するリソースのパーツ数に応じて異なります。
https://developers.google.com/youtube/v3/getting-started
また、ここでは記載しませんがリクエスト可能な件数の記載があります。
これらのマニュアルを読み、私は以下のように解釈しました。
- 取得するパーツが多い方がクォータの消費量が多い
- 取得するデータの件数が多い方がクォータの消費量が多い
詳しくは後述しますが、先に結論だけ書いておくと上記は両方とも誤りでした。
補足:ネットワーク使用量について
「リソースのパーツ」のところで以下について触れています。
- part パラメータ
- fields パラメータ
最初この部分もクォータ関連の説明に見えましたが、これはクォータというよりはネットワーク使用量についての話でした。
今回の話はクォータを主軸に見ますが、実際は上記の通りネットワーク使用量など他の観点もあるので注意が必要です。
実際のクォータの消費量について
実際にYouTube Data APIを使ってみた結果、以下のことが分かりました。
- 取得するパーツ数によってクォータの消費量は変わらない
- 取得するデータ件数によってクォータの消費量は変わらない
一言で書くとこれで終わりですが、もう少し詳しく説明してみます。
取得するパーツ数によってクォータの消費量は変わらない
取得するリソースはpartのパラメータで指定します。partのパラメータは利用するAPIによっても変わりますが、idやsnippet、contentDetailsといったものが指定できます。また、1回のリクエストで複数のpartを指定し、同時に複数のリソースを取得できることができます。
公式ドキュメントの記載を見るとpartの指定を増やせば増やすほどクォータの消費量が増えるように見えます。しかし、実際に動かしてみた結果、partの指定を増やしてみてもクォータの消費量はあまり変化しませんでした。
取得するデータ件数によってクォータの消費量は変わらない
取得データの件数はmaxResultsのパラメータで指定します。maxResultsのパラメータは0 以上 50 以下の数字を指定します。指定していない場合は5が指定された扱いになります。
当初、データ件数が多いほど当然クォータの消費量は多いだろうと考えていました。つまり、1を指定すればクォータの消費が少なく、50を指定するとクォータの消費が大きくなるだろうと考えました。
しかし、実際に動かしてみたところmaxResultsに1を指定しても50を指定してもほとんどクォータの消費量は変わりませんでした。
補足
「取得するデータ件数によってクォータの消費量は変わらない」は厳密には「1回のリクエストで」という話になります。
実際は取得したい対象によっては、50件を超えるリソースが含まれることがあります。例えば、とあるチャンネルの動画の一覧を取得したい場合などです。
このような場合、最初のAPIのリクエストの際のレスポンスに含まれるnextPageTokenの値を使います。これを最初のAPIのリクエストに加えて、pageTokenの項目に追加してリクエストすることで次のページの情報が取得できます。
さらに次の情報が欲しい場合は2度目のレスポンスに含まれるnextPageTokenの値を用いて次のリクエストを行います。これを繰り返すことで、50件、100件と多くのリソースを取得することができます。
この時、クォータはリクエストのたびに消費されます。つまりmaxResultsで最大の50を指定していれば、50件ごとにクォータの消費量が増えることになります。
その他のクォータ関連の話
その他、クォータ関連で分かったことを記載しておきます。
クォータの確認方法
クォータの消費量はコンソール画面で確認できます。公式マニュアルにもリンクがありますが以下のページになります。
https://console.cloud.google.com/apis/api/youtube.googleapis.com/quotas
クォータの消費量の目安
実際に動かしてみて分かったクォータの消費量の目安について記載します。
ただし、あくまで一例なので参考程度の情報です。使い方によってはまた違うかもしれないので、ご注意ください。
検索API
検索のAPIのクォータの消費量について記載します。具体的には以下のAPIのクォータの消費量になります。
https://developers.google.com/youtube/v3/docs/search/list
試してみた感じ上記の消費量は大体100くらいでした。100を少し超える程度で見込んでおくとちょうど良いかなと思います。
データ取得系のAPI
データのAPIのクォータの消費量について記載します。具体的には以下の2つのAPIのクォータの消費量になります。
https://developers.google.com/youtube/v3/docs/videos/list
https://developers.google.com/youtube/v3/docs/channels/list
試してみた感じ上記の消費量はほとんどなく、1か2程度でした。多くみても2程度で十分かなと思います。
1日に使えるクォータの量について
過去は最初から多くの割り当てが貰えていたみたいですが、現在YouTube Data APIを使う場合、1日に使えるクォータの量は10,000になります。このクォータの量は気をつけないと結構簡単に超えてしまう程度の量です。申請・申込をすることでを増やすことができますが、私は申し込んでいないので詳しい部分は不明です。将来、申請などすることがあったら追記したいと思います。
また、ここで補足ですが、コンソール画面で見た時、1日あたりのクォータの量や1分あたりのクォータの量などの項目があります。しかし、現在の初期割り当てのクォータの量だと、1日あたりのクォータの量が一番少ないため、1分あたりのクォータの量などは実質意味のないものになっています。申請を出してクォータの量を増やした場合に初めて有効なものだと思います。
クォータのリセットのタイミング
クォータのリセットのタイミングはコンソール画面に記載されています。それによると太平洋時間(PT)の午前 0 時にリセットされていることになっています。
今まで太平洋時間に触れたことがなかったので不安がありますが、試した感じ夏時間が適用されている感じでした。
つまり夏時間が適用されている間は日本時間では午後4時、夏時間が適用されていない間は午後5時にリセットされてそうでした。
夏時間の場合でもそうでない場合でも大丈夫なように午後4時から午後5時の間はあまりクォータの消費が大きい処理はしない方が良いかなと思います。
最後に
ここ1、2年ほどYouTube Data APIを使ってみてノウハウが溜まってきたので、せっかくなので今回まとめてみました。
ただ私が使ったAPIは参照系のAPIなので、アップロードなどの更新系APIだとまた違う部分などあると思います。
今のところ予定はありませんが、更新系APIを使う機会があればまた記事を作成したいと思います。
コメント