Twitter の ChirpUserStreams を WebSocket で垂れ流して閲覧できるアプリを作りました!WebSocket 対応ブラウザ(Chrome 等)でお楽しみください!WebSocket すごい!ユーザ体験が変わる!
ボク @june29 と @kei_s から見た世界を体験できるようにしてあります。ChirpUserStreams については、以前にエントリを書きました。
TwitterのChirpUserStreamsをごくごくしてみた
本家の API がベータ版であり、まだまだ不安定なので、たまにスクリプトの再起動をかけたりしながら動かしています。見てみたいけど「なんにも表示されないよ?」って方がいたら、@june29 や @kei_s に話しかけてみてください。対応できるかもしれません。
User Streams goes Production, Site Streams adds Home Timelines – Twitter Development Talk | Google Groups にて、ChiprUserStreams は User Streams として正式リリース、とアナウンスがありました。伴い、本エントリで紹介している成果物も動かなくなっています。
ご自身のアカウントで試したいという方は、Ruby で書いたソースコードならありますので、よかったらご利用ください。
ソースコード: june29’s chirp2websocket at master – GitHub
ChirpUserStreams を WebSocket に流すまで
システムの基本構成は以下の通りです。
Twitter の ChirpUserStreams が「水道の蛇口」だとしたら、Ruby でつくったホースを蛇口につなぎ、ホースのもう一端に WebSocket のアタッチメントをつけました、というところ。protected な対象はホースに仕掛けたフィルタで除去します。Chrome 等の WebSocket 対応ブラウザでアクセスすると、まるで水のように tweet と event が流れてきます。面白いのは、すべてのデータは「フロー」であって、システム内に一切の「ストック」を持たない点です。ユーザが自由に蛇口とホースとアタッチメントを選べるようになったら本当に面白いことになりそう。
さてさて、せっかくなので ChirpUserStreams で遊びたい放題しようと思い、以下のような構成のシステムを動かしています。
Ruby でフェッチした ChirpUserStreams のデータは、RabbitMQ に突っ込むと同時に mongoDB にも投げつけました。あとから好きなようにデータを解析できます。JSON 形式そのままで投げつけることができるので保存はとても楽です。自分用 buzztter や自分用ふぁぼったー、自分用twitter検索を作ったら面白そう!
RabbitMQ に突っ込むと、ここから分岐させて stream データを活用できるようになります。本家 Twitter からのフェッチは1本にしておいて(制限もあるので)、利用は何本でも自由に、ってのが良いですよね。
今回は、自分の tweet が favorite されたり retweet されたり、reply をもらったり follow されたときに、iPhone にプッシュ通知を送り、MacBook に Growl で通知するように仕掛けてみました。favorite/retweet/reply から5秒以内に iPhone が「ティロリン」と鳴る体験は、なかなか刺激的で面白いものです。im.kayac.com は、HTTP リクエストを iPhone のプッシュ通知に変換してくれるもので、今回のようなソーシャルアプリ以外にも、システム運用や様々な場面で活用できます!
メモ
ただただ ChirpUserStreams を curl で取ってきてコンソールに出力してキャッキャと騒ぎ始めてから、気が付いたらデータで遊び放題できるところまでシステムを組んでいました。ここ数日間で知った要素技術、それを実装したソフトウェア、利用したアプリケーション等のメモです。
- Twitter API Wiki / ChirpUserStreams
- Advanced Message Queuing Protocol – Advanced Message Queuing Protocol
- RabbitMQ – Messaging that just works
- MongoDB
- The WebSocket API
- eventmachine @ GitHub
- tmm1’s amqp at master – GitHub
- igrigorik’s em-websocket at master – GitHub
- celldee’s bunny at master – GitHub
- brianmario’s yajl-ruby at master – GitHub
- june29’s twitter-amqp-websocket-example at master – GitHub
- Growl
- 面白ラボBM11(ブッコミイレブン) 2009: im.kayac.com for iPhone
いろんな場面で EventMachine が登場して驚いた。これからますます活用されるようになりそうだ。
まとめ
WebSocket って、正直なところ、あまりピンときていませんでした。恐らく「垂れ流してみたいデータ」がなかったからだと思います。それが、Twitter の ChirpUserStreams の登場によって「これで勝つる!」とシビれるに至りました。キラーアプリケーションというか、キラーデータ、キラーストリームといったところです。
ChirpUserStreams 面白い!どうか公式 API になってほしい!WebSocket 面白い!もっといろんなストリームを垂れ流したい!みんなも遊んでみよう!