microformats って一体何だ?

にわかに盛り上がりを見せている microformatsTechnorati が最近注力しているので有名で、Web 2.0 のディスカッションの中でもときおり出てくる重要な要素らしい。アルファギークな人たちも、近頃は microformats について触れることが多くなってきました。

が、僕は頭が悪いんだろうか、いまいち何のことだかよくわからなくって困ってたので、ここで少し腰を据えて、色々見て回り勉強中です。まだ細かいところがもやもやしてはいるものの、ようやくその実体が掴めて来た感じです。

microformats とは何か?」と言われると、その答えはズバリ About microformats というエントリーに書かれているのですが、これを理解するよりまず具体例から入った方が分かりやすい。現在 microformats と呼ばれているもののうち、すでに実用段階に入っているものがあります。Trackback の議論などでもよく話題に上がる rel="nofollow" がそれ。その仕様は rel-nofollow - Microformats にあります。

rel="nofollow" はご存知の通り、ウェブサイトからどこかしらへリンクを貼るにあたって、そのアンカータグのアトリビュートとして追加しておくと、検索エンジンでそのリンクが評価されなくなり、スパム防止に役立つ、というもの。

Googleは、コメントスパム対策としてリンクの属性を判別し、ページランクの集計から除外する機能を追加したと1月18日に発表した。

と、今年始めに話題になったあれです。

この rel="nofollow" という属性で、その要素にアンカーであるという以上の意味(検索エンジンに評価されないリンクという意味)を持たせる、というのは、マークアップしたデータにメタデータを与えているということに他ならない。

ウェブ上のデータにメタデータを与えるというとセマンティック・ウェブが思い出されるのですが、その実現手段としての RDF/OWL のような "megaformats" ではなく、rel="nofollow" の例のようにもっと小さな単位でシンプルに、データにメタデータを付与してやりましょうというのがこの "microformats" の考え方らしい。

microformats という考え方があって、その中に RelNoFollow (rel="nofollow") とか RelTag (rel="tag") とか、XFN とかいろいろ目的ごとに仕様がある、といった具合です。

もう一つ具体例を見ると分かりやすいと思います。まだドラフト段階のようですが、microformats の中に hReview という仕様があります。(About microformats の図によれば、hReview は elemental microformats の上に成り立つ compound microformats、ということで RelNofollow や RelTag よりももう一つ上のレイヤの仕様らしい。) Review、という名前が表すとおり、商品レビューのようないわゆるレビューに対してメタデータを付与してやる仕様のようです。

具体的には、

<div class="hreview">
 <span><span class="rating">5</span> out of 5 stars</span>
 <h4 class="summary"><span class="item fn">Crepes on Cole</span> is awesome</h4>
 <span>Reviewer: <span class="reviewer fn">Tantek</span> - 
 <abbr class="dtreview" title="20050418T2300-0700">April 18, 2005</abbr></span>
 <blockquote class="description"><p>
  Crepes on Cole is one of the best little creperies in San Francisco.
  Excellent food and service. Plenty of tables in a variety of sizes 
  for parties large and small.  Window seating makes for excellent 
  people watching to/from the N-Judah which stops right outside.  
  I've had many fun social gatherings here, as well as gotten 
  plenty of work done thanks to neighborhood WiFi.
 </p></blockquote>
 <p>Visit date: <span>April 2005</span></p>
 <p>Food eaten: <span>Florentine crepe</span></p>
</div>

という感じで、class 属性を使ってメタデータの種類を表現し、レビュー本文のどこがスコアでどこがサマリでどこが日付かといった情報を付与していきます。

TechCrunch - Google Reviews Profile という記事によると、この hReviews による microformats を解釈するアプリケーション、つまり review aggregator はすでにあってBlogcritics.org がそれなんだそうな。なるほど、レビューらしきものがトップページにずらりと並んでいます。

と、こんな感じで、多くの問題を解決するための大きな仕様ではなく、特定の問題を解決するための小さな仕様で、ウェブ上のデータに Simple & Easy にメタデータを与えていきましょう...その試みが microformats です。この辺まで理解してから、

WWW2005のDeveloper's DayではMicroformatsのセッションにずっとでていました.元々はSemantic Webのセッションにでるつもりでしたが,直前にMicroformatsというのは知って,これは面白そう,ということで,こっちにでました.
で,そもそもMicroformatsとは何か?

という武田教授のエントリーんでいくともう少し深く理解できるかも。(僕は最初読んだときはさっぱりだった(笑))

つい昨日、Goodpic にて

待望の日本地図が追加されたGoogle Mapsと同時にリリースされた、Google ローカル。何気なく、自分のブログの名前と地域を検索してみたら、なんと自分のブログ記事がすでに地図上にマッピングされています。どうやら、ブログ記事中に書いてある、レストランなどの住所と、店の位置情報をマッピングさせている模様。すでに位置情報と住所が誰かに登録されていたら、あとはキーワードマッチだけでOK(現在は、Googleローカルに登録さされていたら、あとはキーワードマッチだけでOK(現在は、Googleローカルに登録されているもののみ?)

という話題が挙がっていましたが、こういう、テキストの中のどこからどこまでが住所情報、みたいなものは microformats で表現してやるのがぴったりなんじゃないかな、とも思います。(Google は例によって力技ですべてを解決してしまうのですが。Web 2.0 な方向性で、もう少しコンピュータにもやさしい世界でもいいかもしれないと思います。)

一方、自分たちのサービスに応用していくにはどうしたらいいか、ということになってくるのですが周囲の状況はというと

こちらは microformat を MT でどうやって実現しようか、という話題。 MT のプロダクトマネジャー Jay Allen (mt-blacklist の作者でもある) による構想で、Greasemonkey を使おうという感じ。

と宮川さんがちらっと書いているように、各地で試行錯誤がいままさに繰り広げられている段階のようで。

すでにオープン・スタンダードになっている仕様の中ではてなのサービスに今すぐ実装できそうなものとしては、RelTag かなと思います。RelTag は、rel="tag" アトリビュートによりそのリンクがタグ(やキーワード、あるいはカテゴリ)を表しているというメタデータを付与するための仕様です。はてなブックマークのタグはもちろん、はてなダイアリーキーワードリンクにもこの rel="tag" を付け加えてやることで、Remix しやすくなる...ということになるのかなと。

一方、XML が特に仕様で策定されていない野良XMLをアプリケーションプロトコルに利用しても構わないように、自分たちのサービスに特化した microformats っていうのがアリなのかどうか、ということも気になっています。が、About microformats における microformats are not の中に

infinitely extensible and open-ended

とある通り、microformats っていうのはむやみやたらに HTML/XHTML を拡張するためのものではないだろうので、自社サービスに特化した拡張とかそういうものはナシなのかなという印象も受けます。この辺どうなんだろう。オープン・スタンダードなんだからちゃんと議論に参加して仕様を策定しましょうってことなのかな。

はてなブックマークに、はてなポイントをインフラにした投げ銭機能のようなものを追加したいと思っているのですが、ポイントを送信できる対象がはてなダイアリーだけでは面白くないし、それ以外のウェブサイトにもポイントを送信できるような仕組みを考えています。

そこで、AmazonのアソシエイトIDやGoogle AdSenseのIDのような、各アカウント毎にユニークなIDを発行してそれをウェブサイト上のどこかに埋め込んでもらえばいいのかなと思っています。その埋め込む方法を microformats で実現したらいいんだろうか、と思ってたのですがどうもそういう用途に使うというのは少し違うような気がしています。(不勉強なので、勘違いしているかもしれませんが。)

と、なると Trackback Auto-Discovery のようにコメントで RDF を埋め込むとか、もっとシンプルに単純にコメントだけで済ませるとかそういうことになってくるのかなあ、とか悶々と考えています。

ところで、microformats について調べているうちにセマンティックメモという内輪でもりあがったジョークを思い出しました。