Show page source of API制限について #52265

[[PageNavi(SideBar)]]
このドキュメントはTwitterの公式発表によるものではない部分が含まれています。調査を行い判明した事項が後に変更されている場合もあります。

== API制限とは何ですか?

Twitterが負荷軽減などのために、タイムライン取得、Fav追加、書き込みなど、主にAPI操作に関して設けている一定の制限です。この制限に到達すると、一定時間経過するまでの間APIによる操作が不可能になります。

=== 現在かかっているAPI制限にはどのようなものがありますか?

取得系と送信系に大別されます。取得系は、主に読み取り操作に対してかかる制限、送信系はサーバに対してのデータ送信についてかかる制限です。アカウントと使用しているIPアドレスを1組として使用回数がカウントされ、規制されます。

また、検索に関する取得系のAPI制限が存在します。

==== 取得系
タイムライン取得系API(Recent/Reply/!DirectMessage)を含む、データ取得系API の1時間当たりの回数制限。一般的に「API制限」と呼ばれる場合はこれを指すことが多いです。検索系のAPI使用回数は含まれません。
==== 送信系
 * ステータス書き込みAPIの回数制限。投稿回数が多くなった場合に一定の時間投稿ができなくなります。
 * ステータス書き込みAPIの内容による制限。連続して全く同じ文字列の投稿を行った場合、2回目以降の書き込みが反映されません。文字列を変えて投稿した場合は規制対象にならず反映されます。
 * Fav追加APIの回数制限。制限回数に到達すると、一定時間Fav追加が出来なくなります。
==== 検索系
検索結果を取得するAPIに対する1時間あたりの回数制限。IPアドレス単位でカウントされます。

これ以外にも、短時間に大量のAPIを発行した場合は規制を受けることがあります。また、取得系APIにも規制対象外のものがあります。
このように、送信系ではAPI/Webの別なく制限がかかります。このような理由もあり、Tweenでの発言投稿はWeb/Apiのモードに関係なく常にAPIを使用します。

=== どの程度の規制がかかっているのですか?

調査で分かった規制は次の通りです。

==== 取得系APIの制限
アカウント+IPアドレスの組み合わせでカウントされます。1時間当たり150回。1時間ごとにリセットされます。回数は負荷状況により変動するといわれています。
==== 送信系APIの制限
 * ステータス書き込みAPIの回数制限 1時間当たり125回。リセットされるまでの時間は明らかになっていません。Twitter側の都合で、40~60回程度で規制がかかってしまうこともあるようです。
 * ステータス書き込みAPIの内容制限 直前に投稿した文字列と同一でない場合には規制はかかりません。(直近10回の投稿内容まで見ている?)
 * Fav追加APIの回数制限 24時間当たり250Fav。 24時間ごとにリセットされます。
また、1日に投稿できる数にも制限があるようです。
公式には、以下のように発表されています。
 * 通常発言 1000投稿/日
 * ダイレクトメッセージ 250投稿/日
==== 検索系APIの制限
IPアドレス単位でカウントされます。1時間当たり150回。1時間ごとにリセットされます。

=== 取得系APIの制限はPOSTメソッドで回避できるんじゃないですか?

いいえ。2009/4/9の修正で、POSTメソッドによるタイムライン取得系APIの発行はできなくなりました。POSTメソッドで取得系APIを発行すると、「Bad Request」エラーになります。(取得系APIの制限回数を使い切ったときと同じ動作)

=== だいたいはわかりました。でもTweenだと関係ないですよね?

いいえ、そんなことはありません。Web取得モードでも書き込みやFollowersリスト取得、Fav結果厳密チェックなどの機能ではAPIを使用していますし、API取得モードを使用した場合はタイムライン取得でもAPIを使用します。

 * Web取得モードでは、Followersリスト取得、Fav結果厳密チェックにおいて取得系APIの回数制限が適用されます。
 * API取得モードでは、タイムライン取得、Followersリスト取得、Fav厳密チェックなど取得系の機能全てに取得系API回数制限が適用となります。
 * 検索系は常にAPIを使用します。

=== TweenはAPI取得とWeb取得のどちらのモードを使えばいいんですか?

最終的には使用するユーザーの判断になりますが、どちらが適しているかを判断する基準を挙げておきます。

 * TwitterはAPIの使用を推奨しています。
 * Twitterの利用規約には、スクレイピング(=Webモード)を禁止する内容が含まれています。

<API取得モードの使用基準>

 * 同時に他のTwitterクライアントを使用していない。
 * Webがタイムアウトなどで正常に動作しない。
 * API系クライアントではデータが取得できるが、Webでは発言が抜けているように見える。


<Web取得モードの使用基準>

 * 複数のクライアントを併用している。
 * 遅延であとから現れてきた発言も取り逃がしたくない。
 * API系クライアントが正常に動作しない、またはAPI系クライアントで発言が抜ける。
 * 取得系APIの制限に引っかかるのが嫌。
 * 発言したら必ずもれなく@返信もチェックしたい。

==== API制限にひっかからないように気をつけること
<API取得モード編>

 * API発行回数回数を制限内に抑えるように、取得間隔を間引いてください。
 * 取得発言を増やしたい場合は、標準取得件数を増やします。
 * API制限に引っかかりそうな場合は、発言時のタイムライン取得をしないようにしてください。

<Web取得モード編>

 * Fav結果厳密チェックを無効にします。
 * 片思いユーザーリストの取得は、可能な限り差分取得を使用します。
 * 複数アカウントでの使用の場合は、できるだけ別のフォルダへTweenをコピーし、ひとつのTweenでアカウントを切り替えて使用しないようにします。ひとつのTweenでアカウントを切り替えて使用するとFollowersリストキャッシュが再構築され、API消費量が大きくなります。
 * 片思い色分け表示が不要な場合は無効にします。



[[PageNavi(SideBar)]]
[[include(GAds)]]