schema 2.0 の WPHeader や WPSideBar の使い道がない

schema.org のロゴ

schema.org には Web ページを構成する要素を示すためのスキーマがいくつか定義されています。 例えば、ヘッダを表す WPHeader であったり、 サイドバーを表す WPSideBar です。

一見すると、ページの構成が明らかになり有用なスキーマに見えますが、これらのスキーマは HTML と組み合わせるには非常に使いにくいです。

空のノードは非推奨

Google の構造化データテストツールによれば、空のノードは存在するべきではありません。

空のノードとは、スキーマを指定されたものの、その子孫のノードに、有効なプロパティ値を持たないノードのことを指します。 言い換えれば、itemtype によってスキーマが指定された要素(タグ)の子孫に、 itemprop によって指定されるプロパティ値を持った要素(タグ)が存在しない状態のことを指します。

WPHeader や WPSideBar は、スキーマ自身がヘッダーやサイドバーであることを示すものの、 ヘッダーやサイドバーを表すためのプロパティ値を持っていません。 したがって、WPHeader や WPSideBar は必然的に空のノードになりやすいのです。

WPSideBar が空のノードになる例

次のコードは空のノードの例を示します。div 要素に WPSideBar スキーマを指定したものの、 div の子要素に WPSideBar に対応するプロパティが存在しない例です。

<div class="sub-body" itemscope itemtype="https:\/\/schema.org/WPSideBar">
itemprop を持たないサイドバーの要素…
</div>
WPHeader が空のノードになる例

使えそうなプロパティ値がない

CreativeWork スキーマから継承された authorlicense などのプロパティが使えそうに見えますが、 それらは WPHeaderWPSideBar スキーマが持つべきものではなく、寧ろ WebPageArticle スキーマによって設定されるべきです。

例えば、次のコードでは "Site Title" に name プロパティを設定することが出来そうですが、 WPHeader スキーマよりは、むしろ WebSite スキーマの name プロパティとして扱われた方が良いです。

<header class="site-header" role="banner" itemscope itemtype="https:\/\/schema.org/WPHeader">
<h1>Site Title</h1>
</header>
WPHeader が空のノードになる例

仮にこの例のように WPHeadername として "Site Title" が設定されるとき、 サイト全体の名前(name)ではなく、ヘッダ部分の名前(name)として認識されてもおかしくはないでしょう。

about プロパティなども同じように使い勝手が悪いです。 WPHeader スキーマに about や description プロパティを設定するとして、"XX なヘッダーです" なんて情報を示す必要はないでしょう。 SideBar についても同様です。もしもプロパティ値を設定できたとしても、特に重要な価値を持つことはないでしょう。

Header や Footer 要素と role 属性で十分

WPHeaderWPFooter などのスキーマが使えなくても、HTML には Header 要素と Footer 要素が存在し、 さらに role 属性には、記事のヘッダでないことを示すための値 bannerが存在します。 したがって、検索エンジンや解析システムに情報を伝えるための手段は十分に確保できます。

Reference