この記事で分かること
YouTube Data APIには1日10,000ユニットというクォータ上限があります。この記事では、実際にコメント投稿を自動化して運用してみて分かった「検索のほうが投稿より高い」というコスト構造と、1日5件のコメント設計が実際に何ユニット消費するのか、そしてチャンネルを増やすときにクォータをどう分けているかを書きます。
クォータの単位は「リクエスト回数」ではない
YouTube Data APIのクォータは1日10,000ユニットです。ここで注意が必要なのは、この「ユニット」がリクエスト回数と一致しないことです。エンドポイントごとに消費するユニット数が違います。
search.list 100ユニット/回 commentThreads.insert 50ユニット/回 videos.list 1ユニット/回 channels.list 1ユニット/回
この表を初めて見たとき、私は順番が逆だと思いました。書き込み系のほうが重いはずだ、という思い込みがあったからです。実際には、動画を検索するsearch.listが100ユニットで、コメントを投稿するcommentThreads.insertの50ユニットの2倍です。
「何に返信するか探す」ほうが「実際に書く」より高い
これは設計に直接効いてきます。コメント自動投稿の処理は、大きく分けると次の2段階です。
- どの動画にコメントするかを探す(search.list:100ユニット)
- 実際にコメントを書き込む(commentThreads.insert:50ユニット)
つまり、コストの重心は「書く」ではなく「探す」側にあります。投稿件数を減らしてもクォータはあまり減らず、検索の呼び方を変えたほうが効きます。逆に言えば、一度の検索結果を使い回して複数件投稿する設計は、クォータの観点では素直に安くなります。
また、videos.listやchannels.listは1ユニットです。この差は100倍あります。動画IDが既に分かっているなら、search.listで探し直すのではなくvideos.listで取りに行く。これだけでコストが2桁変わるので、実装するときは「今この処理は探しているのか、既に知っているものを引いているのか」を意識するようにしています。
1日5件コメントする設計の実際の消費量
私が運用している構成は、1日5件コメントするというものです。計算するとこうなります。
検索 100 × 1回 = 100ユニット 投稿 50 × 5回 = 250ユニット ------------------------------ 合計 350ユニット (上限 10,000ユニット)
350ユニットです。上限10,000に対して余裕があります。この数字を出す前は、クォータが足りるかどうかが不安要素でしたが、実際に計算してみると心配していたレベルとは桁が違いました。
注意しておきたいのは、これはあくまで「検索1回・投稿5回」という設計の場合の数字だということです。検索の回数を増やせばここは一気に膨らみます。100ユニットの処理を1日に何十回も回す設計なら、投稿件数が同じでもクォータの話は別物になります。
チャンネルを増やすときはプロジェクトを分ける
クォータは Google Cloud プロジェクト単位で割り当てられます。そのため、チャンネルごとにGoogle Cloudプロジェクトを分けると、クォータも別々になります。
私は現在2チャンネルを、それぞれ別プロジェクトで運用しています。この構成にしておくと、片方のチャンネルで検索処理を増やしても、もう片方のクォータには影響しません。1プロジェクトにまとめて10,000ユニットを2チャンネルで奪い合う形にしなかったのは、そこが理由です。
ただし、この分け方が規模を増やしたときにどこまで通用するのかは、私はまだ確かめていません。2チャンネルで問題なく動いている、というところまでが実際に分かっていることです。
設計するときに見ている順番
- まず、その処理は「探す」のか「既知のものを引く」のかを分ける
- 探す(search.list)なら100ユニットなので、1日に何回呼ぶかを先に決める
- 投稿(commentThreads.insert)は50ユニットなので、件数×50で見積もる
- videos.list / channels.list は1ユニットなので、ここは基本的に気にしていない
クォータ設計というと難しそうに聞こえますが、実際にやっていることは「100の処理を1日何回呼ぶか決める」だけに近いです。1ユニットの処理をいくら呼んでも、100ユニットの検索1回のほうが重いからです。
まとめ
- YouTube Data APIのクォータは1日10,000ユニット。エンドポイントごとに消費量が違う
- search.listは100ユニット、commentThreads.insertは50ユニット。探すほうが書くより高い
- videos.list / channels.list は1ユニット。既知のIDを引くだけなら検索の100分の1で済む
- 1日5件コメントする設計なら、検索100 + 投稿250 = 350ユニット。上限には余裕がある
- クォータの見積もりは、投稿件数より「検索を1日何回呼ぶか」で決まる
- チャンネルごとにGoogle Cloudプロジェクトを分ければクォータも別々になる。実際に2チャンネルを別プロジェクトで運用中
- ただし、この分け方がチャンネル数を増やしたときにどうなるかは、まだ確かめていない


