Twitter でフォローしているユーザーとフォローされているユーザーの差分を表示するサービスをつくりました。

following-followers.aprifield.com

トップページにも記載していますが、サービスの詳細は以下の通りです。

  • Twitter でフォローしているユーザーとフォローされているユーザーの差分を表示するサービスです。
  • 表示する情報は Twitter API を利用して取得します。
  • Twitter API の呼び出し制限によるエラーが発生した場合はリトライしますので画面を開いたままお待ちください。
  • 表示可能なユーザー数の上限は 5,000 です。

利用している Twitter API について

利用している API は以下の 3 つです。 フォローしているユーザーとフォローされているユーザーを検索するにはユーザー ID が必要なので 1 つ目の API でユーザー名をもとにユーザー ID を取得しています。 残りの 2 つは各ユーザー検索用の API です。

  • GET /2/users/by/username/:username
  • GET /2/users/:id/following
  • GET /2/users/:id/followers

API 対応する Twitter のオフィシャルドキュメントは以下の通りです。

これらの API はサービス利用者が Twitter で認証しなくても利用可能です。 その代わりに認証トークンが必要でこの値はサーバーで保持して利用しています。

Twitter API の呼び出し制限について

下記サイトの通り、Twitter API にはレートリミットがあります。 https://developer.twitter.com/en/docs/twitter-api/rate-limits

今回利用している API の場合は以下のレートリミットが定義されています。

  • GET /2/users/by/username/:username

App rate limit (Application-only): 900 requests per 15-minute window shared among all users of your app

User rate limit (User context): 900 requests per 15-minute window per each authenticated user

  • GET /2/users/:id/following
  • GET /2/users/:id/followers

App rate limit (Application-only): 15 requests per 15-minute window shared among all users of your app

User rate limit (User context): 15 requests per 15-minute window per each authenticated user

以下の記載内容は推測も含みます。

作成したサービスは Application-only に該当します。 サービスを利用するユーザーごとではなくアプリごとに 15 分間に 15 回しかリクエストできないことになります。 ユーザー一覧を 15 分間に 15 回しか検索できないとなると非常に厳しい制限とになりますが、リクエストする URL の username も含めた制限であるため、同じユーザーに対して何度も検索しなければ制限されません。

表示可能なユーザー数の上限について

表示可能なユーザー数の上限は 5,000 としています。 理由は、すべてのアカウントは最大 5,000 アカウントまでフォローできるためと、前述のレートリミットを考慮した結果です。 ユーザー一覧の API で取得可能なユーザー数は最大で 1,000 であるため、本サービスでは 5,000 に到達するまで繰り返し検索しています。