BLOG

将来の夢はおもしろお兄さんです。

Twitterの会話をリアルタイムにまとめるWebサイト、「TwitActivity」を公開しました

追記

TwitActivity は TweetDialogue に生まれ変わってより使いやすくなりました。 今後は TweetDialogue をよろしくお願いします。

3/1 0:00より、登録したユーザーが Twitter 上で行った会話を時系列でまとめて時系列に表示する Web サイト、 TwitActivity を公開しました。

技術的な話

このサービスでは、 Twitter の Streaming API を使用してユーザーのつぶやきをリアルタイムに取得しています。 そして取得したつぶやきの in-reply-to を再帰的にたどって会話としてまとめます。

開発言語は Python で、使用したフレームワークはPyramid 、 データベースは MySQL + memcached。 Pyramid の利用はこれが初めてでした。 プラットホームには Google App Engine のようなクラウドは採用せずに自前で用意しました。 フロントエンドは Nginx、 バックエンドは uWSGI です。

ログインをお願いする理由

この件について @YDKKK さんからご質問を頂いたのでお答えします。

in-reply-to を辿る際に発生する「 id を指定してつぶやきを取得する能動的なリクエスト」を行うには REST API を利用します。 その REST API にアクセスするためにユーザーにログインをお願いしています。

また、ログインしていただかないと収集する会話の対象が分からず、極端な話をすれば TwitActivity をご利用されていないユーザーを含む全 Twitter ユーザーの会話を収集し保存しなくてはなりません。 そこで、収集対象を限定するためにログインをお願いしています。

キャッシュ

上記の通りこのサービスでは in-reply-to を辿る際に REST API を使用しています。 しかし REST API でのリクエストには制限があるため、このリクエストは必要最低限に抑える必要があります。 特に REST API の White List 登録制度が廃止された現在ではより切実な問題です。

そこで、このサービスでは Streaming API によって取得できたすべてのつぶやきを可能な限り memcached にキャッシュし続けています。

最後に

Twitter での会話のログを取っておきたいことが時々あります。 例えば技術的な事を教授してもらったときや、ほかのユーザー同士による議論の流れを知りたい時、など。 そのときにこのサービスを使うと便利です。 マジ便利です。

ぜひお試しください。