HTML

HTML microdata attributes are a mechanism that assigns semantic meaning to information by adding item types and properties to HTML tags, thereby enabling search engines and similar services to structurally understand webpage content.

Microdata Attributes (マイクロデータ属性)

マイクロデータ(Microdata)とは?

背景

Webページには、人間が読むためのテキストや画像などの情報が含まれています。しかし、検索エンジンなどの機械がそのページの内容を正確に理解しようとすると、テキストや画像だけでは内容の構造や意味を明確に把握しづらい場合があります。

このとき、ページのコンテンツに対して機械が理解しやすい形で「意味付け(構造化)」を与えるのが、HTMLのマイクロデータをはじめとした「構造化データ」と呼ばれる仕組みです。

構造化データの代表的な形式

構造化データの主な記述方法には、以下の3種類が代表的です。

  1. Microdata(マイクロデータ)
  2. RDFa(Resource Description Framework in Attributes)
  3. JSON-LD(JavaScript Object Notation for Linked Data)

その中でもマイクロデータは、HTML5の仕様の一部として提案され、HTMLタグに組み込む形で追加するのが特徴です。古くから存在しているため対応例も多く、また Schema.org のボキャブラリーを用いることで検索エンジンなどが理解できる共通の意味付けを行うことができます。

Schema.org との関係

マイクロデータを使う際によく利用されるのが Schema.org です。これはGoogle、Microsoft、Yahoo!、Yandexといった大手検索エンジンが共同で策定しているスキーマ(語彙)の集合です。

Schema.org に定義されているボキャブラリー(たとえば「Person」や「Product」「Review」など)を使ってマイクロデータを付与することで、検索エンジンがWebページの意味・内容をより正確に理解し、検索結果の「リッチリザルト(拡張スニペット)」に反映してくれる可能性が高まります。

マイクロデータを構成する属性

マイクロデータをHTMLのコードに埋め込む際には、いくつかの専用属性を使用します。代表的なものを以下に示します。

itemscope
itemtype
itemprop
itemref
itemid

itemscope & itemtype

例:

HTML

<div itemscope itemtype="https://schema.org/Person">
	<!-- ここに人物情報を記述 -->
</div>

上記のようにitemscopeitemtypeを組み合わせることで、この<div>要素がSchema.orgにおけるPersonというタイプのアイテムであることを明示します。

itemprop

例:

HTML

<div itemscope itemtype="https://schema.org/Person">
	<span itemprop="name">山田 太郎</span>
	<img itemprop="image" src="taro.jpg" alt="山田 太郎の写真">
	<span itemprop="jobTitle">Webエンジニア</span>
</div>

これにより、検索エンジンなどは「このページにはPerson(人物)に関する情報があり、その人の名前は「山田 太郎」である」というように、文脈や意味を把握できます。

itemref

マイクロデータは通常、1つのタグ階層の中でitempropを定義します。しかし、場合によってはページの別の場所にある要素を同じスコープ内のプロパティとして定義したいケースがあります。そのときに使えるのがitemref属性です。

例:

HTML

<div itemscope itemtype="https://schema.org/Product" itemref="extendedInfo">
	<span itemprop="name">サンプル商品</span>
	<span itemprop="brand">サンプルブランド</span>
</div>

<div id="extendedInfo">
	<span itemprop="description">これはサンプル商品の説明文です。</span>
	<span itemprop="sku">ABC-12345</span>
</div>

<div itemscope ... itemref="extendedInfo"> とすることで、id="extendedInfo"要素内のプロパティも同じProductアイテムの一部として扱われます。

itemid

itemid属性は、アイテムを固有の識別子として一意に示したい場合に使用します。たとえば、公式ページや商品ページなど、絶対URLで指定します。

HTML

<div itemscope itemtype="https://schema.org/Product" itemid="https://example.com/products/abc-12345">
	<span itemprop="name">サンプル商品</span>
	...
</div>

これにより、itemscopeで指定したこのアイテムは「https://example.com/products/abc-12345」という一意のIDを持つオブジェクトだと認識されます。

マイクロデータの実際の使い方

ベーシックな実装例:人物情報

先ほどの例をもう少し発展させ、複数のプロパティを使って記述します。

HTML

<!DOCTYPE html>
<html lang="ja">
<head>
	<meta charset="utf-8">
	<title>マイクロデータの例 - 人物情報</title>
</head>
<body>
	<div itemscope itemtype="https://schema.org/Person">
		<h1>メンバー紹介</h1>
		<h2 itemprop="name">山田 太郎</h2>
		<img itemprop="image" src="taro.jpg" alt="山田 太郎の写真">
		<p itemprop="jobTitle">Webエンジニア</p>
		<p>経歴: <span itemprop="description">フロントエンドからバックエンドまで幅広い開発を担当。</span></p>
	</div>
</body>
</html>

Schema.org の各種タイプ

検索エンジンがリッチリザルトとして扱う代表的なものは、Google検索ギャラリー などで公開されています。検索結果にマイクロデータを反映したい場合は、Googleのガイドラインに沿ったタイプやプロパティを設定することが重要です。

マイクロデータ活用のメリット

リッチリザルト(リッチスニペット)への反映
検索結果で星付きのレビューや商品の価格情報、レシピの調理時間などが表示されるなど、目立つ形でユーザーにアピールできます。
コンテンツの意味が正確に伝わる
マイクロデータを適切に設定すると、検索エンジンがWebページの内容をより深く理解できるようになり、結果的にSEO効果が期待できます。
データ再利用の容易化
ページに含まれるデータを、他のサービスやアプリケーションが機械的に再利用しやすくなります。

高度なトピック・注意点

マイクロデータとJSON-LDの比較

最近の推奨として、GoogleはJSON-LDを用いた構造化データの記述を好む傾向があります。JSON-LDはHTML本文から分離してJavaScriptオブジェクトノーテーションでデータを定義するため、HTMLの可読性が保ちやすいというメリットがあります。

しかし、マイクロデータはHTML5の要素に直接組み込むため、コンテンツとデータが一体となっているというメリットもあります。プロジェクトやチームの方針に応じて、マイクロデータを採用するか、JSON-LDを採用するか判断するとよいでしょう。

同時併用の可否

マイクロデータとJSON-LDを同時に使うことも可能ですが、重複した意味付けが行われないように注意する必要があります。たとえば、同じ要素をPersonとしてマイクロデータで定義しながら、別途JSON-LDでも同じタイプを定義してしまうと、検索エンジンがデータを重複とみなして混乱を起こす場合があります。

バリデーションツールの活用

構造化データを正しく実装できているかどうかを確認するには、以下のツールを利用するのが一般的です。

これらのツールを用いて、エラーや警告が出ていないか、求められる必須項目が欠けていないかを確認します。

コンテンツの品質との関係

構造化データを入れれば何でも検索で上位に表示されるわけではありません。検索結果の評価では、コンテンツの品質やサイトのユーザビリティ、モバイル対応など様々な要素が考慮されます。マイクロデータはあくまでも検索エンジンに正確な情報を伝えるための補助として位置づけましょう。

バリエーションの管理

たとえばショッピングサイトでは、同じ商品でもサイズや色ごとにSKUが異なる場合があります。マイクロデータで一つのProductスキーマ内に複数のOfferを記述する方法もあれば、バリエーションごとに別々のProductスキーマを用意する方法も考えられます。

どの方法が適切かは検索エンジンのガイドラインや自社の在庫管理システムとの連携状況を踏まえて検討します。

実装例:商品のレビュー

実際のECサイトなどでよく使われる例として、商品とレビューを同じページに記述することが多いです。ここではサンプルコードを示します。

HTML

<!DOCTYPE html>
<html lang="ja">
<head>
	<meta charset="utf-8">
	<title>マイクロデータ例 - 商品とレビュー</title>
</head>
<body>
	<!-- Product スキーマ -->
	<div itemscope itemtype="https://schema.org/Product" itemid="https://example.com/products/abc-12345">
		<h1 itemprop="name">サンプル商品</h1>
		<img itemprop="image" src="sample.jpg" alt="サンプル商品の画像">
		<p itemprop="description">
		このサンプル商品は高品質な素材を使用し、快適な使用感を実現しています。
		</p>
		<p>
			メーカー: <span itemprop="brand">サンプルブランド</span>
			<br>
			SKU: <span itemprop="sku">ABC-12345</span>
		</p>
		<p>参考価格: <span itemprop="offers" itemscope itemtype="https://schema.org/Offer">
			<meta itemprop="priceCurrency" content="JPY">
			<span itemprop="price">3980</span>円
		</span></p>

		<!-- AggregateRating(平均評価)の例 -->
		<div itemprop="aggregateRating" itemscope itemtype="https://schema.org/AggregateRating">
			平均評価: <span itemprop="ratingValue">4.2</span> / 
			<span itemprop="bestRating">5</span>
			( <span itemprop="reviewCount">120</span> 件のレビュー )
		</div>
	
		<!-- 個別のレビューを記述する -->
		<div itemprop="review" itemscope itemtype="https://schema.org/Review">
			<h2>レビュー1</h2>
			<span itemprop="author">ユーザーA</span> さんのレビュー:
			<div itemprop="reviewBody">
				とても使いやすく、値段以上の価値があります。
			</div>
			<div itemprop="reviewRating" itemscope itemtype="https://schema.org/Rating">
				評価: <span itemprop="ratingValue">5</span> / 5
			</div>
			<p>投稿日: <meta itemprop="datePublished" content="2025-02-11">2025年2月11日</p>
		</div>
	
		<div itemprop="review" itemscope itemtype="https://schema.org/Review">
			<h2>レビュー2</h2>
			<span itemprop="author">ユーザーB</span> さんのレビュー:
			<div itemprop="reviewBody">
				機能は満足ですが、色のバリエーションがもっと欲しいです。
			</div>
			<div itemprop="reviewRating" itemscope itemtype="https://schema.org/Rating">
				評価: <span itemprop="ratingValue">4</span> / 5
			</div>
			<p>投稿日: <meta itemprop="datePublished" content="2025-02-10">2025年2月10日</p>
		</div>
	</div>
</body>
</html>

このように、商品(Product)の情報とレビュー(Review)を関連づけてページ内に埋め込むことにより、検索エンジンが商品データとレビューを一貫して理解し、リッチリザルトへの反映が期待できるようになります。

よくある質問 (FAQ)

マイクロデータに必須となるタグは?

基本的には、メインとなる要素にitemscopeitemtypeを指定し、プロパティを示す要素にitempropを加えればOKです。その他itemrefitemidはオプションですが、必要に応じて使うことができます。

どのプロパティを使えばいいか分からない

Schema.orgのサイトで詳細なドキュメントを調べる、またはGoogleのドキュメントのなかで推奨されるプロパティを確認するのが近道です。たとえばFAQページの構造化データであれば、FAQPageを使い、それぞれの質問をQuestion、回答をAnswerとして定義します。

古いブラウザでの互換性は?

マイクロデータはHTML属性であり、通常の表示には影響しません。古いブラウザでも問題なく表示されますが、構造化データを読み取る側(検索エンジンなど)によっては対応が異なることもあります。いずれにせよ、ユーザーにとってのページ閲覧に支障は基本的にありません。

JSON-LDに乗り換えるメリットは?

コードの分離が可能
HTML本文とJSON-LDのスクリプトを分けられるため、メンテナンスが容易になります。
推奨
Googleなどの検索エンジンはJSON-LDを推奨する場合が多く、新機能が先にJSON-LDに対応される傾向があります。

既にマイクロデータで実装済みの場合は、それを維持することも可能ですが、新規実装や大幅リニューアルのタイミングでJSON-LDへ移行するのも選択肢の一つです。

まとめ

マイクロデータは、HTMLと密接に結びついているがゆえに、HTMLを学ぶ人にとってはより直感的に意味付けが理解しやすい面があります。

ぜひ一度、小規模なページでもいいので実際にマイクロデータを使ってみて、GoogleのリッチリザルトテストやSchema.org Validatorで検証しながら学習を進めてみてください。実践を通じて得られる経験値は大きく、構造化データ全般への理解が深まるでしょう。