【えーぴーあいれーとりみっと】

APIレートリミット とは?

最終更新:
💡 呼び出しのペースを、APIのルールに合わせる

APIを一定時間にどの程度呼び出せるかを制限する仕組み。負荷や不正利用を抑える目的などで使われ、利用者・認証・対象APIごとに条件が異なる。超過時の応答や待ち時間はサービスの仕様に従い、再試行を繰り返しすぎないようにする。

📌 このページのポイント
レートリミット:呼ぶペースの上限例:固定した1分の枠で、3回まで1回目 ✓2回目 ✓3回目 ✓4回目上限を超える待ち時間を確認429などの応答制限値・数え方・待ち方は、APIごとの仕様を確認
固定時間枠での説明用の例。実在するAPIの上限ではありません。応答コードや数え方はサービスによります。
ひよこ ひよこ
どうして、呼び出しの回数を制限するの?
ペンギン先生 ペンギン先生
特定の利用者が大量に呼び出して、ほかの人が使えなくなることなどを防ぐためだよ。GitHubは不正利用やサービス妨害を防ぎ、APIを利用できる状態に保つ目的を説明している。制限があるだけで、全利用者に完全に均等な資源や安全を保証するわけではないんだ。
ひよこ ひよこ
毎分60回なら、60回まで呼べる?
ペンギン先生 ペンギン先生
そういう設定の例はあるけれど、数え方や対象を確認しよう。同じAPIでも認証方法や操作で上限が違い、同時呼び出しなどに別の制限がある場合もある。図は固定した1分の枠で3回までという説明用の例で、実際のAPIの制限値ではないよ。
ひよこ ひよこ
上限を超えると、必ず429になる?
ペンギン先生 ペンギン先生
429 Too Many Requestsは、一定時間に呼び出しすぎたことを示すHTTP応答だよ。ただし全サービスが必ずこのコードを返すわけではない。GitHubの資料は403または429を説明している。応答の内容と、そのAPIの公式仕様を確認して判断しよう。
ひよこ ひよこ
Retry-Afterが来たら、秒数だけ待てばよい?
ペンギン先生 ペンギン先生
Retry-Afterは待つ秒数か、HTTPの日付で表せるよ。必ず付くヘッダーでもない。サービスが案内する待ち時間やリセット情報に従おう。再試行を続けて失敗するなら、間隔を広げ、回数にも上限を決める。変更や送信を伴う処理は、重複実行しないかも確認するんだ。
ひよこ ひよこ
制限にかかりにくい使い方は?
ペンギン先生 ペンギン先生
同じ情報を必要以上に何度も取らず、呼び出しのペースや同時実行を調整しよう。残り回数のヘッダーがあれば参考にするけれど、名前や値の意味はサービスによる。過去に見た料金プランや回数だけを使い続けず、対象APIの仕様と実際の応答を確認することが大切だね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「APIレートリミット」って出てきたら「APIを呼び出すペースに設けられた制限」と思えばだいたいOK!
📖 おまけ:英語の意味
「API Rate Limit」 = APIの呼び出し頻度の制限
💬 rateは頻度や割合。通信のビット毎秒の速さと同じものではなく、何をどう数えるかはAPIの仕様によるよ。

参考資料

← 用語集にもどる