読者です 読者をやめる 読者になる 読者になる

「第3回 Webkit/HTML5勉強会」に行ってきました(前編)

HTML HTML5 勉強会 行ってみた

お手製

概要

http://atnd.org/events/3058

HTML5 バリデータ "validator.nu" について by Mike(tm) Smith(W3C) さん

マイクさん2

はじめに

http://validator.nu/

という、 HTML5 のバリデータを作っているメンバー(メインコミッターは二人だけ!)の一人、Mike さんによる直々の紹介。このバリデータのキモは一点。 DTDベースではない(SGMLベースではない) ということ。

  • RELAX NG スキーマXMLスキーマ記述言語の一つ。初めて知った)
  • Java コードによる厳密な属性値チェック(SAXライブラリ使用で高速と謳っていた)

が売りであり、高速かつ「practicalな」(Mikeさん談)バリデータを目指しているとのこと。

気づいたこと

HTML5 はそもそも DOCTYPE 宣言中に DTD の URL を記載しないなど、形骸化した DTD (ブラウザはそもそも DTD による SGML-aspect なチェックをこれまで 一切 していない)を廃していこうとする方向である。

しかし、そうなると「どう機械的に検証するのか?」という問題がある。 HTML5 の仕様は当然ながら自然言語で書かれており、機械はそれをスキーマ言語としては利用できない。また、一コーダとしても、ある属性値の取り得る形式を知るために自然言語に当たるのは骨が折れる(要するに、これまでは自然言語仕様書読むより DTD 読んだ方が速かった)。

そこで、 validator.nu は上記の通りクリエータにとって使いやすく的確にエラーをつぶせるバリデータを目指しているということである。また同時に、Mike さんは Whatwg のメンバーでもあり、なんと、 HTML5自然言語版の仕様書は、この validator.nu 用の RELAX NG スキーマから起こされているという(本当!?というようなことを言っていたんだけど、確認できず!)。つまり、事実上は HTML4 までの DTD に取って代わろうとする存在と考えてもいいのかもしれない。実用上は。

多様性多態性

validator.nu は、

http://about.validator.nu/

を参照すると分かるとおりかなり自由度が高い。デフォルトでスキーマも複数用意されており、

に対して検証可能である。( IRI って国際化 URI ですよね?)

また、上記デフォルトスキーマ及び Java 検証コードがビルドスクリプト付きで提供されており、自社のサービスや納入先クライアント、対象ユーザーエージェントに合わせて属性や要素を追加したり、属性値の形式をより厳密にしたりといった検証機構のカスタマイズが可能であるというのが自慢だそうだ。それは便利だし、何しろ HTML5ボトムアップ的な雰囲気がにじみ出ていて面白いと感じた。極論すれば、 XHTML2 は「仕様書がすべて」だったのに対し、 HTML5 は「実装がすべて」である。分かりやすい対比です。

コミッタ募集中

何しろ二人で作っているので、HTML5 の仕様変更や要素追加に合わせて

が追いついていないとのこと。 Java プログラマのコミッタ募集中とのことです。

応用例

対象ユーザーエージェントを絞る場合( "iPhone版" など)、JavaScript やサーバアプリケーションからの要件によって追加要素や追加属性、属性値のオリジナルな検証を行いたい場合も、カスタマイズして利用できることが大きい。

実際に表示した状態でのテストは Selenium がありますが、コードレベルでのチェック、つまり「テスト」にはこれが利用可能です。すばらしい!

取り急ぎ、マイクさんの前半は以上。

社内イントラでコメントいただく

補足: RELAX NGDTD の直接の代替というよりは、W3C XML Schema を代替しようとするものだったはずです。

なるほど分かりやすい!

30分前に着いてしまった…