タイムライン系サービス統合の試み (TokyuRuby会議01)
TokyuRuby会議01にて発表してきました。正直言ってありがちな話題とは思いますが、自分にとっては何かを作る&学習する動機になっているのと、参加者にとって何かの役に立つこともあればいいなぁと思います。
以下、補足的な意味も含めて内容説明。
ありがちなTwitter-likeサービス間連携とその問題点
Twitterの登場以来、多くのSNS系サービスがタイムラインベースのUIを採用しています。代表的なものでは、
- Friendfeed
- mixiボイス
- GREE (ひとこと)
- Amebaなう (仮)
など。ここでは、これらのタイムラインベースの情報共有サービスを指して、「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が必要になります。
(現状のTwitter→mixiボイスの発言コピーのように、スクレイピングを使う方法もありえますが)
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とハッシュタグ検索結果を組み合わせたりすれば、それなりに便利な局面もあるのではないかと思っています。