要約:Amazonアソシエイトを使って商品の情報表示を行うWordpress向けプラグイン「Amazon Linkage」をhReview 0.3に沿って書き直してみたので、そのプロセスを記しておきます
WordPressでAmazonアソシエイトを使用するためのプラグイン”Amazon Linkage”プラグインをmicroformats対応にしてみたのだけど、その対応までのプロセスを言語化しておきます(そもそも、microformatsって何だってのはそのものずばりのid:naoyaさんの記事におまかせします)
さて、まずmicroformatsと一口に言っても、代表的なもの(ドラフト含む)だけでも以下のように結構種類があります。
- hCalendar
- カレンダーやイベント情報を表現するためのmicroformats
- hCard
- 人や組織の情報などプロフィールを表現するためのmicroformats
- hAtom
- 更新情報を表現するためのmicroformats(例としてウェブログの記事の情報など)、ちなみにこのサイトもhAtomに対応してます
- hReview
- 製品やサービスなどのレビューを表現するためのmicroformats
- adr
- 住所を表現するためのmicroformats、hCardの1プロパティでもあります
- geo
- 世界測地系に基づいて緯度・経度を表現するためのmicroformats
Amazon Linkgeプラグインでは商品情報をマークアップするわけですから、一番近いのはhReviewだと思われます。hReviewのスキーマはMicroformats Wikiによると、以下のようになっています。
- hReview (
hreview)
version. 任意。テキスト。summary. 任意。テキスト- item
type. 任意。 product | business | event | person | place | website | url.iteminfo. 必須。fn(url||photo) | hCard (for person or business) | hCalendar (for event)reviewer. 任意。hCard.dtreviewed. 任意。 ISO8601 absolute date time.rating. 任意。 fixed point integer [1.0-5.0], with optional alternateworst(default:1.0) and/orbest(default:5.0), also fixed point integers, and explicitvalue.description. 任意。text with optional valid XHTML markup.- tags. 任意。keywords or phrases, using rel-tag, each with optional rating.
- permalink. 任意。rel-bookmarkとrel-selfを使う。
- license. 任意。rel-licenseを使う
フィールドの詳細もあわせてみると、hReviewに必須なのはitemクラスとそれに付随するfn(itemの名前の整形文字列)クラスのみで、あとは全て任意扱いです。では、以下の表示を例にしてみます。
例えば、このコードは以下のようになっています(いました)。
<div class="showcase clear-box"> <p class="cover" style="height: 246px;"><a href="http://www.amazon.co.jp/o/ASIN/477413015X/ref=nosim/openvista-22" title="Amazon.co.jp: いちばんやさしい オブジェクト指向の本 (新書)"><img src="http://note.openvista.jp/wp-content/plugins/amazon_linkage/cache/477413015X.png" width="147" height="239" alt="いちばんやさしい オブジェクト指向の本 のカバー画像" /></a></p> <div class="database"> <p>いちばんやさしい オブジェクト指向の本 </p> <p>サイト内で7人がクリック</p> <table summary="『いちばんやさしい オブジェクト指向の本 』についての情報"> <tbody> <tr><th>著者</th><td><a href="http://www.amazon.co.jp/gp/search?index=blended&tag=openvista-22&__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%E4%BA%95%E4%B8%8A+%E6%A8%B9">井上 樹</a></td></tr> <tr><th>販売元</th><td>技術評論社</td></tr> <tr><th>発売時期</th><td>2007年01月19日</td></tr> <tr><th>定価</th><td>882円</td></tr> </tbody> </table> </div> </div>
これをhReview(ver. 0.3)に従って、hreview/item/fn/url/photoクラスを加えてみるとこうなります。
<div class="hreview showcase clear-box"> <div class="item"> <p class="cover" style="height: 246px;"><a href="http://www.amazon.co.jp/o/ASIN/477413015X/ref=nosim/openvista-22" class="url" title="Amazon.co.jp: いちばんやさしい オブジェクト指向の本 (新書)"><img src="http://note.openvista.jp/wp-content/plugins/amazon_linkage/cache/477413015X.png" width="147" height="239" class="photo" alt="いちばんやさしい オブジェクト指向の本 のカバー画像" /></a></p> <div class="database"> <p class="fn">いちばんやさしい オブジェクト指向の本 </p> <p>サイト内で7人がクリック</p> <table summary="『いちばんやさしい オブジェクト指向の本 』についての情報"> <tbody> <tr><th>著者</th><td><a href="http://www.amazon.co.jp/gp/search?index=blended&tag=openvista-22&__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%E4%BA%95%E4%B8%8A+%E6%A8%B9">井上 樹</a></td></tr> <tr><th>販売元</th><td>技術評論社</td></tr> <tr><th>発売時期</th><td>2007年01月19日</td></tr> <tr><th>定価</th><td>882円</td></tr> </tbody> </table> </div> <dl class="hidden"> <dt>version</dt><dd class="version">0.3</dd> <dt>type</dt><dd class="type">product</dd> <dt>reviewer</dt><dd><a href="http://www.openvista.jp/person/leva" class="reviewer">leva</a></dd> </dl> </div> </div>
‥えー、既にお気づきかと思いますが、このコード内にはアイテムのレビュー内容は一切含まれていません。Amazon Linkage自体にはレビュー内容は含めないという仕様にしているためです(つまりレビュー内容は別の場所にある)。hReviewなのにレビューがないってどうなんだそれって感じですが、一応規格(ドラフトだけど)には沿ってます。
えーと、hReviewの目的は(WikiのIntroductionを読んだ限りでは)レビューを機械処理して共有しやすくなるためにあるのであって、であるならばレビュー内容、つまりdescription(あるいはratingやsummary)プロパティは必須にすべきだと思います。でなければ、microformatsを持ったコンテンツを検索してもレビュー内容のない単なる商品情報だけの結果であふれかえってしまうのではないかと。
ですが、推測するに、とりあえずitemプロパティ以外は全て任意にした方がユースケースは増えるので、そうして敷居を下げた上で、より多くの情報をウェブ上に集めておいて、検索シーンにおいて「descriptionプロパティを持つものだけ表示する」とかそういう柔軟な運用方法を意図しているのかもしれません。
さて少し話がそれました、本題に戻りましょう。現在、Amazon Linkageプラグインを使ってレビューを含めることはできないので、このプラグインを使いつつレビューを書くとなると、どうしても「hReviewで表現された商品情報+レビュー」という風に各々が独立してしまいます。かといってレビュー部分にも簡単な商品情報を書くのは煩雑で、機械の論理に同調する形になりまず人にとって読みやすいことが重要、機械はその次
というコンセプトから外れてしまいます。
しかし、実はmicroformatsにはインクルードパターン(include-pattern)という便利な方法が用意されています(See also Object Includes)。これはa要素かobject要素を用いることで、あるmicroformatに同文書内にある別のmicroformatを組み込むことができるというものです。ちなみに、複数のレビューをまとめてhReviewで表現するときに何回も商品情報を記述するのを避けるためにも使えるようです。そして、この方法はhResumeとこのhReviewで使うことができるようです。
さて、ではこのinclude-patternを用いて、先ほどのコードにレビュー内容を追加してみましょう。
<div class="hreview showcase clear-box"> <div class="item" id="item-477413015X"> <p class="cover" style="height: 246px;"><a href="http://www.amazon.co.jp/o/ASIN/477413015X/ref=nosim/openvista-22" class="url" title="Amazon.co.jp: いちばんやさしい オブジェクト指向の本 (新書)"><img src="http://note.openvista.jp/wp-content/plugins/amazon_linkage/cache/477413015X.png" width="147" height="239" class="photo" alt="いちばんやさしい オブジェクト指向の本 のカバー画像" /></a></p> <div class="database"> <p class="fn">いちばんやさしい オブジェクト指向の本 </p> <p>サイト内で7人がクリック</p> <table summary="『いちばんやさしい オブジェクト指向の本 』についての情報"> <tbody> <tr><th>著者</th><td><a href="http://www.amazon.co.jp/gp/search?index=blended&tag=openvista-22&__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%E4%BA%95%E4%B8%8A+%E6%A8%B9">井上 樹</a></td></tr> <tr><th>販売元</th><td>技術評論社</td></tr> <tr><th>発売時期</th><td>2007年01月19日</td></tr> <tr><th>定価</th><td>882円</td></tr> </tbody> </table> </div> <dl class="hidden"> <dt>version</dt><dd class="version">0.3</dd> <dt>type</dt><dd class="type">product</dd> <dt>reviewer</dt><dd><a href="http://www.openvista.jp/person/leva" class="reviewer">leva</a></dd> </dl> </div> </div> </div> <p>さて、今日本屋に行ったら(中略)というわけで、買ってきました。</p> <div class="hreview"> <a href="#item-477413015X" class="include" title="Review content of urn:isbn:477413015X"></a> <p class="description">オブジェクト指向のコンセプトを知るための初学者向けの入門書、具体例を中心に展開しているので分かりやすいです。プログラマ以外にもオススメ。<span class="rating"><span class="best">10</span>点中<span class="value">8</span>点。</span></p> </div>
これでhReviewを使ったマークアップができました。もし、この記述に問題点がある場合はお知らせ下さいませ。
ちなみにFirefox 3ではmicroformatsをサポートすることが表明されていますが、残念ながら(ドラフトなので、現在のところは)hReviewはサポートされていません。adrやgeoがサポートされていますから「ドラフトなので」という理由ではないかと思いますが、Firefox 4以降でのサポートに期待したいところです。
あと、最後に余談ですが、こういう関連づけの方法って対訳のマークアップなど、2つの要素群を関連づける方法として一般化できないできないもんですかね。HTMLは同文書内の要素を結びつけることはあんまり得意じゃないものですから。
参考URL
Popularity: 2% [?]
- キーワード:




読者のコメント
0件