main要素、二つの定義

取締役 木達

HTML5 Experts.jpの連載、Experts Opinions 「UX」に、私へのインタビュー記事が掲載されました(ミツエーリンクスのCTOに「UXとWebアクセシビリティ」について聞いてきた─木達一仁ロングインタビュー)。エキスパートNo.40として登録していただきながら、まだ一度しか寄稿できていない点はお恥ずかしい限りなのですが、今回のインタビューで多少なりとも読者の皆さんの参考になるお話ができていると良いなと思います。

ところで件のインタビュー記事のなかで、私はmain要素について言及していますが、これはW3CのHTML5における定義に基づく言及になります。つい先日、SitePointの10 Typical HTML Interview Exercisesという記事のなかで、main要素についてW3CのHTML5における定義と、WHATWGのHTML Standardにおける定義が異なる点が紹介されていました。HTML5では

The main element represents the main content of the body of a document or application.

ということで、文書またはアプリケーションのうち主要なコンテンツをあらわすものとされていますが、HTML Standardでは

The main element can be used as a container for the dominant contents of another element.

と定義されており、別の要素の主要なコンテンツのコンテナーとして使われ得るもの、とされています。この違いは、単一のドキュメント中に含めることのできるmain要素の個数と紐付いており、HTML5では

Authors must not include more than one main element in a document.

にあるように、制作者が複数のmain要素を含めることを禁止している一方、HTML Standardには

There is no restriction as to the number of main elements in a document. Indeed, there are many cases where it would make sense to have multiple main elements.

と書かれており、個数に制限はなく、また複数のmain要素を含めることが理にかなっているケースは少なくないとされています。両者の定義の違いを踏まえてどうマークアップするかは、個々のサイトの方針なり制作者の裁量に委ねられるところでしょうけども、個人的にはアクセシビリティ的なメリットがより明確に感じられるHTML5の定義でもって、main要素を使用したいと考えています。