divを使うということ

div肯定実験

最終更新
更新はありません

人の頭は論理的なものを解釈するようにできている。視覚情報は、文書の論理構造を理解する為の媒体となり得る。故に文書の論理構造に基づいたデザインは、それを理解する手助けとなるだろう。

従って、著者が極めて重要であると認識する(読者に伝えたいと考える)文書構造は、視覚情報に変換すると、より良い。しかし、HTMLのマークアップで明示できる文書構成要素は、最低限のものに限られている。故に、それらに含まれない要素をdivやSPANを用いてマークアップし、CSSを通じて視覚情報に変換することは有益である。

必要な構造は既に示されている

最終更新
2002-07-28T11:53:55+09:00

しかし、私はHTMLで訳もなく複雑な階層構造を表現しようとするのには反対です。理由は2つ。

  • ある程度ツールに頼らなければ、HTMLを書くのが面倒になってしまう
  • divによる複雑な階層構造は、著者には有益だが読者には利益が無い

文書の階層構造を把握することは、著者の義務のようなものですが、それは既にheading要素のレベルで自明になっているはずです。実は、divで階層構造を改めて明示するのは、コンピュータ側の都合に合わせたに過ぎません。

読む側に立ってみると、文書を読む際に最も頼りにしている要素は見出しです。読む、ということはつまり文字を読むわけですから、いくら階層構造に従った高度なレイアウトを施してみても、それは見出しには勝てません。

divを利用して視覚的に明示できるのは、「情報のまとまり」です。一方見出しは、それに加えて情報の性質をも、合わせて示すことが出来ます。

その「情報のまとまり」が何であるかを知っているのは著者だけです。従って、その情報のまとまりを何かに応用するという明確な目的が「著者に」存在しない限り、divによるグループ化は無意味もいいところです。

その応用とは、例えばCSSでdivセレクタの表示を指定する、DOM(よく知りませんがSAXも?)でdiv要素にアクセスして何かの処理をする(させる)、などです。

読者は主に見出しの内容やスタイルで構造を理解しますから、視覚的な効果を狙って文書構造をマークアップしてもほぼ無意味です。しかし、見出しを使うことの出来ないあるブロック(ナビゲーションなど)をdiv要素としてマークアップし、視覚的に差別を図ることは合理的であるといえます。

divは要素を「明示」しない

最終更新
2002-07-28T12:22:49+09:00

一方、場違いですが、HTMLマークアップの観点からdivを考えてみましょう。

  • マークアップという行為は構造を明示することであり、暗示してはいけない

このような考え方があります。色々なところで言われています。しかしこのテーゼを鵜呑みにし、div要素に当てはめて解釈しないよう、注意して下さい。これが成立するのは、その明示すべき要素が仕様にはっきり定義されている場合です。

XSLやSVG、RDFにいたるまで、ある構造が「暗示」を余儀なくされているXMLアプリケーションは山ほどあります。その構造が、ソフトウェアに必要とされていないだけです。現行のHTMLにおけるセクションの明示が「ソフトウェア的に」必要かどうか……。しかしそんなことは我々が考えることではありません。必要とされていないからこそ、明示する必要がないんです。もっとも、次世代のHTMLについて明示されるべきか否かを考えるのは意味があります。しかし、だからといって、現行のHTMLの仕様が変るわけではありませんから:

  • div要素でHTMLの構造を明示すべきだ

というのは何の根拠もないでたらめです。「なぜなら暗示してしまっているからだ」は根拠になりません。仕様に定義されていない要素は明示することが出来ないので暗示するしかありません。汎用ブロック要素のdiv要素では、それを明示することはできません。div要素が明示できるのは、それがなんらかの要素の集合であるということ位です。

  1. 最初に文書がある
  2. マークアップによって文書の構造を明示したものがHTML文書だ
  3. 従ってdiv要素によって構造を明示した方がベターである

この考え方には最後の部分に飛躍があります。制作者に「そのdiv要素を利用して何をどうするか」という目的意識と具体的方法がなければ、閲覧者には何の利益も出ません。

現行のHTML(XHTML1.1まで)は、(見出しと本文を含んだ)セクションを明示せよとは言っていませんし、明示する術もありません。そのような場合、(マークアップせずに)セクションを暗示することには何の問題もありません。

尚、私が「divによる構造化をやってはいけない」と主張するつもりが毛頭ないことは、この文書のソースを見てみれば自明です。私は、目的がなければ無意味だと言っているだけであります。

またそれはどんな目的でも構わないと思います。例えば:

  • 文書の構造を明示するという行為自体が、より意識的に、構造のしっかりした文書を書く助けになる

と考えるなら、それはそれで良いと思います。立派な目的です。

結論

最終更新
2002-07-28T12:39:59+09:00
  • divを用いた構造化に基づくレイアウトは、見出しによる視覚効果を期待できない場合の補助として用いるべきである。
  • divを用いた構造化は「すべき」とも「すべきでない」ともいえない