先日,LDRizeとmicroformatsを巡るちょっとした議論があって,考えるキッカケをもらいました.microformatsのおさらいと,思考メモ.
microformatsとは
まずはWikipediaからの引用です.
マイクロフォーマットはHTML(またはXHTML)ウェブページにおける、意味を表現するための小さなマークアップである。マイクロフォーマットには用途ごとに様々なものがある。
ボクのまわりでは「microformatsってよく分からない」という声がよく聞こえます.名前だけを聞くと,確かによく分かりませんね.
microformatsがいまいち広まらないのは,サイト作成者にとってのメリットが分かりにくいからではないかと思います.こういった状況を打破し,今よりもっと認知されるためには何が必要か,と考えてみたとき,OpenIDに対する次の言葉がmicroformatsにもそのまま当てはまるなぁと感じました.
「対応するメリットがない」のではなく、「対応していないことのデメリットが大きい」ような時代が来るのではないかということだ。
AutoPagerizeのmicroformats
ボクがなんとなく「microformatsってそういうことか!」と思ったのは,AutoPagerizeについてアレコレ調べたときでした(AutoPagerizeはバージョン0.0.11からmicroformatsに対応しています).「こういうサイト構造のときは,こういう風にマークアップしようね」という小さな決まり事のこと,と解釈しています.
ご存知AutoPagerizeは,閲覧中のWebサイトの「次のページへのリンク」を見つけて裏側でアクセスし,1ページ目,2ページ目,3ページ目…と変化する「ページの内容部分」を切り出し,「現在のページの内容部分の最下部」の前に継ぎ足します.ここでわざとらしく括弧付きで書いた3つの要素が,すなわちAutoPagerizeが動作するために必要な情報ということになります.それぞれに対応するマークアップが「@rel=”next”」「class=”autopagerize_page_element”」「class=”autopagerize_insert_before”」です.
ページング処理は,ありとあらゆる種類のサイトで実装されています.それらの共通の構造をformatとして定義し,単一のスクリプトで同一の継ぎ足し処理が実現されます.
microformatsの実例
Microformats Wikiを覗くと,様々なmicroformatsを知ることができます.
例えばhAtomは,ブログのマークアップに使われたりします.「エントリのタイトル」「エントリの本文」「エントリのパーマリンク」などの情報は,ほとんどのブログで共通の情報ですよね.これらに共通のマークアップが施されていれば,ブログ間の細かな差違を気にすることなくスクレイピングできるようになり,必要な情報を取得するのが容易になる,などのメリットが生まれます.
他には主にソーシャルブックマーク用のxFolk,レビュー用のhReviewなどがあります.
LDRizeとmicroformats
ご存知LDRizeというユーザスクリプトを導入すると,対応サイトのすべてにおいてlivedoor Readerライクなキーバインド操作が可能になります.
LDRizeは,先に紹介したhAtomとxFolkに対応しています.otsuneさんがSITEINFOを書いたとのことです.
実はLDRizeのxFolk SITEINFO(設定ファイル)はオレが書いた。
なので,otsuneさんのエントリで言及されているようにxFolkに対応しているTwitterなどのサイトでは,いきなりLDRizeが動きます.素晴らしいですね.
さて,ずいぶんと遠回りをしましたがようやく本題です.発端はMaicoさんの次の発言.
LDRizeのSITEINFOにもmicroformatを作れば、みんな幸せになれないかな?
「それhAtomやxFolkでできるよ!」ってことで,LDRizeの作者のsnj14さんが反応.
@mai_co_jp LDRizeはhAtomとxFolkっていうmicroformatsに対応してます
この話の行方が気になってモヤモヤしていたら,Maicoさんはそのとき同じ建物内にいることが判明し,さらに,すぐ近くにいたdarashiさんも駆けつけてくれることになったので,会って話をしてみることにしました.要求定義を聞いてみた結果,肝は以下の2点だと分かりました.
- 内部向けのサイトなので,公にSITEINFOを書きたくない
- 「v」「o」で開くようなリンクはなく,「j」「k」のスクロール操作だけを利用したい
ちょっと特殊なケースですね.スクロール操作を実現するだけなら似非xFolk対応(xFolkの仕様を部分的に満たすだけでLDRizeを動かすことはできる)すればいいだけですが,リンクがリストされているサイトでなければ,xFolkのマークアップは意味的には正しくありません.つまり「paragraph単位でスクロールして閲覧するようなサイト」用のmicroformatsがあれば嬉しい,ということですかね.この件を追いかける中で,Amazonの商品ページ(例)でもLDRizeが動くことを知りました.「j」「k」によるスクロール操作だけが利用できるパターンです.確かに便利です.
AutoPagerizeのmicroformatsは,完全にAutoPagerize用です.一方でLDRizeのカバーしているmicroformatsは,LDRizeのためのものではないので,LDRizeを動作させるためにマークアップすることが意味的に正しいとは限らないのですね.
じゃあ,今回のケースのようなサイトでLDRizeの「j」「k」スクロールだけを利用したいときにはどうすればいいでしょうか.オレオレフォーマットにはなりますが,SITEINFOに
domain: 'microformats', paragraph: '//*[contains(concat(" ",@class," "), " ldrize-paragraph ")]'
のような記述を追加し,サイト側のマークアップで対応するってのは現時点ではアリかなと思っています.皆さん,どう思われますか.
最後に
ブログといえばRSSを吐くモノ,と定着したように,microformatsも「対応してあると便利!」から入って「対応するのがお作法だよね!」という雰囲気が強くなっていくと,もっともっとWebが便利になりそうですね!わくわく!