Jintrick.netagenda2007年12月アーカイブ → 2007年12月13日

マークアップ言語の設計のgoalとその利用のgoal(Re: H.O.D. 2007/12)

暗黙的な構造では意味がないというのは以前から言っている訳で(H.O.D. 2007/12)を読んで少し考えた。

先に結論を述べる。「セクションのマークアップはやって当たり前である」という結論は、HTMLの設計目的から導かれるものではない。(これが言いたかったのに中々言葉が出てこなくて、反応がやたら遅れてしまった)

HTML でマークアップする目的は文書構造の明確化であり、ソフトウェアによる論理解釈を助けるためです。

暗黙的な構造では意味がないというのは以前から言っている訳で(H.O.D. 2007/12)より

文書構造を明確化しソフトウェアによる論理解釈を助ける、というのは、HTMLの設計のgoalである。マークアップする目的は利用のgoalであり、両者は同一ではない。

div 要素と span 要素は HTML の中でブロック/インラインレベルでの文書構造を明確化するための汎用的な機構を提供するものです。

暗黙的な構造では意味がないというのは以前から言っている訳で(H.O.D. 2007/12)より

これは真。但し「明確化」に違和感を持つ読者のために注意書き。近藤さんの文脈でいうところの「明確化」というのは「マークアップ」のことであり、それゆえこれは命題であって、かつ、真である。しかし:

セクション構造の明確化を div 要素で行うというのは、そうした点から言えば自明であり、HTML で文書をマークアップするという本来の目的からするとやって当たり前のことです。

暗黙的な構造では意味がないというのは以前から言っている訳で(H.O.D. 2007/12)より

これは命題ではなく評価が難しいのだが、かなり違和感がある。div要素を用いたセクション構造のマークアップは、確かにソフトウェアによる処理を容易にし、それはマークアップ言語HTMLの設計目的に沿ってはいる。しかしマークアップ言語の設計のgoalと、マークアップ言語の利用のgoalは同一ではなく、かつ、マークアップという行為(文書インスタンスの作成)は設計のgoalを目指す行為ではなく、利用のgoalを目指す行為である。

実際のマークアップ過程においては、まず「どんな処理を求めるのか、求められるのか」についてある程度の期待や予測があって、その期待や予測に基づき「処理を容易にする」よう、かつスキーマに対して妥当となるよう、マークアップを行なうのである。その期待や予測抜きに、漠然と「処理を容易にする」というgoalを設定するとどうなるかというと、不適切だが極端な例を持ち出すと、「一文字ずつマークアップを施し、それぞれに膨大な数の属性を与える」ことになる。もっと身近で適切な例を挙げれば、ルビのマークアップがある。ユーザーエージェントにルビふりの処理を期待し、あるいはユーザーのニーズを予測するのであれば、ruby要素関係のマークアップが行なわれる。しかしその期待や予測がなければruby要素としてマークアップは行なわれない。もしその期待に基づかず、マークアップ言語の設計の目的を目指してマークアップを行なうのであれば、ruby要素を明示するのは当たり前であり、すべての漢字をruby要素としてマークアップすることになるであろう。しかしそれは常にやって当たり前といえるだろうか。――そうとは限らないし、そうせずともHTMLの設計目的に反しない、ということだ。

では、見出しの処理を期待しなければ見出しをマークアップしなくても良いのかと問われれば、そうだと言うしかない。しかしそれは本当に期待していないのなら、の話であり、実際には稀だ。HTMLの応用ソフトウェアに見出しを見出しとして処理してもらいたいのなら、見出しをマークアップするのは当たり前のことであり、見出しをマークアップすることで見出しとして処理してもらえる、という期待を持つことができるのである。

一方セクションについても見出しとほぼ同じことが言える。異なるのは、セクションをdivタグでマークアップすることで、見出しの場合と同じようにセクションとして処理してもらえる、という期待を持つことはできないという点である。この点をさらに明らかにするには、div要素の性質について言及しなければならない。

HTMLにおいて、マークアップというのは即ち構造化のことである。その(構造化の)一つとして例えばセクションの明示というものがあり、例えば顧客情報ブロックの明示というものがある。つまり、汎用(ブロック)要素であるということは即ち、構造化の為の汎用的な手段であるということであって、両者はイコールで結ぶことができる。尚、セクションのような文書の階層構造だけが「構造」ではないという点も注意が必要だろう。そのためHTML3.2からhierarchyという単語はカットされたのではないかと私は推測した。見出しやハイパーリンクだって文書構造の一部であり、見出しやハイパーリンクのマークアップは構造の明示である。

div要素としてセクションを明示するというのは、div要素の汎用性を適切に応用して具体的な構造化を行なっていることになる。その具体化のためにid属性やclass属性が要求される。div要素は、セクションというセマンティクスを持ってはいない。しかしそこには何らかの構造が示されていて、Privateにはそれがセクションであると明らかであるがゆえに著者スタイルシートや著者スクリプトによって利用可能であるが、一方Publicにはそれは不明なので、例えばセクションとしてfetchするための要素として看做すことはできないのである。著者(や関係者)自身がセクション構造体を利用する(CSSを適用するなど)のであれば、セクションをdivで「明確化」するのは近藤さんの言うようにやって当たり前のことであるといえる。しかしそうではなく、Publicにセクション構造体が利用される(セクション構造体のfetchなど)ことを期待しているならば、それは過度な期待であり、やって当たり前のことではない。ここが見出し等のセマンティクスが定義されている要素との決定的な違いである。例えば既に述べたように見出しはPublicに利用されることを期待できるであろうし、そのマークアップは期待される。見出しと違って、セクションとしての利用を期待しないHTML利用者は多く、divタグによるセクションのマークアップが当たり前であるとは評価しにくい。、divタグによるセクションのマークアップが当たり前であるというのは、HTML文書の利用目的の一つから導かれる結論である。


webmaster@jintrick.net
公開: 2007年12月13日
カテゴリ: HTML ,意見交換, 批判等