#002c

ここ数日檜山さんが microformats についていろいろ書いてる。

というわけで俺は実装作業の合間を縫って microdata のワーキングドラフトなんぞを読んでいたりする。

斜め読みした感想としては、 microformats よりも microdata の方が Caty で扱うには適していそう。というのも、 microdata には itemtype 属性で URL を指定できるようになっていて、 Caty 側でスキーマに対して URL を紐付ける仕組みを用意すれば、\ 何か面白そうな事ができそうというのが理由。

例えば組み込み型の場合、

http://example.com/schema/string.schema
http://example.com/schema/integer.schema
http://example.com/schema/boolean.schema

などという形で提供し、任意の Caty アプリケーションで定義された型についても

http://example.com/schema/app/Foo.schema 

のように提供することとし、 .schema 拡張子でアクセスしたら標準の JSON スキーマか何かでの、 .casm 拡張子でアクセスしたら Caty でのスキーマを提供するみたいな事も可能。やろうと思えば .validator という拡張子に POST してバリデーションを行うとかもできる。理屈の上では。

とりあえず檜山さんのところで書かれてたサンプルっぽいものを microdata で書き直すと、

<div itemscope itemtype="http://example.com/schema/someapp/VCard.schema"> 
  <div itemprop="fn">鍬田 力</div> 
  <ul itemprop="email-list" itemscope> 
    <li itemprop="email">chikara.kuwata@gmail.com</li> 
  </ul> 
  <ul itemprop="url-list" itemscope> 
    <li><a itemprop="url" href="http://return0.info/">http://return0.info/</a></li> 
    <li><a itemprop="url" href="http://twitter.com/ckuwata">http://twitter.com/ckuwata/</a></li> 
  </ul> 
</div> 

これに対する VCard 型のスキーマは、まあ大体こんな感じ。

type VCard = {
    "fn": string,
    "email-list": list<string>,
    "urll-list": list<string>
};

ついでに書いておくと、俺は microformats の自由度についてはまったく共感できないというのが正直なところだ。\ 檜山さんが指摘している通り、あまりに曖昧なフォーマットの仕様は\ 実装者への負担も大きいし、俺はデータの作成者への負担も大きいと思う。\ もしも microformats で何かを記述したいと思い、さらに相互運用性まで\ 気にするとして、どうすればデータの作成者は「このマークアップでいいんだ」という安心感を得られるのだろう? 現状の microformats の仕様ではかなり難しいように思える。

その点 microdata は

という点で、「作成者が安心できる」という点ではだいぶマシになってると思う。俺のアイディアそのままじゃなくてもいいからスキーマと microdata を紐付ける手段があれば、正しい記述なのかどうかをバリデータに通すことでダイレクトに確認できるはず。

というわけで、ちょっと microdata に心が傾いている。