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 を作るとすると、やはり利用回数の出力も一緒にするのは必須な感じですね。最終利用時刻もついでに付けてやれば、濃淡も一緒に表現できるしそっちも入れたいところ。