2010年10月18日月曜日

TwitterのStreaming APIでlocationsを指定する方法とSearch APIでgeocodeを指定する方法

位置情報付きのツイートを利用するには、Streaming APIでlocationsを指定する方法と、REST型Search APIでgeocodeを指定する方法の2種類がある。

どちらにも、ご利用上の注意があり、どちらが正解とも言えない。
明日に向かって昇龍拳: TwitterのStreaming APIでlocationsを指定する場合の注意点
明日に向かって昇龍拳: TwitterのSearch APIでgeocodeを指定する場合の注意点


しかし個人的には、位置情報付きのツイートを取得するには、現時点では、Streaming APIでlocationsを指定する方がよいと思う


Streaming APIを使うメリット: 1. rate limitingがない

マップをインターフェースにするなどして、頻繁にTwitterのサーバへリクエストを発行するような仕様にする場合には、回数制限というのは大きなボトルネックだ。Streaming APIでは、一度開いた接続は基本的に無期限だ。回数制限という概念がない。


Streaming APIを使うメリット: 2. geo要素がnot nullなツイートしか検索結果に含まれない

位置情報が必ず指定されている、つまりgeo要素がnot nullなツイートしか検索結果に含まれないので、結果データが扱いやすい。

Search APIではやたらめったら結果が含まれてくるが、その中から使えるデータを精査して取り出すなど手を加える必要がある。作るときにも、その面は手間がかかるし、アプリケーションのパフォーマンスにも、コストとして影響するだろう。

更に、Search APIでは位置情報が付いたツイートが何ページ目に出現するのか分からないので、結局多くの結果にアクセスする必要が出てくる。当然、rate limitingに引っ掛かり易くなる。

geoがnot nullなツイートに限られることは、結果数が少なくなるというデメリットでもある。
しかしそれは、位置情報が付いたツイートが増えるように位置情報を付け易いクライアントを別途用意したり、少しずつでも位置情報付きのツイートが将来的に増えていくことで、状況も変わっていくだろう。


Streaming APIを利用するには、OAuthの利用や、切断時のリトライなど、実装しなくてはならないことが幾つかあるが、それらを考えても、やはり、上記のメリットの方が現時点では上回る。