HTML::TagCloud
del.icio.us / miyagawa 経由で見つけた CPAN モジュール HTML::TagCloud。Tag Cloud (はてなブックマークの右側に出てくるタグ一覧みたいなやつ) を生成する CPAN モジュールです。
出力はどんな感じかなと思って使ってみました。
#!/usr/local/bin/perl use strict; use HTML::TagCloud; my $tags = [ { tag => 'blog', count => 20}, { tag => 'ajax', count => 10}, { tag => 'mysql', count => 5}, { tag => 'hatena', count => 12}, { tag => 'bookmark', count => 30}, { tag => 'rss', count => 1}, { tag => 'atom', count => 2}, { tag => 'misc', count => 10}, { tag => 'javascript', count => 11}, { tag => 'xml', count => 6}, { tag => 'perl', count => 32}, ]; my $cloud = HTML::TagCloud->new; $cloud->add($_->{tag}, "http://b.hatena.ne.jp/naoya/$_->{tag}/", $_->{count}) for @$tags; print $cloud->html_and_css(20);
こんな感じのソースで出力された結果は、
<style> span.tagcloud0 {font-size: 12px;} span.tagcloud0 a {text-decoration: none;} span.tagcloud1 {font-size: 13px;} span.tagcloud1 a {text-decoration: none;} span.tagcloud2 {font-size: 14px;} span.tagcloud2 a {text-decoration: none;} span.tagcloud3 {font-size: 15px;} ... </style> <span class="tagcloud11"><a href="http://b.hatena.ne.jp/naoya/ajax/">ajax</a></span> <span class="tagcloud2"><a href="http://b.hatena.ne.jp/naoya/atom/">atom</a></span> <span class="tagcloud17"><a href="http://b.hatena.ne.jp/naoya/blog/">blog</a></span> ...
といった具合になります。ブラウザで表示すると、
こんな感じになりました。オリジナルのアプリケーションでタグを実装していて、そこに Tag Cloud を表示したいというときに使えそう。見た目をカスタマイズしたい場合は継承して css メソッドをオーバーライドすればよさげ。
このモジュールを使うにはタグの一覧と、それぞれのタグが何回使われたかというパラメータが必要です。と、いうことはブックマークでタグ一覧を取得する API を作るとすると、やはり利用回数の出力も一緒にするのは必須な感じですね。最終利用時刻もついでに付けてやれば、濃淡も一緒に表現できるしそっちも入れたいところ。