何らかのツールでテンプレートを元にページを生成する昨今、あまりページごとに大きくアウトラインの構造(変な表現だ)が変わることはない。枠を作って流し込む、枠を作って流し込む、というわけだ。ウェブではコンテンツは主に文章であるので、流動性はそれなりに高く、流しこむこと自体は多くの場合は問題にならないが、もうちょっと考えても良い所ではある。
典型的なウェブログのindexのページは以下のような構造になっていることだろう。
header
main
article
article
article
footer
これから自身以外のarticle
要素を取り除いたものがpermalinkのページ構造になる。
header
main
article
footer
この時点でmain
要素でグルーピングする意味はほとんどなくなる。合わせてpermalinkでは文書のプライマリ・コンテンツはこのarticle
要素の内容であり、それが唯一であることを考えるとarticle
要素を使うのは冗長だ。仕様のarticle
要素の項でもこのことは触れられている。
かといってコード・レベルでの階層構造をフラットに変更するのはコスト(主にスタイリングにおいて)が高い。そこで論理構造を持ついくつかの要素をdiv
要素に変更してやるのはどうだろうか。
div[role="banner"]
div
div[role="main"]
footer
article
要素というセクションを作る要素がなくなるためheader
要素も変更してやる必要がある。HTMLコードそのものとしてはほとんど変わりがなく、かつHTML5らしくなく見えるため、なんとなく美しくない気もするが、アウトライン構造はすっきりとする。
こうしてやるとロゴでh1
要素を使っていなくてもUntitled Sectionとみなされなくなるのもポイントが高い。むしろそのためにひねり出した感がある。悪い解ではないはずなので、しばらくはこれで行ってみよう。