久々に@sferikによるTwitterのAPIを使ってみると、いつの間にかTwitter Streaming APIも取得できるようになっていました。Twitter Streaming APIは、APIの中でも異色のもので、ひたすらパブリック・タイムラインを取得するといったものです。4年ほど前に出た当初は、かなり話題になって色々な人がタイムラインを取得して分析していました。かく言う私も、AWSのEC2上で動かして、1年ほどTwitterの呟きを取得して遊んでいました。ちょうど4年前はワールドカップがあり、日本の試合がある度にTweet量が爆発して、プログラムも爆発していました。細かい数字は忘れましたが、無料で使える数%に絞ったAPIのうち日本語だけに絞っても、月数千万件レベルでデータがあったと思います。
そんなこんなのTwitter Streaming APIですが、当時はサードパーティ製のライブラリもなく自前でNet::HTTPやEventMachineを組み合わせて取得しました。それが、ライブラリ1つで簡単に出来るようになっているんですね。ありがたい限りです。
Twetter Streaming APIのサンプルコード
一番簡単なTwetter Streaming APIのサンプルコードです。APIキーを取得して、環境変数にセットしておけば使えます。
require 'twitter' config = { :consumer_key => ENV['TWITTER_API_KEY'], :consumer_secret => ENV['TWITTER_API_SECRET'], :access_token => ENV['TWITTER_ACCESS_TOKEN'], :access_token_secret => ENV['TWITTER_ACCESS_TOKEN_SECRET'] } client = Twitter::Streaming::Client.new(config) client.sample do |tweet| if tweet.is_a?(Twitter::Tweet) #日本語の呟きだけ表示 puts tweet.text if tweet.lang == "ja" end end
Twetter Streaming APIのデモ
まとめ
これだけでは面白くないので、次はAWS Kinesisと組み合わせてみようかと思います。当時も、突発的に大量のデータが飛んできた時の処理能力などで困っていました。今だとKinesisとバックエンドのサーバを組み合わせたら何でもできそうですね。
See Also:
RubyでTwitter Streaming APIを使ってみる
Twitter Streaming APIのJSONの構造