2010年10月16日土曜日

TwitterのREST型Search APIを使う場合の注意点

TwitterのSearch APIを使う時は、以下の点に注意する。


1. ユーザ認証は不要

Search APIの利用には認証は必要ない。誰でもリクエストが可能。



2.rate limiting(IPベースの制限回数)がある

Rate Limiting | dev.twitter.com

ユーザ認証が要らず、アノニマスで接続できる分、1IPあたり1時間内に発行できるリクエスト回数が限られている

不必要な検索や荒らしを防ぐために、それが何回なのかは公開されていない。Search APIと同じくREST型のREST APIは1時間あたり150回だが、ちなみにそれよりは多いらしい。多くのアプリケーションでは十分ではなかろうかというくらい、とある。

Requests to the Search API, hosted on search.twitter.com, do not count towards the REST API limit. However, all requests coming from an IP address are applied to a Search Rate Limit. The Search Rate Limit isn't made public to discourage unnecessary search usage and abuse, but it is higher than the REST Rate Limit. We feel the Search Rate Limit is both liberal and sufficient for most applications and know that many application vendors have found it suitable for their needs.

でも気をつけないといけないのは、IPあたりという点だ。

Search APIを使った自分のプログラムのリクエスト以外にもTwitterのAPIを呼び出しているものがあれば、それもSearch APIの制限回数の中に含まれる。

つまり、何らかのTwitterクライアントを動かしていたり、他のサービスでTwitterのAPIを使っている場合は、それらもSearch APIの回数にカウントされるので、その分も考慮しないと、デバッグしているだけで制限回数をオーバーしかねない。

制限回数をオーバーするとHTTPステータスコード 420 がTwitterのサーバから返ってくる。

あまりにも制限回数を超えるような高負荷なリクエストを連続してTwitterへ送った場合は、ブラックリストに登録されることもある。ブラックリストに載ったかもと思ったらAPIサポートページに相談して解除を申請することになる。



3. User-Agentを含まないとリクエストの制限回数がより少なくなる

Search APIによるリクエストには、ユニークで識別可能なUser-Agentが含まれている必要がある。でないと制限回数はより少なくなってしまう。



4. 制限回数を増やすような相談は可能だが、まずは自分でやることやってから

REST APIにはホワイトリストがあり、申請が認められれば1時間あたり20,000回まで制限が緩和できる。
が、Search APIの場合は、まずは自分でパフォーマンスチューニングをしてください、と。もうこれ以上は無理だ!となった場合にしか、APIサポートページに相談してこないでね、とある。

There isn't a whitelist for the Search API in the same way there is for the REST API. However, under some rare circumstances we have worked with developers to raise rate limiting for their applications search requests.

We do not give preemptive whitelisting for the Search API though. You must have a working application that has proven it requires more capacity before we will discuss whitelisting. If you feel that your application is doing everything it can to limit and combine queries where appropriate you can contact the email address on the API support page to discuss your needs.

また、IPベースかユーザーアカウントベースでホワイトリストへの申請が可能なREST APIとは異なり、Search APIではIPベースしか認められていない。

制限回数がとてもシビアな問題な場合は、Streaming APIを使ってね、ということだ。