HTML
It is a mechanism for tagging each element of a web page with “what it is” and conveying that information to search engines as structured data.
itemprop 属性
はじめに
検索エンジンやソーシャルプラットフォームは、ページに書かれた“意味”を理解できるほど賢くはありません。itemprop
属性を使うと、HTML 要素に「これは商品価格だ」「これは著者名だ」とラベルを貼り付け、機械が正確に解釈できる“構造化データ”をページ内に直接埋め込めます。結果として SEO で有利になり、リッチリザルト(レビュー星・パンくず・イベント日時など)が表示されるチャンスが生まれます。
マイクロデータと itemprop の全体像
Microdata 仕様
HTML5 で導入された仕組み。itemscope
で“アイテム”を宣言し、itemtype
でその種類(schema.org などの語彙)を示し、itemprop
で各要素の役割を指定していく。
主役は語彙 (Vocabulary)
もっとも一般的なのが schema.org。Google など主要検索エンジンが共同で管理し、数千種類のプロパティを定義。
属性値は URL(例: https://schema.org/Person )で書くのが基本だが、itemprop
の値は語彙で規定された「短い名前」(name, price, image …)を使う。
JSON-LD との関係
Google は JSON-LD を“推奨”と公言。ただし Microdata も完全サポート。
ハイブリッド手法 : 既存 HTML を壊さず JSON-LD を SSR で生成する、あるいは SPA で動的に注入するなど、両者を補完的に使うケースが増えている。
基本的な書き方
<!-- 商品カード(アイテム全体) -->
<article itemscope itemtype="https://schema.org/Product">
<h2 itemprop="name">Noise-Cancelling Headphones X100</h2>
<img src="x100.jpg" alt="" itemprop="image">
<p>
<span itemprop="priceCurrency" content="JPY">¥</span>
<span itemprop="price" content="19800">19,800</span>
</p>
<meta itemprop="availability" content="https://schema.org/InStock">
</article>
コード解説
itemscope
ここから先が 1 つの“アイテム”。
itemtype
Product という型を指定。
itemprop
子要素それぞれに意味をタグ付け。
非可視データ(通貨コードや在庫状態など)は <meta>
要素を使えば表示せずに値だけ提供できる。
itemprop の挙動を深掘り
適用できる要素
ほぼすべての要素で利用可。<meta>
を使えばテキストを表示せず値だけ埋め込める。
データ型と既定値
schema.org では Text / URL / Date / Number / Boolean など多数の型が定義され、Google 検索は型を厳格に評価。
例 : datePublished
は ISO-8601 (YYYY-MM-DD
) を期待。
数値なら content
属性で小数点や通貨を省いた“生の数値”を指定すると評価が安定。
複数値の指定
<ul>
<li itemprop="genre">Rock</li>
<li itemprop="genre">Blues</li>
</ul>
同じ itemprop
が複数あれば配列として扱われる。検索エンジンはすべてを取得し、最も関連性が高いものをリッチリザルトに採用する。
ネストされたアイテム
アイテムの中に別の itemscope
を作れば、階層構造も表現可能。
<div itemscope itemtype="https://schema.org/Recipe">
<span itemprop="name">抹茶ケーキ</span>
<div itemprop="nutrition" itemscope itemtype="https://schema.org/NutritionInformation">
<meta itemprop="calories" content="340">
1切れ 340 kcal
</div>
</div>
DOM API からのアクセス(上級)
ブラウザには Microdata 用 API が実装済み(ただし一部非推奨)。
// ページ内の Product アイテムを取得
const products = document.getItems('https://schema.org/Product');
for (const item of products) {
console.log(item.properties.name[0].value);
}
SSR でレンダリングした後にインタラクティブ機能を付与するときに便利。
ただし新規案件では JSON-LD 生成+querySelector
を組み合わせることが多く、この API はほぼ“読み取り専用”用途。
SEO とリッチリザルト
Google の評価ポイント
語彙が 構造化データのガイドライン に合致していること
ページに表示される UI とデータが一致していること(クローク禁止)
不完全な itemprop
を置くより 必要最小限+正確 の方が好印象
Bing・Yandex もほぼ同じ実装。
テストツール
アクセシビリティとの相性
itemprop
自体は支援技術が無視するため、スクリーンリーダーの読み上げフローに影響しない。
ただし <meta>
に情報を押し込みすぎると 視覚的に欠落 し、利用者が得られる情報が減る。
実際に表示されるテキストでも同じ情報を伝えるのが原則。
よくある落とし穴とベストプラクティス
itemprop
の綴りミス
検索エンジンは無視。早期に validator を通す。
複数 itemtype
の混在
itemscope
を分けてネストし、itemref
は避ける(複雑でデバッグ困難)。
SSR + CSR で DOM を再構築する SPA
CSR 完了後に Microdata が消えるケースがある。DOM を上書きしないよう設計。
JSON-LD 併用
コンテンツが大規模・多言語なら Microdata を捨てて JSON-LD 一本に統一するほうが保守しやすい。
itemprop
だけ書いて itemscope
/itemtype
を書かない
どのアイテムのプロパティか特定できず意味が薄れる。
プロパティ名を独自に作る
可能だが、なるべく schema.org など共通語彙を使うと効果大。
将来動向
WHATWG 仕様では Microdata が “非推奨”ではないものの、開発は停滞。
Google は 2023 年に Microdata の長期サポートを明言しているが、新規案件は JSON-LD を優先的に検討するのが主流。
ただし レガシー CMS やメールテンプレート など、純 HTML しか触れない環境では今後も需要が残る。
まとめ
itemprop
は「ページ内の要素に“意味”を付けて検索エンジンとデータベースに語りかけるラベル」。
小規模サイトでも レビュー星や FAQ 展開 を狙える即効性がある。
大規模/動的サイトでは JSON-LD との適材適所 がカギ。
テストツールで常に検証し、UI とデータの整合性 を保つことが最重要。
Home
HTML (HyperText Markup Language)
ウェブページの基本的な構造を作成します。見出し、段落、リンク、画像などの要素を定義します。
<!-- ~ --> comment
コメント(注釈)を挿入する。
article 要素
記事または完全なコンテンツを定義します。
content 属性
content
属性は、metaやMicrodataで使われ、要素の情報の中身を文字列で指定するための属性です。
div 要素
特定の意味(セマンティクス)を持たない汎用的なブロック要素で、ページのレイアウトやコンテンツのグループ化に利用される「区切りの箱」のような存在です。
h1~h6 要素
Webページの見出しを階層的に示すことで、ページの構造を明確にし、読みやすさやSEO、アクセシビリティを向上させるために使われるタグです。
img 要素
イメージ
li 要素
箇条書きや番号付きリストといったリスト構造の各項目を表すために、<ul>
や<ol>
などのリスト要素の子要素として使用される要素です。
meta 要素
その文書に関する情報(メタデータ)を指定する際に使用します。
p 要素
文章を論理的な段落として区切り、ブラウザや支援技術に「ここで話題が切り替わる」と伝えるためのタグです。
span 要素
一般的なテキスト範囲。
ul 要素
順序のないリストを表示する。
構造化データ(Structured Data)
Webページ内の情報を「意味的な構造を持ったデータ」として記述する手法の総称。
検索エンジンがコンテンツの意味を理解しやすくするための技術で、Googleのリッチリザルトなどで利用されます。
マイクロデータ(Microdata)
HTML属性を使って構造化データを直接ページのHTML内に埋め込む仕様の1つ。
itemref属性
離れた場所にある情報をひとつのアイテムとして関連づけるために使います。
itemscope属性
意味のある情報のまとまりを示して、検索エンジンに内容を伝えるための属性です。
itemtype属性
ある情報が何の種類かを示すための指定です。
JSON-LD(JavaScript Object Notation for Linked Data)
Webページの内容を検索エンジンにわかりやすく伝えるための構造化データを、JSON形式で記述する方法です。
Google推奨の方法。
CSS (Cascading Style Sheets)
ウェブページのデザインやレイアウトを設定します。色、フォント、レイアウトなどのスタイルを指定します。
JavaScript
ウェブページにインタラクティブな動作を追加します。フォームの検証、アニメーション、リアルタイムのデータ処理などを行います。
const
文字列や数値などのデータに名前を付けたり繰り返し利用するために、データを保持するための変数を宣言します。
document
ドキュメントを参照する。
for...of [loop]
ループの一種で、配列や文字列などの反復可能オブジェクトに対して、要素の値を繰り返し処理するために使用されます。
querySelector
指定されたセレクターまたはセレクターのグループに一致する、文書内の最初の Elementを返します。
value
ボタンに表示する文字列や、入力フィールドに入力されている文字列など、各エレメントの値を参照、設定します。
PHP (Hypertext Preprocessor)
サーバー上で動作してデータベースと連携し、動的なWebページを簡単に作成できるスクリプト言語です。
API
APIとは、異なるソフトウェアやシステム同士がデータや機能をやり取りするためのインターフェースです。
Console API
console.log
コンソール画面にログを表示する。
DOM API
Webページの中身をJavaScriptで自由に取得・変更・操作できる仕組みです。
CMS (Content Management System)
Webサイトをコードなしで更新・管理できる仕組みのことです。
CSR (Client-Side Rendering)
Webページの表示をユーザーのブラウザ内で動的に組み立てる仕組みです。
DOM (Document Object Model)
HTMLを木のような形で整理し、JavaScriptから操作できるようにした仕組みです。
SPA (Single Page Application)
ページ遷移を伴わず、アプリのようにスムーズに動作するWebサイトの仕組み。
SSR (Server-Side Rendering)
WebページのHTMLをサーバー側で完成させてから表示する仕組み。
UI(ユーザーインターフェース)
ユーザーが迷わず使えるように、見た目や操作性を工夫する仕組みのこと。
WHATWG (Web Hypertext Application Technology Working Group)
Webブラウザの標準仕様を定め、HTMLやDOMなどの技術の方向性を導いている国際的な開発者グループです。