タイムライン系サービス統合の試み (TokyuRuby会議01)

TokyuRuby会議01にて発表してきました。正直言ってありがちな話題とは思いますが、自分にとっては何かを作る&学習する動機になっているのと、参加者にとって何かの役に立つこともあればいいなぁと思います。

以下、補足的な意味も含めて内容説明。

ありがちなTwitter-likeサービス間連携とその問題点

Twitterの登場以来、多くのSNS系サービスがタイムラインベースのUIを採用しています。代表的なものでは、

など。ここでは、これらのタイムラインベースの情報共有サービスを指して、「Twitter-likeサービス」と総称します。

これらのサービス間相互の連携も進んでいて、その多くは、1つのサービスに投稿したメッセージが他のサービスにもコピーされるというものです。

しかしながら、発言コピーによるTwitter-likeサービス間連携は以下に挙げるような問題があり、必ずしも満足の行くものではありません。

  • 複数のサービスでつながっている人同士では、同じ発言を何度も見ることになる。
  • 例えばTwitterのRT (ReTweet) などで、自分の見えないことろに自分の発言がコピーされる可能性があるのが気持ち悪い。
  • サービス間の文化の違いがあるために、単純にコピーすると違和感のある場合がある。例えば、「ドロリッチなう」という発言がmixiボイスにコピーされた場合。

このような問題があるために、実際にユーザ間のトラブルに発展した例や、サービス間連携を解除した例を個人的に見聞きしています。私自身も、以前TwitterからFacebookへのフィードを設定していたものの、今は解除しています。

提案: タイムライン合成

上に挙げた問題を解決するには、個別のTwitter-likeサービス間同士で発言をコピーする代わりに、各サービスのタイムライン (TL) を合成して1つのTLを作るようなサービスがあれば良いはずです (サービスでなくクライアント側の機能でも良いですが)。

仮にそのようなTL合成サービスを作ることを考えた場合、TL合成サービスは、各Twitter-likeサービスから、ユーザの代わりにTLを取得する必要があります。このために、典型的には、OAuthなどの認証プロトコルTwitter APIなどの情報取得APIが必要になります。
(現状のTwittermixiボイスの発言コピーのように、スクレイピングを使う方法もありえますが)

Twitterの場合はOAuthとTwitter APIの組み合わせが使えますが、連携対象のTwitter-likeサービスでは別の認証プロトコルAPIが用意されていたり、そもそもない場合もあります。mixiでは、mixi ConnectというAPIの公開がアナウンスされているものの、現時点では一般の開発者向けには公開されていません。

理想的には単一の認証プロトコルとTL取得APIで済むという世界ですが、とりあえず何らかの手段が用意されていれば、プロトコルAPIの違いをライブラリでラップするという手もあるでしょう。

作ったもの: Twitterのfriends_timelineとlist timelineの合成

実際のTwitter-likeサービス間連携サービスを作る前の1ステップとして、今回は、Twitterのfriends_timeline (通常の、自分とフォロー先ユーザの発言が表示されるタイムライン) と、list timeline (正式な用語ではないが、特定のリストに含まれるユーザの発言が表示されるタイムライン) を合成して表示するサービスを作ってみました。

このサービスはRubyベースで実装し、以下のライブラリを使用しています。

これ単体では大して実用性はありませんが、少し応用して、friends_timelineとハッシュタグ検索結果を組み合わせたりすれば、それなりに便利な局面もあるのではないかと思っています。