メインコンテンツへ
短.be

レート制限

API やサービスへのリクエスト数を一定期間内で制限する仕組み。サーバー保護と公平な利用を実現する。

2026年8月23日 · 約 1 分で読めます

セキュリティ

レート制限 (Rate Limiting) とは、API やサービスに対するリクエスト数を、一定の時間枠内で上限値に制限する仕組みです。「1 分間に 60 リクエストまで」「1 日に 1,000 リクエストまで」のように設定され、上限を超えたリクエストには HTTP 429 (Too Many Requests) が返されます。この 429 は RFC 6585 で定義されたステータスコードで、一定時間内のリクエストが多すぎることをクライアントに伝えます。

レート制限の目的は 3 つあります。第一にサーバー保護 (大量リクエストによるサービスダウンの防止)、第二に公平性の確保 (特定ユーザーによるリソースの独占防止)、第三にコスト管理 (クラウドサービスの従量課金を制御) です。

短縮 URL サービスでは、レート制限が複数の場面で適用されます。URL 短縮 API のリクエスト数制限 (スパム的な大量生成の防止)、短縮 URL へのアクセス数制限 (DDoS 攻撃の緩和)、管理画面へのログイン試行回数制限 (ブルートフォース攻撃の防止) などです。

レート制限のアルゴリズムには主に 4 種類あります。固定ウィンドウ (1 分ごとにカウンターをリセット)、スライディングウィンドウ (直近 1 分間のリクエスト数を常時計算)、トークンバケット (一定速度でトークンが補充され、リクエストごとにトークンを消費)、リーキーバケット (一定速度でリクエストを処理し、超過分をキューに蓄積) です。

API を利用する開発者がレート制限に対処するには、レスポンスヘッダーを確認して残量に応じてリクエスト頻度を調整する実装が必要です。残量を伝えるヘッダーの名前はサービスごとに異なり、X-RateLimit-Limit や X-RateLimit-Remaining といった名前が慣習的に使われてきました。標準のヘッダーは策定作業が進んでいる段階で、2026 年 8 月時点では Internet-Draft です。429 レスポンスを受けた場合は、Retry-After ヘッダーがあればその値に従って待機します。ヘッダーが無い場合や、待機して再送しても 429 が続く場合は、待機時間を段階的に伸ばす指数バックオフを併用します。この 2 つは別の手段で、Retry-After に従う待機がそのまま指数バックオフになるわけではありません。

X でシェアはてブ

この記事は役に立ちましたか?

関連用語

関連記事

よくある質問

レート制限に引っかかったらどうすればいいですか?
HTTP 429 レスポンスの Retry-After ヘッダーを確認し、指定された時間だけ待機してからリトライしてください。Retry-After は待機秒数のほかに、再送可能になる日時の形式でも返せるため、両方の書式を読める実装にしておくと安全です。ヘッダーが付いていないこともあるので、その場合は待機時間を段階的に伸ばして再送します。自分の送信量が少ないのに制限に達するときは、制限を数える単位を確認してください。IP アドレス単位で数えるサービスでは、共有回線や社内ネットワークのように出口 IP が同じ利用者の分がまとめて数えられることがあります。頻繁に制限に達する場合は、リクエストの間隔を広げるか、上位プランへのアップグレードを検討しましょう。
レート制限はどのくらいの値が一般的ですか?
サービスによりますが、無料プランでは 1 分間に 10 〜 60 リクエスト、有料プランでは 1 分間に 100 〜 1,000 リクエスト程度が一般的です。短縮 URL サービスの API では、1 時間あたりの短縮回数に上限が設けられ、分単位の上限も併せて課されることがあります。具体的な値はサービスとプランで大きく変わるため、利用前に各サービスの API ドキュメントで確認してください。
自分の API にレート制限を実装するには?
Nginx の limit_req モジュール、API ゲートウェイ (AWS API Gateway など) の組み込み機能、Redis を使ったトークンバケットの自前実装などが一般的です。小規模なら Nginx の設定だけで十分対応できます。

知識を、実際のリンクで。

無料で URL を短縮する