フォトアルバム

« e-ガンジス - Amazon.co.jp エクスプローラ | メイン | Amazon アソシエイト プログラムにモバイルサイト用リンク追加! »

Microformats 運動

読んだ本や観たDVDの感想・レビューを、ブログに書くことで簡単に共有できるようになってきました。さらに、単にレビューの載っているサイトを順番に訪問するだけでなく、ブログから出力されるRSSを解析して、ある商品が複数のブログでどのように紹介されているかを比較することができるサービスも登場しています。

これらサービスを実装するには、あるブログのエントリが特定の商品について記述しているのかどうかを判断し、次に商品の基礎情報(タイトルや定価など)とブログの著者による記述とに分解して、基礎情報は1度だけ表示し、その商品にぶら下がる形で、ブログ著者による記述の部分だけを並べて表示できるようにする必要があります。この作業はなかなか煩雑です。商品に関する記述があるかどうかは、例えばAmazon.co.jpへのリンクが含まれているかどうかで判断できるかもしれません。しかし、そのエントリの中でどこからがブログ著者による感想の記述なのかを、様々なWebサイトをまたがって汎用的に判断できるアルゴリズムをひねり出すのはなかなか骨が折れます。

Microformats運動は、この問題に一つの回答を用意しようとしています。

に例えば上に述べたレビュー記事の場合、hReviewと呼ばれるMicroformats仕様(ドラフト)が公開されています。hReview仕様にのっとって次のようにブログのレビュー記事を構成することになります。

(hReview仕様から引用)
<div class="hreview">
<a class="item url" href="http://www.amazon.com/exec/obidos/ASIN/B000089CJI/">
  <img src="http://images.amazon.com/images/P/B000089CJI.01._SCTHUMBZZZ_.jpg"
       alt="Album cover photo: The Postal Service: Give Up. "
       class="photo" />
<span class="fn">The Postal Service: Give Up</span></a>
<blockquote class="description"><p>
    "The people thought they were just being rewarded for treating others
     as they like to be treated, for obeying stop signs and curing diseases,
     for mailing letters with the address of the sender... Don't wake me,
     I plan on sleeping in..."
   </p><p>
   "Nothing Better" is a great track on this album, too...
</p></blockquote>
(<abbr class="rating" title="5">*****</abbr>)
<p class="reviewer vcard">Review by
  <a class="url fn" href="http://ifindkarma.com/blog/">Adam Rifkin</a>,
  <abbr class="dtreviewed" title="200502">February 2005</abbr>
</p>
</div>

HTMLタグを見るとグッタリするかもしれませんが、要は普通のHTML要素にclass属性を埋め込んで、あるHTML要素が「何を意味しているのか」がわかるようにしただけです。これを行っても、多くの場合人間から見たWebサイトの見た目には影響を与えません。しかし、class属性があるおかげで、プログラムにとっては単なるDIV要素やA要素よりもはるかに処理しやすいHTMLになります。

「レビュー記事を探す」ような特定の種類の問題を解決するために、一つの方法としてそれ専用の新しい記述形式を作り出してしまうやり方があります。例えば、あるWebサイトのメタデータを表すためにRSSという専用の形式が作られました。Microformats運動は、必ずしも新しい形式を作るのではなく、現在動いている既存の方法にほんの少し手を加えて、多くの人が共通に悩んでいる問題にシンプルな解を提供し、かつそれによって今動いている仕組みには最小限の影響しか与えないことを目指しています。

WebサイトでXMLベースのAPIを提供することとは少し違う観点ですが、やはりWebをよりWeb(様々な場所から様々な場所へくもの巣のようにつながっている状態)らしくするための運動であるという共通点があるように思います。