構造化データは、検索エンジンなどが読み取るために、ページの中身を決まった形式で書いたデータです。多くのサイトは、JSON-LDという形式でHTMLの <script> タグの中に書きます。ブラウザはこの中身を画面に表示しないので、JSON-LDが本文と食い違っても、見た目は何も変わりません。
この記事でわかること
- 食い違いに気づくには、実際に配信されるHTMLからJSON-LDを取り出し、本文と照合する検査が要ります
- 照合は、本文からJSON-LDへ、JSON-LDから本文への両方向で行います。片方向だけでは、消えた問答を見つけられません
- 文字列は部分一致ではなく、表記をそろえたうえで全文が一致するかを比べます
この記事の目次(7節)
食い違いは型チェックでは見つからない
型チェックも、このサイトに以前からある表示のテストも、JSON-LDの中身までは見ていません。そのため、この食い違いは検出できません。
例えば、よくある質問を5問載せたサービス紹介のページで、JSON-LDから1問だけ抜けたとします。ページを開けば5問とも表示されるので、検索エンジンなどに4問分しか渡っていなくても、担当者も読者も気づきにくいのです。
FAQPageを出力することにした理由
本文にすでにあるよくある質問を、検索エンジンなどが読み取れる形で書き出すためです。Google検索の表示のためではありません。
このサイトは当時、記事の大半に3〜7問のよくある質問を設ける方針でした。2026-08-13時点で68本中64本の記事によくある質問がありましたが、それを表す構造化データの型(FAQPage)は1件も出力していませんでした。そこで、記事の文面は1文字も変えずに、書かれている問答をJSON-LDに反映しました。
Googleのガイドラインでは、ページの読者に表示されない内容をマークアップしないようにとしています。マークアップした内容は、ページに表示される本文と対応している必要があります。1
ただし、Google検索でのFAQPageの扱いは2026年に変わりました。Google検索のFAQリッチリザルト(検索結果に質問と回答を折りたたんで出す表示)は、2026年5月7日に廃止されました。その後、Search Consoleのレポートなども順次対象外になっています。いまFAQPageを出力しても、Googleの検索結果の見え方は変わりません。2
schema.orgのFAQPage型そのものは廃止されていません。ほかの検索エンジンなどは引き続き読み取る可能性がある、と米国の検索業界の専門メディアSearch Engine Landは伝えています。2
照合は両方向で行う
食い違いには2種類あります。両方を見つけるには、本文からJSON-LDへ、JSON-LDから本文への2本の検査が要ります。
- 不一致: JSON-LDの問答が、本文のどれとも一致しない(本文に無いことを書いた場合や、バグで文字が欠けた場合)
- 抜け落ち: 本文にある問答が、JSON-LDに無い
JSON-LDから本文へ向かう検査は、JSON-LDの問答を1つずつ取り出し、本文にあるかを確かめます。これで不一致は見つかりますが、抜け落ちは見つかりません。消えた問答はJSON-LDの側に現れないので、調べる対象にならないのです。本文からJSON-LDへ向かう検査を別に用意しないと、図のQ3のように見えない側だけが欠けても気づけません。
実際、このサイトのレビューで、片方向の検査の穴が確かめられました。JSON-LDから問答18件を削っても、件数の下限の設定に余裕があったため、15件のテストはすべて成功のままでした。「N件以上ある」という検査は、どの問答が消えたかを見ていないので、抜け落ちを見つけられません。
部分一致では欠けた文字を見逃す
先頭や末尾が欠けた文字列は元の文字列に含まれるので、部分一致の比べ方では通ってしまいます。
最初の実装は、本文とJSON-LDを includes()(ある文字列が含まれていれば一致とみなす比べ方)で比べていました。レビューで、先頭が1文字欠けた回答がこの検査を通ると指摘されました(AIは万能ではありません。 → Iは万能ではありません。)。そこで、表記をそろえたうえで全文が一致するかを見る比べ方(完全一致)に変えました。
手で組んだHTMLでは分からなかったこと
実際に配信されるHTMLからJSON-LDを取り出す検査を書く前、記事ごとに <script> タグが複数あると考えてパーサを書きました。すると Article のデータすら取り出せず、全部失敗しました。実際の出力は、1つの <script> タグに配列でまとまっていました。< は \u003c にエスケープされていました。テストのために手で組んだHTMLだけを検査していた間は、この食い違いに気づけませんでした。
画面に出ない変更には、内部の関数の単体テストとは別に、実際に配信されるHTMLを対象にした検査を用意します。単体テストだけでは、出力の形のずれ(<script> が1つか複数か)を見つけられません。
問答として数える段落
本文から問答を拾う実装は、<p><strong>質問</strong> 回答</p> の形の段落だけを問答とみなします。回答が続かない太字(見出し代わりの強調など)は外します。太字を全部数えると、**よくいただく質問をまとめました。** のような前置きの一文まで問答になり、問題の無い記事が検査で落ちます。
かといって、回答の無い太字を一律に外すと、実際の抜け落ちを見逃します。書き手が質問と回答の間に空行を1つ挟むと、Markdownでは別の段落になります。5問書いたつもりでも、JSON-LDには4問しか出ません。そこでこの検査は、太字が疑問文の形か(か。 ですか。 ? などで終わるか)で両者を分けています。
ただし、この分け方で守れるのは形に表れる範囲だけです。 2026-08-13時点で、よくある質問の太字261件のうち3件は、疑問文の形ではないのに実際には質問でした(例:「指摘が的外れなときは。」)。この3件から回答をわざと切り離しても(故障注入)、検査は気づきません。逆に、か。 で終わる前置きを書くと、検査が誤ってエラーにします。同日時点で当てはまる記事はありませんが、形で判定する以上、拾いすぎと拾い漏れの両方が起こり得ることを、件数とともに記録しておきます。
まずは自社サイトの公開中のページからJSON-LDを取り出し、本文と両方向で照合する検査を1本用意するとよいでしょう。
よくある質問
Q. なぜ本文を編集せず、JSON-LDだけを別に作るのですか。
本文の見た目を変えずに、検索エンジンなどが読み取れる形だけを足せるためです。書き手が意識しなくても、いまのよくある質問の書き方から自動で作られます。
Q. schema.orgの仕様に沿っているかも、この検査で確かめられますか。
この検査では確かめられません。見ているのは、JSONとして壊れていないことと、本文との対応だけです。仕様に沿っているかは、外部のツールで確かめます。
Q. 問答が0件の記事でエラーになりませんか。
なりません。問答が2問未満ならFAQPageを出力しないので、よくある質問の無い記事(運営日報など)は対象から外れます。
Q. ほかの構造化データ(ArticleやBreadcrumbList)にも使えますか。
考え方は使えますが、何と何を照合するかはデータの形ごとに設計し直します。ArticleとBreadcrumbListが壊れていないかは、同じテストファイルの中で別に確かめています。
出典
- Google Search Central — Structured data general guidelines(参照 2026-08-14)
- Search Engine Land — Google to no longer support FAQ rich results(参照 2026-08-14)

