構造化データとは
概要
構造化データは、Web ページの内容を機械可読な形式で記述するメタデータである。HTML はページの見た目を定義するが、そのページが「レシピ」なのか「商品レビュー」なのか「Q&A」なのかを機械が判別するのは困難である。構造化データは、ページの内容の意味 (セマンティクス) を明示的に記述することで、検索エンジンやその他のプログラムがページの内容を正確に理解できるようにする。
JSON-LD と Schema.org
構造化データの記述形式として最も広く使われているのが JSON-LD (JSON for Linking Data) である。HTML の `<script type="application/ld+json">` タグ内に JSON 形式でメタデータを記述する。HTML 本文とは独立しているため、既存のページ構造を変更せずに追加できる利点がある。
語彙 (ボキャブラリー) には Schema.org を使用する。Schema.org は Google、Microsoft、Yahoo、Yandex が共同で策定した標準語彙で、Article、QAPage、FAQPage、Product、Recipe など数百のタイプが定義されている。各タイプには必須プロパティと推奨プロパティがあり、Google の検索結果でリッチリザルトを表示するには、必須プロパティをすべて含める必要がある。
リッチリザルトへの影響
構造化データを正しく実装すると、Google の検索結果にリッチリザルト (リッチスニペット) が表示される可能性がある。通常の検索結果はタイトル、URL、説明文の 3 行だが、リッチリザルトでは星評価、価格、FAQ のアコーディオン、Q&A のスレッドなど、視覚的に目立つ追加情報が表示される。
リッチリザルトはクリック率 (CTR) を大幅に向上させる。検索結果ページで占有する面積が大きくなり、ユーザーの目に留まりやすくなるためである。ただし、構造化データの実装はリッチリザルト表示の必要条件であって十分条件ではない。Google がリッチリザルトを表示するかどうかは、ページの品質、検索クエリとの関連性、その他のアルゴリズム要因によって決定される。
質問箱サービスでの実装
質問箱サービスでは、複数の構造化データタイプを使い分けている。公開質問ページ (みんなの質問) では QAPage タイプを使用し、質問と回答のスレッド構造を記述する。ブログ記事では Article タイプを使用し、著者、公開日、更新日を記述する。用語集では DefinedTermSet と DefinedTerm タイプを使用し、用語の定義を記述する。
これらの構造化データは、Next.js のサーバーサイドレンダリング時に動的に生成される。ページの内容が変わるたびに構造化データも自動的に更新されるため、メタデータと実際のコンテンツの不一致が発生しない。Google Search Console のリッチリザルトレポートで、構造化データのエラーや警告を定期的に確認することが運用上重要である。
構造化データや SEO の技術を学びたい方は、SEO の関連書籍も参考になります。