arc の日記

はてなダイアリーから引っ越してきました。さらに新しい記事は https://junkato.jp/ja/blog/ で書いています。

f(o||o) (w_w)ho? αリリース

このGWは、遊んでます。Webで。数日前には、Twitterユーザ向けのWebサービスhttp://www.followho.info/をαリリースしました。表記が全て英語の英語版仕様ですが、入力欄一つのシンプルなサービスなので簡単に使えると思います。
Twitterて何、という人へ、Twitterのススメをご一読ください。
プログラマの方へ、記事後方にサンプルコードが落ちてます。

follow who?について

Twitterをやっていると、「誰をフォローしていいか分からない」という話をよく聞きます。これについて@kougakuさんから案が出ました。

  • この人をフォローしてる人たちは、こんな人もフォローしてます的なレコメンドが欲しい。 posted at 19:07:41
  • @kougaku そういえばなんでないんでしょうね。今度Google App Engineの練習で作ってみます。 posted at 19:09:48
  • @arcatdmz おっ 頼もしい! posted at 20:16:04
  • @kougaku いつになるかは分かりませんが。 posted at 21:40:42
Amazon.co.jpで商品を買おうとすると、似た傾向の購買者が他に買っているものをお薦めしてくれますね。そのようなことを実現してくれるWebサービスがあったらいいなぁ、という話です。
で、ちょうど自分でも似たことを考えていたので、とりあえず簡単なものを作りました。それがフォローおすすめエンジンhttp://www.followho.info/です。
follow who?
気になっている人のスクリーンネーム(arcatdmzとか@arcatdmz)を入力すると、その人をフォローしている人たちが他にフォローしている人のランキングが出ます。それだけです。
エンジンと呼ぶにはあまりに単純なのでこれから手直ししていく予定ですが、これだけでも結構おもしろい結果が出るので試してみてください。
例えば…大人数にフォローされている有名人だと、ランキング上位もやはり有名人で占められます。また、ボカロP(VOCALOIDを使って作曲などをしている人たち)のアカウントで調べてみると、曲調の好みが見えてくるかもしれません。その他、FlashプログラマならやはりFlashプログラマが上位を占めたり、ARToolKit関係者ならAugmented Realityがらみの有名人がたくさん出たりします。
現状、リコメンドエンジンとして使うなら、中規模(数百名程度?)の数のフォロワーを抱える、とんがった人たちを検索すると面白いように思います。

follow who? α版のしくみと今後

以下、技術的な話です。

Google Social Graph API

Twitterユーザ同士のフォロー関係を取得するのにGoogle Social Graph APIを使っています。Twitterの公式APIは呼び出し回数制限が1時間あたり100回もしくは350回と厳しく、申請をしてホワイトリストに登録してもらうのも面倒なので、1日50000回まで呼び出しOKのGoogle先生にご登場願いました。遅延と漏れがありますが、実用上とくに問題を感じません。
本サイトで使っているのとほぼ同じ、実働するサンプルがfollow who? - Google Social Graph API testに置いてあるのでよかったらどうぞ。ソースを読むとだいたい何をしているか分かると思います。

Direct Web Remoting (DWR)

現状の本サイトはGoogle App Engineでホストしているにも係わらず、全ての処理をクライアントサイドに任せています。ランキングの取得結果にパーマリンクを与えたり、結果を高度に加工してユーザに提示したりするためには、サーバサイドでAPIを呼んで結果をキャッシュする必要があると考えています。
今後、DWRを使ってサーバサイドの処理を加えていくつもりです。DWRを使うと素のHTMLとサーバサイドのServletを簡単に連携させることができます。
サンプルがfollow who? - Hello App Engine! + DWR testに置いてあります。クライアント側のソースコードが綺麗にまとめられているのが分かると思います。サーバ側のコードでは大したことをしていません。セットアップは公式のリファレンスや検索して出てくる解説記事を読んでやってみてください。
なお、DWRをGAE/J上で使う際の制限として、Reverse Ajaxと呼ばれるクライアント側にイベントをプッシュ配信する技術を用いたAPIが使えないようです。

@AnywhereとOAuth認証

本サイトをTwitter APIに対応させるにあたって、呼び出し回数制限を回避するために、サイトのユーザに認証してもらってユーザのアカウントでAPIを呼び出すことを考えています。
最近リリースされた@Anywhereのクライアント側APIを使うか、OAuth認証を使うか悩むところで、とりあえず両方を実装してみました。サンプルがfollow who? - Twitter OAuth testに置いてあります。サーバ側の実装にはTwitter4Jを使っています。
どちらの認証も同じConsumer keyを使うんですが、とくに何の工夫もしていないので、それぞれの認証結果は独立しています。

サンプル一覧

さて、というわけで、今後適当に時間を見つけてアップデートしていくhttp://www.followho.info/をよろしくお願いします。