趣味Web 小説 2007-07-02

HTML に装飾要素は必要

英語の方は拾い読み。どうせろくに読めないし……。

b 要素、i 要素、small 要素、sup 要素、sub 要素などの存続を石川さんは理解できないようだけど、私は工学部の卒論を HTML 文書化したので、物理的な装飾を行う要素の存在理由はよく分かります。

当時、学内には古い UNIX が残っていて、搭載ブラウザは Mosaic でした。CSS 以前の時代のブラウザ。製作者スタイルがユーザ環境に反映される保証が全くない。じつは今後も、製作者スタイルに対応しないブラウザは残り続けると W3C も WHATWG も考えていると思う。チープな環境はいつまでも消えてなくならない。

例えば、iPod nano クラスの携帯機器が HTML 文書に対応するとき、製作者スタイルに対応するだろうか。するかもしれないけれど、しない方がよさそうじゃない? でも、HTML の仕様にある要素には対応すべき。

ようするに何がいいたいか。業界の慣習で、ある種の文字は小文字にする、太字にする、斜体にする、ゴチック体にする、と決まっているわけです。それを HTML 文書化する際、ふつうは適切な要素が存在しない。機械工学じゃベクトルは太字にするんだ、じゃあベクトル要素があるか、あるわけがないですね。

ベクトル要素を拡張モジュールで定義しても、span 要素に class 属性で vector と書くのと何ら変わりがない。デフォルトスタイルは拡張された要素なんかに対応するわけがないから、製作者スタイル頼みとなってしまう。

W3C は以前から、現実的なルール作りに腐心してきたという印象があります。この問題でも同じこと。文書は様々な文脈を背負っているわけで、機械工学の文書で、こういう話の流れなら、この太字はベクトルを意味しているんだ、みたいなことは、HTML 文書がまともに作られていればわかるわけですね。

スッキリしないかもしれないけれど、b 要素とかは、あった方がいいのです。なきゃ不便だ。数式を書く人がみんな MathML を使わなきゃいけなかったら、理系の人は日記以外で HTML なんか使う気にならなかったはず。sup 要素と sub 要素と small 要素があったから、HTML を気に入ったんです。

仮説

W3C や WHATWG は、「HTML 文書+ブラウザのデフォルトスタイル」で、素のテキストを HTML 文書化する需要のほぼ全てをカバーできる仕様にしたいのだと思う。

補遺

HTML が「ベクトル要素はデフォルトスタイルを太字にすることを推奨する」なんてのをいちいち拾い上げていくことは現実的でない。仕様の策定者は、自分たちが作っているものの限界を知っていて、だからこそ、b 要素などを後生大事に残しているのではないか。

ブロックレベル要素は改行で区切られると説明しながら、br 要素などという鬼子を用意しているのと同じこと。これを矛盾だと言い募るのは考えが浅い、と私は思うようになりました。多様な価値観を認める仕様でなければ、世間に通用しない。

それでも HTML5 は HTML4 で曖昧になっていた多くの部分について、仕様策定者たちの主張を少し明確にしています。私は HTML4 から動くつもりゼロですが、運用はなるべく HTML5 に適合させていきたい。

……といっても、「面倒くさいから em 要素、storng 要素、address 要素はもう使わない」とか、cite 要素は今後も使わない、みたいな消極的な方向性がメインですが。HTML の仕様書は、大半の要素については「マークアップしなさい」とはいってないと思う。こんな要素を用意していますよ、なのではないか。

仮に略語を(文書中初出なら)必ず abbr 要素でマークアップするのが正当なマークアップなら、私は「不思議マークアッパー」でいい。面倒くさいからもうサイトなんか作らない、という方が悲しむ人は多いと思う。

追記

とは言っていないのは、まあその通りですが、事実上のデフォルトスタイル指示ですよね。

私は物理要素を全て削除すればいいと思っているわけではない。私がHTML 5をいまいちだと感じているのは、HTML 4.01で物理要素として定義されていたものが、論理要素として定義しなおされたり、物理要素として残されたりしている点にある。スタイルシート言語非対応のUAのことまで考えるのなら、i要素とb要素、sup要素とsub要素、small要素とbig要素、hr要素などは物理要素として残しておくべきだった。で、「これらの要素は制作者がスタイルシートを用意しないときにのみ用いるべきである」と書いておけば、HTML 4.01で打ち出された構造と見た目の分離の原則を維持しつつ、分離ができないときの例外規定として物理要素に存在意義を持たせることができた。

そうじゃなくて、製作者がスタイルシートを用意しても、UA の方で対応できない可能性があるわけだから、伝統あるいは慣習でボールド体の表現が適当と判断できるフレーズは b 要素としてマークアップすべきなんですよ。

u 要素や big 要素、font 要素が消えたのは、様々な業界の慣習を精査した結果でしょう。

big と small の非対称は、活字組版の制約が大きい。文字を大きくしちゃったら、同じ行の活字を全部、ベースサイズの大きなものにしなきゃならない。でもベースが大きく文字サイズはふつう、なんて活字は用意できない。だから本文中に不意に大きな文字を登場させるような慣習はない。

逆に小さな文字を使うのは簡単。ベースの高さがふつうの文字と同じで、下寄せの小さな文字部を持つ活字は、用意しやすい。例外に対して、周囲が対応しなきゃならないか、当該部分が対応すれば済むか、ようはその違い。

ともかく、b と i と sup と sub と small が残った。基本的にこれらは全部、spans of text whose typical typographic presentation is *** をマークアップするのに使用せよ、ということで論理要素化されたとみていいのではないか。

ようするに、版権表示要素、法的制限要素、専門語要素、慣用句要素、思考部分要素、船名要素、キーワード要素、製品名要素、指数要素、添字要素なんてものをいちいち定義していられません、と HTML5 ドラフトの筆者はいっている。br 要素と同様、仕様と現実世界の様々な需要の間を埋める緩衝材なのだと思う。

追加されたハイライト要素、時間要素、計量要素、進捗要素は、いずれもスクリプトなどとの連携を念頭に置き、インタラクティブな用途を想定しているっぽいので、ちょっと話が違いますね。ハイライト要素は、例えばページ内検索スクリプトが検索されたフレーズをマークアップするのに使うものでしょう。

で、結局は span 要素がその他の需要を全部拾うことに。ブラウザのデフォルトスタイルでは無視されるその控え目な性質が、b, i, sup, sub, small より些細な需要を担当するという役割と整合しています。

Information