ストリーミングAPIを使うことで、開発者はTwitterにおけるツイートデータのグローバルストリームに低レイテンシでアクセスすることができます。 適切に実装すれば、RESTエンドポイントへポーリングする時のような負荷をかけずに、ツイートやその他イベントが発生したことを示すメッセージをクライアントへ通知できます。
複雑な検索をしたり、ユーザープロフィール情報を読み込んだり、ツイートを投稿したりするのであれば、代わりにREST APIs の使用を検討してください。
Twitterでは、それぞれ特定の用途向けにカスタマイズされた複数のエンドポイントを用意しています。
公開ストリーム | Twitter上を流れる公開データのストリーム。特定のユーザーやトピックをフォローしたり、データマイニングに適しています。 |
---|---|
ユーザーストリーム | ユーザー一人のストリーム。Twitterのシングルユーザービューで参照できるほぼ全てのデータを網羅する。 |
サイトストリーム | ユーザーストリームのマルチユーザー版。サイトストリームは、多くのユーザーに代わってTwitterに接続しなければならないサーバを対象としています。 |
The Streaming APIsOverviewThe Streaming APIs give developers low latency access to Twitter’s global stream of Tweet data. A proper implementation of a streaming client will be pushed messages indicating Tweets and other events have occurred, without any of the overhead associated with polling a REST endpoint. If your intention is to conduct singular searches, read user profile information, or post Tweets, consider using the REST APIs instead. Twitter offers several streaming endpoints, each customized to certain use cases.
|
ストリーミングAPIに接続するにはHTTP コネクションをずっと開いたままにしておく必要があります。 多くの場合、REST APIを使用した時とは異なったアプリケーション構造になると思ってください。 例えば、ユーザーリクエストを受けるウェブアプリケーションがTwitter APIに対してリクエストを投げ、その結果を初回リクエストに対する応答としてそのユーザーへ出力する場合を考えてみましょう。:
RESTでは上記例で示すように、ストリーミングAPIと接続中のアプリケーションはユーザーのリクエストに対する応答接続を確立することができません。 一方ストリーミングの場合、ストリーミングAPIとの接続を維持するためのコードは通常、HTTPリクエストを処理するプロセスとは別のプロセス上で動作します:
ストリーミングを処理するプロセスでは、ツイートを取得するとその結果をデータストアに保存する前に、解析、フィルタ、必要に応じて統計を行います。 HTTPを処理するプロセスでは、ユーザーのリクエストに対しての応答結果をデータストアに問い合わせます。 このモデルはRESTの例よりも複雑ですが、ツイートデータのリアルタイムストリームを扱えれば、様々なアプリを作る際に非常に役立つことでしょう。
Differences between Streaming and RESTConnecting to the streaming API requires keeping a persistent HTTP connection open. In many cases this involves thinking about your application differently than if you were interacting with the REST API. For an example, consider a web application which accepts user requests, makes one or more requests to Twitter’s API, then formats and prints the result to the user, as a response to the user’s initial request: An app which connects to the Streaming APIs will not be able to establish a connection in response to a user request, as shown in the above example. Instead, the code for maintaining the Streaming connection is typically run in a process separate from the process which handles HTTP requests: The streaming process gets the input Tweets and performs any parsing, filtering, and/or aggregation needed before storing the result to a data store. The HTTP handling process queries the data store for results in response to user requests. While this model is more complex than the first example, the benefits from having a realtime stream of Tweet data make the integration worthwhile for many types of apps. |