16000枚のFlickrの写真を気楽に眺めるためのサービスを作ってみた

はじめに

Flickrには綺麗な写真がたくさんありますが、写真を探すには検索キーワードの入力や、それりのクリック操作が必要で、ものぐさな私には少々面倒でした。また、Flickrは日本から遠いので、画面切替に時間がかかります。そこで、画面切替とクリック操作のあまりいらない、気楽に写真を探すためのインターフェイスを作ってみました。

http://taggrid.appspot.com/flickr/popular.html

スクリーンショットの一部です。

イデア

基本的なアイデアは次の3点です。

  1. 16000枚の写真を格子上に配置
  2. Google Maps風のAjaxインターフェイス
  3. 似ている写真を近くに配置

1. の16000枚の写真はPopular Tags on Flickr | Flickrを起点にしてFlickr APIを使って取得しました。

2. のAjaxインターフェイスは自分でゴリゴリ書きました。なかなか反応速度を高速にすることが出来なくて、満足いく出来になるまで3回ぐらい書き直しています。

3. を実現するためにタグを使っています。具体的には、タグが同じ写真は格子上でも近くになるように配置しています。例えば、「sea」タグが付いた写真をまとめて配置して、「sea」タグのそばには、「beach」「ocean」「island」といったタグの写真が配置するようにします。詳細なアルゴリズムはそのうち公開したいと思っています。

ホスティング

Google App Engineを試してみたかったので、サービスのホスティングにはGAEを使っています。PythonはともかくBigTable(Datastore)は癖が多い感じです。ただ、コマンド一発でアップロード完了はかなり便利です。

今後の展開

Popular Tags以外にもFlickrの最新写真に対しても同じインターフェイスを作ってみました。
こちらは週1程度で更新する予定です。
http://taggrid.appspot.com/flickr/recent.html

タグ付きデータを格子上に配置するアプリケーションは他にも色々とありそうです。個人的には、レシピの材料をタグにしていレシピの写真を表示させてみたかったのですが、API経由で利用できるレシピDBが見付かりませんでした。CookpadあたりがAPI公開してくれると嬉しいのですが。

後はtwitterユーザのfollow関係をタグとみなして表示するのも面白そうですが、レコード数とタグ数のどちらも多いので、まともにやるとアルゴリズムがうまく動作しなさそうでちょっとためらっています。

まとめ

  • Flickrの大量の写真を気楽に眺めるためのインターフェイスを作りました。
  • 1画面に出来るだけ写真を詰め込むため、各写真を格子状に配置しています。
  • 同じタグの写真が近くに配置されるようにしています。