趣味Web 小説 2006-02-01

仕様への準拠と批判精神

ある仕様への準拠を決めたなら、不満はあっても、仕様に従うべきだというのが私の主張です。

仕様に従うといっても2つのレベルがあって、ひとつは DTD に違反しなければいいのだ、と。もうひとつは、仕様が想定しているような要素の使い方、マークアップの仕方をしましょう、と。私は後者の立場だから、真名垣さんの object 要素活用法に眉をひそめるのです。

これは p要素は最小の節 にも書いたことですが、W3C はブロックレベル要素は単体で意味が通じるものであるべきだと云う自説を裏付ける、いかなる説明もしていません。W3C は循環論法や論理の倒錯まで駆使してブロックレベル要素の定義を自然言語の文法と結びつけることを避けています。真名垣さんと W3C とでは、多くの価値観が共有されていないことに注意すべきです。

HTML はこのように進化するべきだ、という提言をすることと、とりあえず現存の仕様に従うことは矛盾しません。仕様に従うのは、窮屈なことです。その窮屈さをテーブルレイアウトをする人には押し付けて、自分は、仕様に反する object 要素の使い方をする、これは疑問です。仕様が否定していない「読点で終了するブロックレベル要素」を気持ち悪いとする感情は、仕様に挑戦する理由として正当なのでしょうか。

大前提
はじめにテキストありき
仮説
テキストをマーク附けする事で、HTML文書ができあがる。

これは野嵜さんの有名な基本方針ですが、たしかにこう考えると HTML はわかりやすい。けれども、W3C の勧告書を検討していくと、この基本方針に反する内容がいくつも見つかります。理解の鍵となる概念の絞り込みは、学習の初期には重要です。しかし少なくとも現在、事実上の標準となっている各種 HTML の仕様は、原則だけでは説明できません。ならば現実に合わせる他ない場面では、原則が通用しない事情を理解していく必要があるでしょう。

これから世に出る新しい仕様は、ぜひ野嵜さんの基本方針に従ってほしい。HTML の仕様は、見通しがよくわかりやすいものが望ましいと思います。しかしそれは遠い未来の話で、「今、どうするか」という問題は別に考えるべきです。

真名垣さんが、普及しているとかそういった理由で他人の作った仕様に準拠するのであれば、仕様と個人的欲求の不整合は、自制によって対処するのが筋だと私はいいたいのです。現時点では、p 要素がブロックレベル要素を包含できる仕様はありません。

object 要素は解決策にならないと私は考えています。はじめにテキストありきの大前提と矛盾するからです。object 要素において、本来、存在するのはオブジェクトであり、テキストはその代替なのです。object 要素は、実質的には空要素です。object 要素の内容は、img 要素の alt 属性値と同じ代替テキストに過ぎません。埋め込むオブジェクトがないのに代替テキストだけを用意するのは、無から有を生む行為です。奇怪といわざるをえません。

W3C の作成した仕様が我慢ならないなら、独自仕様を作って準拠する手も。DTD にはさして文句がないわけだから、解説部分だけ独自に書き直すのです。そして例えばこんな文書型宣言をつけるわけですね。

<!DOCTYPE html PUBLIC "-//managaki//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

凡ゆる要素をobjectとしてマークアップしても何等問題は無い筈だ。「箇条書きのメモを埋め込む」的感覚。

object 要素の内容は埋め込みに失敗した場合の代替テキストであって、埋め込むオブジェクト自体は data 属性などで指定しなければなりません。そして残念なことに、URI で指定できない何か(例えばマークアップされた文字列そのもの)を埋め込む方法は、現状の object 要素の仕様には規定されていません。(私の読み落としでなければ)

object 要素は一見、テキストをオブジェクトとしてマークアップするための要素のようでいて、じつは違います。形式上の擬態ゆえに、野嵜さんの基本方針に賛同・共感する方々の誤解を招きやすい厄介な要素なんです。W3C は(あなたの)理想の代弁者ではない。だから、仕樣は仕樣として尊重する必要はあります。が、仕樣の見直しはあり得る。と心に銘じて、批判精神を忘れてはいけないのだと思います。

私は絶対にtableをレイアウト目的で使用するなとも、何時いかなる時でもblockquoteでマージンを取ってはならないとも、言った覚えはない。問題は、それを妥協として用いる正当な理由があるかどうかと云う点。私がそれらのマークアップを否定する場合は、必ず何か別の理由が存在している。

はじめにテキストありきと云う原則が仕様書の一部分と矛盾するから、ならばと言って即仕様書の決まりを守らなければならない訳でもない。<object>を噛ませるのは、はじめにテキストありきの原則にも仕様が想定しているような要素の使い方、マークアップの仕方をしましょうと云う原則にも反している。だからと言って、どちらかを採ると、最良とは言えない結果になる。だから、私はどちらも採らず、それ以外の妥協案を呈したに過ぎない。

なるほど、当方にいささかの誤解があり、失礼いたしました。

「何をもって妥協するに足る正当な理由とみなすか」が、今後も折々に提起されるであろう問題に取り組む際の争点となるのでしょうね。

Information

注意書き