みんな大好きなはてなブックマークには、関連URLという機能があります。が、現状では気が向いた人が人力で入力するという感じみたいです。これをブックマークされる側で指定できたら幸せなんじゃないかなとか。そうなれば、ある英語のサービスについての紹介とかいうエントリを書いた時にはそのサービスのURLとか、ある英語のページの翻訳を書いた場合は元のページのURLとかをブックマークのページに表示でき、ブックマークを漁って行動する人にはちょっと便利だったりしそうとか。ある本の感想を書いた時にアサマシURLを仕込んだりとかも出来そう(むしろこれがメイン)!

以下はこの妄想を実現するという仮定に従って書いてます。

既にはてなブックマークはページの概要(らしきもの)の取得やAccout Auto-discoveryのために、ブックマークされた時にそのページをHTTP GETするので、どうやって関連URLの情報を埋め込むかという話になります。

リンクにrel="related"

僕がまず初めに思いついた方法はa要素にrel="related"と、「このリンクは関連したURLを参照しているよ」という意味付けをしてやる方法。例えば、dodgeitというエントリでは、dodgeitというWeb上のサービスについて書いています。このエントリではもちろんdodgeitのサイトへのリンクを書いているので、そのリンクにrel="related"を追加してやるということになります。具体的には、dodgeitのサイトへのリンクを、

<a rel="related" href="http://www.dodgeit.com/">dodgeit</a>

と書くということです。はてなブックマーク側はrel="related"を含むリンクを抜き出してやって関連URLとして登録してやるだけで、特に実装が難しいということは無いと思います。ブックマークされる側も多少タイプするだけなので簡単。

実際にはXhtml Meta Data Profilesなどでrelatedが意味するものを定義したプロファイルへの参照をhead要素のprofile属性を使って書くべきだったりとかいろいろありますが、まーそれはそれ(適当すぎ)として比較的手軽なアプローチなんじゃないかなと。

link要素にrel="related"でももちろん構わないわけなんですが、そうなると多くの場合は結構凝った事をしないと実装できない気がするので、a要素に仕込む方が良さそう。

RDFで!!!

次にIRCでWindows大好きな人とこの話をちょっと振ってみたら、「RDFでなうせまんてぃっく!」とか言われました(かなり捏造)。数十分、あーでもないこーでもないとやり取りした後、Dublin Corerelation要素を利用した書き方が良さそうという結論になりました。具体的には上記と同じくdodgeitというエントリを例にとると、

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/">
    <rdf:Description rdf:about="http://hail2u.net/blog/internet/dodgeit.html">
    <dc:relation rdf:resource="http://www.dodgeit.com/"/>
  </rdf:Description>
</rdf:RDF>

こんな感じでしょうか(定かではない)。RDFを使った場合は、TrackBack Auto-discoveryやAccount Auto-discoveryなどと併せて記述することが出来、まさにページのメタ・データになり得ます(多分ね)。

こちらの方ははてなブックマーク側の実装はともかく、ブックマークされる側はツールによる対応が必須だったりしそうでなかなか敷居が高いかも。blosxomでの実装を考えてみようとしたんですが、頭が痛くなったのでやめました。


いろいろな意味で前者の方が楽です。後者はそれならちゃんとそのページのメタ・データをきちんと定義すればいいんじゃないの云々とかいう感じ。世のしがらみとか考えると、どうもお手軽な前者をプッシュしたい感じ。

実際には、ブックマークのページからのトラフィックが減る可能性があったりとかマイナスな面がなきにしもあらずなので、関連URLを指定したいと思う人がいるかどうかは謎です(大抵の場合はリンクを張っているわけだし)。

以上の話とはあまり関係ないんですが、はてなブックマークのタグ(やキーワード)もブックマークされる側で制御(この場合は推薦に限定した方が良さそう)できたりすると面白いかも。こっちの場合は、meta要素を使って、

<meta name="keyword" content="foo, bar, buzz" />

とかで良さげ。これは既に実装されてたりはしそう。わかんないけど。