メインコンテンツにジャンプ

API アプリストアの規制に適合するためのリクエスト制限

Learn about API rate limiting methods and their importance for app store compliance, security, and system performance.

マーティン・ドナディュー

マーティン・ドナディュー

コンテンツマーケター

API アプリストアの規制に適合するためのリクエスト制限

API リクエスト制限は、アプリがAppleとGoogleのガイドラインに適合し、システムがオーバーロードや悪用から保護されるようにします。ユーザーがリクエストを送信する頻度を制限し、セキュリティを向上させ、コストを節約し、平滑なパフォーマンスを保証します。ここでは、必要なことを知っておく必要があります。

  • なぜ重要か: brute force攻撃を防ぎ、サーバーの負荷を管理し、アプリストアの拒否を避けます。
  • Methods:
    • Fixed Window: 交通量の急増を引き起こす可能性がありますが、シンプルです。
    • Sliding Window: 交通量を滑らかにしますが、メモリを多く使用します。
    • Token Bucket: 交通量の急増に対応できますが、設定が複雑です。
  • Compliance: リトライの際に指数バックオフを使用し、制限を超えると429のステータスcodeで応答します。
  • Tools: Cloudflareなどのプラットフォームは Capgo 実行時間の分析、エラートラッキング、リアルタイムモニタリングなどを提供し、実装を簡素化します。

Quick Tip: __CAPGO_KEEP_0__ の限界を正常、バースト、回復条件下でテストして、安定性と適合性を確認する。

API リート制限の理解: 目的、種類、基本…

App Store API ガイドライン

API リート制限は、App Store の要件を満たすために重要な役割を果たします。 Apple と Google は、ユーザー データ保護とシステムの安定性を確保するために、特定のルールを設けています。 ここでは、そのポリシーを簡単に説明します。

Apple の API リート制限

Apple は、認証、データ リクエスト、パブリック エンドポイントなどの領域に限り、制限を設けています。 これらの制限を侵害すると、レビュー プロセス中にアプリの却下、App Store からの一時的な削除、または緊急修正が必要になるなどの結果が生じる可能性があります。 過剰な制限を管理するには、開発者は、再試行間の遅延を徐々に増やす「指数的バックオフ」などの方法を使用することを推奨されています。 Google の __CAPGO_KEEP_0__ リート制限Google Play Store

Google’s API Rate Limits

Google Play Store App Store

制限レート実装手順

制限レートの方法

API制限レートを実装する場合、選択するアプローチは、ご利用のアプリケーションの要件に合致するものでなければなりません。以下に、よく使用される3つの方法が示されています。

固定ウィンドウ制限レート: この方法では、一定の間隔でリセットされる制限値(例:100回)が設定されます。直感的ですが、各期間の終わりにはトラフィックの急増が発生する可能性があります。

スライディングウィンドウ制限レート: このアプローチでは、一定の時間枠を使用してトラフィックを滑らかにします。たとえば、制限が1分あたり100回のリクエストである場合、2:00:30 PMに50回のリクエストを実行したユーザーは、2:01:30 PMまで50回のリクエストを実行できます。

トークン・バケット・アルゴリズム: この方法では、一定のレートでトークンを補充することができます。各API呼び出しは1つのトークンを使用し、トークンが尽きるまでリクエストは拒否されますが、補充されるまで待つ必要があります。

方法 メリット デメリット Best For
固定ウィンドウ 実装が簡単、メモリ使用量が低い トラフィックの急激な増加を引き起こす可能性がある 基本的なAPIエンドポイント
スライディングウィンドウ トラフィックの流れが滑らか、精度が向上する メモリ使用量が増える ユーザー認証API
トークンバケット バーストを処理し、カスタマイズ可能 実装が複雑なので 高トラフィックのパブリックAPI

スライディングウィンドウ法を使用した実践的な例

実装例

以下は、スライディングウィンドウのレート制限を実装するためのcodeのスニペットです。

const rateLimit = async (userId, limit, window) => {
  const now = Date.now();
  const key = `ratelimit:${userId}`;

  const multi = redis.multi();
  multi.zremrangebyscore(key, 0, now - window); // Remove expired requests
  multi.zadd(key, now, now);                   // Add the current request
  multi.zcard(key);                            // Count requests in the window

  const [,, count] = await multi.exec();

  return count <= limit; // Return true if within limit
};

レート制限のテスト

レート制限を実装した後、期待どおりに機能することを確認するために、以下の領域を徹底的にテストしてください。

  • 基本的な制限テスト: 通常のレートでリクエストを送信して、標準的な機能を確認します。
  • バーストテスト: 同時多数のリクエストを送信して、制限が適用されていることを確認します。
  • 復旧テスト: 制限がリセットされた後、システムの挙動を確認します。
async function testRateLimits() {
  // Test normal usage
  for (let i = 0; i < 5; i++) {
    await makeRequest();
    await delay(1000); // Wait 1 second between requests
  }

  // Test burst protection
  const requests = Array(10).fill().map(() => makeRequest());
  await Promise.all(requests);

  // Verify recovery after limit reset
  await delay(60000); // Wait for 1 minute
  const response = await makeRequest();
  assert(response.status === 200); // Ensure the request is accepted
}

パフォーマンスの監視

デプロイ後、さまざまな状況下で機能するように、重要なメトリックを監視してください。

  • 各時間枠内で処理された合計リクエスト
  • 拒否されたリクエストの数
  • 高負荷時のレスポンス時間
  • エラー率とその原因

このデータを使用して、最適なパフォーマンスを実現するためにシステムを微調整できます。

レート制限の基準

レート制限の設定

ユーザー体験とサーバーの保護のバランスを取るには、APIのトラフィックパターンとエンドポイントの要件を評価してください。固定閾値に頼るのではなく、APIの特定のニーズに合わせてレート制限を調整してください。実際の使用データに基づいてこれらの制限を時間の経過とともに調整して、有効かつ実用的なものに保つことができます。

エラー応答の設計

クライアントがレート制限を超えた場合、 429 status code. APIの制限を超えたリクエストは、429 status APIで返されます。

Limit Adjustment Process

リクエスト制限の調整は、パフォーマンスの維持と法的要件の遵守のために、定期的に実行する必要があります。

Capgo__CAPGO_KEEP_0__の制限

Capgo Live Update Dashboard Interface

Capgoは、APIの制限を強制するのに役立つ統合ツールを提供します。

Capgo Compliance Features

Capgo provides a range of tools to help maintain API rate limits and meet app store guidelines. Its update delivery system achieves an impressive 82% update success rate with an average API response time of 434 ms [1]__CAPGO_KEEP_0__ Compliance Features

  • __CAPGO_KEEP_0__は、App Storeのガイドラインに準拠するために、__CAPGO_KEEP_1__の制限を維持するために役立つツールを提供します。更新の配信システムは、平均__CAPGO_KEEP_2__のレスポンス時間で82%の更新成功率を達成します。平均__CAPGO_KEEP_2__のレスポンス時間は434msです。: APIのアップデート配布とAPIの使用状況を追跡する。
  • エラー追跡: 実時間でレート制限問題を特定し、迅速に解決する。
  • チャネルシステム: アップデートのロールアウトを効果的に管理する。
  • 暗号化: APIの通信を保護する。

これらのツールは標準的なレート制限の実践と組み合わせて、リアルタイムのデータとエラーの予防的な解決を提供します。Capgoのシステムは、750の実稼動アプリケーションをテストし、合規性と強いパフォーマンスを維持しながら、23.5万のアップデートを実行しました。 [1].

レート制限とCapgo

Capgoのレート制限ツールは、Capgoのワークフローに簡単に統合されます。 Capacitor APIのワークフローに統合されたツールは、95%のユーザーが24時間以内にアップデートを受け取るのに役立ちます。また、APIのパフォーマンスも安定しています。 [1].

Capgoのアプローチの概要はこちらです:

機能 実装 利点
グローバルCDN 5 MBのバンドルで114 msのダウンロード速度 サーバー負荷の軽減
チャネル配信 ステージングされたロールアウトとベータテスト APIのトラフィックフローの制御
分析ダッシュボード リアルタイムモニタリング パフォーマンスを測定するレート制限
エラー管理 自動的な問題検出 レート制限違反を回避する

「私たちはアジャイル開発を実践し、@Capgoはユーザーに継続的に提供するmission-criticalなものです!」

始めるには、以下のコマンドを実行してください: npx @capgo/cli initこのコマンドは、AppleおよびGoogleストアの要件に準拠した必要なレート制限を設定し、必要な設定を実行します。

概要

主なポイント

APIレート制限は、アプリストアの要件を満たす上で重要な役割を果たし、システムが正常に動作するようにします。ここでは簡単な説明を以下に示します。

側面 要件 Impact
Security End-to-end encryption Safeguards API communications and user data
Monitoring Analytics Tracks API usage and helps avoid violations

Use the checklist below to align your rate limiting strategy with app store guidelines.

Implementation Checklist

To implement a solid rate limiting strategy, follow these steps:

  • Set Rate Limits

    • Define global rate limits based on app store rules.
    • 再試行のメカニズムで指数バックオフを使用します。
    • 適切なエラーレスポンスを構成する、例えば429のステータスコード。
  • 監視と調整

    • API の使用を詳細な分析で分析する。
    • 潜在的な侵害を早期に捕捉するために自動的な警告を設定する。
    • 実世界のパフォーマンスに基づいて制限を必要に応じて更新する。
  • テストと検証

    • 安定性を確保するためにロードテストを実行する。
    • エラーレスポンスが規制要件を満たしていることを確認する。
    • 規制努力の徹底したドキュメントを維持する。

App Store ComplianceのためのAPI リミッティングから続ける。

Capgoを使用している場合 API App Store の制限レートのための制限 __CAPGO_KEEP_0__ を接続して、セキュリティと合規性を計画する 暗号化 暗号化の実装詳細のための 合規性 合規性の実装詳細のための Capgo セキュリティ スキャナー Capgo セキュリティ スキャナーの製品ワークフロー Capgo セキュリティ Capgo セキュリティの製品ワークフロー Capgo トラスト センター Capgo トラスト センターの製品ワークフロー

Capacitor アプリのリアルタイム更新

ウェブ層のバグが生じた場合、Capgo を通して修正を配信し、アプリ ストアの承認待ちの日数を省略する。ユーザーはバックグラウンドで更新を受け取り、ネイティブの変更は通常のレビュー経路を通じて残る。

スタートする

ブログの最新記事

Capgo を通して、プロフェッショナルなモバイル アプリを作成するために必要な最良の洞察を得ることができます。