2xup.org

個人的感想を書く場合のhReviewはどうする?

microformatが様々なところで話題になり、各サービスなどにも実装されるものが増えてきています。中でもhReviewはドラフト段階にありながらもアフィリエイトと商品レビューのエントリがそれなりに多く見られる日本のウェブログに向けて数多くのサービスが対応を進めているようです。意味付けを考えてもなかなか悩ましいというのはわかるのですが、ドラフト段階のフォーマットではいくつか問題だなあ。と思われる部分があります。

やっぱりただ表示されればなんでもいい。なんていう考えではこういったフォーマットは意味の無いものになりますし、せっかく様々な所でスタンダードな考えが提唱されているのですから、こういった部分もしっかりまとめて勧告に至ってほしいと考えています。

例えば、現在ドラフト段階にあるhReviewのフォーマットにはレビュー本文の所にblockquote(ブロックレベル引用)が利用されています。

Adding hReview to this review is quite simple:

<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="dtreviewed" 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>

Note that some of the properties of this sample review are not captured by hReview (visit date, food eaten). This is deliberate per the scope of keeping hReview minimal and simple.

これだと単純にソース上でみると、レビューアーでレビューしたのではなく、だれかのレビューを引用したように見えます。もし仮にレビューをした本人が他の人のレビューを引用したとしても、blockquote要素にcite属性でどこからの引用かも明示されていない為、ますます内包された要素の意味が理解しずらくなってしまっています。おそらく元々アフィリエイトを考慮した価格やアーティストを示す値を持ったclass属性を持つ要素が存在していないところをみると、このようなフォーマットになっているのも、なんとなく解るような気がします。

なぜ、blockquote要素を利用しているのか

なぜ、blockquote要素を利用しているのか。それはおそらくdiv(division・ブロックレベルグループ化要素)要素の入れ子になることで起こるブロックレベルでする明示の意味のぶれと、レビュー本文をp(パラグラフ・段落)で明示し、それが複数の段落に渡った場合それを都合良く内包できる要素がblockquote要素であったのではないかと考えています(内包できる要素がXHTML1.0 Strict, XHTML1.1ではブロック要素のみ。ブロック要素に内包されないテキストは内包できません)

なぜ、blockquote要素だとまずいと思うのか

先ほども書いたようにblockquote要素はブロックレベルでの引用を明示する要素です。さらにそのblockquote要素にcite属性でどこからの引用なのか明示する事で、しっかりとした引用の意味付けが実現します。音声で読み上げるユーザーエージェントもblockquote要素がある場合、『この部分から引用です』といったアナウンスをします。ですので本人が書いたレビューなのにそのレビュー本文がどこかからの引用と解釈されるのはまずいのではないかと考えるのです。

もしhReviewでのレビュー文をblockquote要素で内包するのであれば、divの入れ子になっていた方がまだ少しはましだと思います。

僕の考えるフォーマット

microformatは属性の値でその値を持つ属性を持つ要素に内包される文書が何を示すのかを明示するわけですが、そのルールさえ守れば要素自体は何を使ってもいいのではないかと思います。もちろんHTML文書としての意味付けを意識するということは必要だと思います。

僕自身いろいろな形でフォーマットを書いたりして試行錯誤していますが、どれもピンとくるものはありません。試しに今現在いくつかのエントリで利用している、dl(定義リスト)を利用したもののアフィリエイトを意識したサンプルを提示してみます。定義リストを利用しているわけですし、必ずしもこれが正しいと判断している訳ではないので誤解なきよう。

<dl class="hreview">
  <dt class="item fn"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4890361944/2xup-22/ref=nosim" class="url">ちび象ランディと星になった少年</a><span class="type" style="display:none">product</span></dt>
  <dd>
    <p style="display: none;"><span class="reviewer vcard">Review by <a class="url fn" href="http://2xup.org/">上ノ郷谷 太一</a></span> on <abbr class="dtreviewed" title="200508">2005. 8.13</abbr></p>
    <div>
      <a href="http://www.amazon.co.jp/exec/obidos/ASIN/4890361944/2xup-22/ref=nosim"><img src="http://images-jp.amazon.com/images/P/4890361944.09._PE_SCMZZZZZZZ_.jpg" alt="ちび象ランディと星になった少年" width="105" height="154" class="photo" /></a>
    </div>
    <ul>
      <li class="artist">坂本 小百合</li>
      <li class="price">1,365(税込)円</li>
      <li><abbr class="rating" title="4">&#9733;&#9733;&#9733;&#9733;&#9734;</abbr></li>
    </ul>
    <div class="description">
      <p>映画の観賞後、原作本も読みました。映画と違って哲夢さんの母親である作者からの視点で描かれているので物語の内容はもちろん、ゾウという動物のすばらしさが心に染みます。本当にゾウを、息子さんを愛していらっしゃるんだなあ。と感じることができます。</p>
      <p>読み終わった後、涙とともになんだかちょっとやさしい気持ちになれるのは、もしかしたらこの物語を通してランディに癒されているのかもしれません。</p>
    </div>
  </dd>
</dl>

スタイルシートのサンプルは以下

dl.hreview dd div {
  float:left;
  margin: 0 15px 10px 0;
  padding: 0;
  margin-bottom:0.5em;
  text-align:left;
}

dl.hreview dd div.description {
  float:none;
}

dl.hreview dt {
  margin: 0;
  padding: 0;
}

dl.hreview dd {
  margin: 1em 0 0 0;
  padding: 0;
  min-height: 180px;
  height: 180px;
  /*\*/
  height: auto;
  /**/
  _height: 180px;
}

dl.hreview dd p {
  margin: 0 0 1em 0;
  padding: 0;
}

dl.hreview dd ul {
  margin: 0 0 0.5em 0;
  padding: 0;
}

dl.hreview dd ul li {
  margin: 0;
  padding: 0;
  list-style-type: none;
  line-height: 1.3;
}

こうなってくると、Weblogのエントリー単位でレビューを書く場合、エントリー一つ一つに投稿者情報もありますし、エントリー丸ごと一つでhReviewな事も考えられるので、まったく悩ましい限りです。

現在ほとんどがドラフト段階のhReviewフォーマットを元にタグを生成するものなのですが、本日このhReview生成機能がローンチされたG-Toolsはよく考えられたフォーマットでのhReviewを実現しているように思います。

何度も書きますが、やっぱりただ表示されればいいからなんでもいいじゃん的な考えであると、このmicroformatも全く意味の無いものになってしまうのできっちりとしたカタチで勧告される事を願っています。

3 Comments

ひとぴん@エクステリア明日香管理人2006年6月26日 16:02

こんにちは。

私もマイクロフォーマットに興味を持ち、今調べているところです。それで、hReview Creatorでソースを生成してみて、Blockquote要素の扱いに疑問を持ち、同じような指摘がないかどうかググって、こちらにたどり着きました。

これって問題になってないのでしょうかねえ?他にもabbr要素なんかも「え?これ必要なの?」とも思える使い方だし。英文からっきしなので、本家のディスカッションで話題になっているのかさっぱりわかりませんけれども、とても本家で書かれているように"valid XHTML markup"とは思えない。

>dl(定義リスト)を利用したもの

自分も同感ですね。その方が適切に思えます。

kaminogoya2006年6月27日 17:12

> ひとぴん@エクステリア明日香管理人 さん
こんにちは。はじめまして。
同じように感じてくださっていると知って、非常にウレシイです。
microformats の登場は、文書に意味付けするという (X)HTML の重要な役割を楽しく再認識できる良い機会だとおもうので、このあたりの仕様もクリアにしてほしいですよね。例えば blockquote を利用しているのであればその理由も明らかになれば良いのではないかと思います。
エントリーにも書いていますが、意味の違う要素を利用してしまうよりは、あまり好まれてはいませんが div 要素を利用したほうが良いですよね。
決して僕が用意したサンプルが良い例とはいえないので、ぜひ ひとぴん@エクステリア明日香管理人 さんで何か思いついたらブログやコメント、メエルなどで教えてくださいね。

keita2006年9月 8日 17:18

こんにちは。
私はmicroformatに興味があったんですが、
XHTMLの記述があまりにアレなので今まで使うのをためらっていました。
この記事を読んで「あ、これなら使ってみてもいいかな」と思いました。

ところでひとつ質問させていただいてよろしいでしょうか。
> microformatは属性の値でその値を持つ属性を持つ要素に内包される文書が何を示すのかを
> 明示するわけですが、そのルールさえ守れば要素自体は何を使ってもいいのではないかと思います。
とありますが、これは規格としては何か明記されているのでしょうか?
自分で調べてみたのですが、今一よく分かりません。
もし何かご存知であればご教示頂けませんでしょうか。