HTMLブラッシュアップ(4)レイアウト目的の表タグ

 ウェブサイトを作るための記述言語であるHTMLには、表を作る要素というものが存在する。テーブル要素である。
 この要素を使えば以下のような表が作成できる。


 罪名

 法定刑

 条文

 殺人罪

 3年以上の懲役・無期懲役・死刑

 刑法199条

 傷害致死

 2年以上の懲役

 刑法205条

 強盗罪

 5年以上の懲役

 刑法236条

 上の表は典型的な表で、何の問題もないのだが、テーブル要素を使うと、表を作る以外にもレイアウト(段組・構成)が自在にできたりするのである。
 ネット巡回していて、ちょっと凝ったレイアウトのページだな、と思ったら、たいていそこではテーブル要素を使用している。

 さて、このテーブル要素、本来の使用用途は「表の作成」である。となると、レイアウト目的で使うのは正しい使い方ではないのかもしれない、という疑問が出てくる。
 実際、HTML参考書のなかには、「レイアウトにはなるべくテーブルタグではなくスタイルシートを使用しましょう」と書かれているものがある。
 「本来の目的ではなく」、「スタイルシートで代用せよ」というのは、表でレイアウトするのは、たとえば見出し<Hx>を文字サイズ調節のために使ったり、引用<Blockquote>をインデントのために使ったり、参照<Cite>を斜体のために使ったりするのと同程度、ということである。
 しかし、見出し要素を文字サイズの調節のために使うことについては、例外なく「本来の使い方ではない」と言われるのであるが、表要素をレイアウト目的で使用することについては、いまだに広く認められているのである。

 ***

 レイアウトのために使おうが、HTMLの文法が合っているからいいではないか、とも言われそうだが、問題はそこにあるのではない。なぜなら、それならば、文字サイズ調節のために見出し要素が使われても、それ自体は文法に合っているのである。要素本来の「意味」とは無関係に、ブラウザ上の表現効果だけを狙って要素を使用するのは不適切である、というのがHTML4以降の方針である。ならば、「表の作成」というテーブル要素の意味を超えて、レイアウト効果だけのためにテーブル要素を使用するのは不適切ではないか。
 今のところは存在しないが、もし、テーブルのすべての属性指定(幅、高さ、背景、枠など)を無視するブラウザが登場したら、現在アップされているサイトの大部分はレイアウトが崩れて、見るに耐えられないものになってしまうであろう。文字サイズ調節のために見出し要素を使ったり、斜体のために参照要素を使ったりしているサイトが、それらのタグを無視するテキストブラウザでは見るに耐えられないものになってしまうのと同様に。

 ***
 しかし、スタイルシートを使って表要素並みにレイアウトなんて、仕様上は不可能ではないとはいうものの、ブラウザ依存の度合いが強すぎて、そう簡単に手を出せるものではない。そのあたりの頑丈さは、テーブル要素の魅力であろう。
 もうひとつは、そのわかりやすさ、記述の簡潔さであろう。「画面を左右2つに区切って、左側にはメニュー、右側は上下3段に区切って上は青い背景で更新履歴、中央は自己紹介・・・」などとレイアウトを考えたとき、テーブル要素ならすぐにソースが思いつくが、DIV要素とスタイルシートで表現するとなると非常に考え込む。
 まだまだ、「HTML側では表現の部分を完全に放棄する」というわけにはいかないのである。
 実際問題、表要素を使用してはいけないとなると、ページの見た目が他人のページと似たものとなってしまう。論文のような調子になるのである。HTMLの構造は論説的な文章を記述するのに最も適しているからである。
 つまり、堅苦しいページになると同時に、他人のページと似通ってくるのである。独自性を出せないというのは、表現者にとっては苦痛ですらある。
 最近は、W3Cの仕様では、レイアウトのためのテーブルは奨励されていないようである。そのわりには、W3Cのサイトでもトップページにはレイアウトテーブルが使われているようだが。

 ***
 テーブル要素は、結局、DIV要素とよく似た性質であるTD属性を使って、ブロックレベル要素(のようなもの)の「位置」を自由自在に決めることができる要素、と意味づけることができよう。
 そうなると、表という「目的」からは外れることになるが、緊急避難的に使用するのは仕方ないであろう。スタイルシートによる位置制御はまだ整備されていないのだから。

 なお、テーブル要素を多用してしまうと、ソースの記述量が多くなるのと、ブラウザが一度テーブル内すべてを読みきってから表示が始まるという点で、意外と重くなってしまうので、注意が必要である。