Googleリッチスニペット対策!初心者向けSchema.org解説!

Googleリッチスニペット対策!初心者向けSchema.org解説!

Googleの検索結果を彩ってよりユーザーライクに。コンピュータとの対話を可能にするマークアップ記法、「スキーマ(schema.org)」を、初心者向けに解説していきます。

schema.orgとは?

検索エンジンに「より詳しく」情報を伝える

最初に浮かぶ疑問は「schema.org(スキーマ)って何?」ですよね。schema.orgとは、ざっくり言うと「検索エンジン(コンピュータ)に"より詳しく"情報を伝えるための記法」です。

「より詳しく」とはどういうことか。例えば、検索エンジン(コンピュータ)とはGoogleのことを想定しましょう。今後はGoogleで統一します。次の文章がブログに書いてあるとします。

竹ノ塚にあるラーメン屋不動はとても美味しい。 私、あらゆ的には点数は85点だ!

これをGoogleがクロールして読み取っても、「日本語」「竹ノ塚」「ラーメン」「85点」といったキーワードしか認識できないはずです。

実際にはもっと優秀なアルゴリズムで理解しているかもしれませんが、高は知れます。竹林を探したくて「竹」とキーワード検索した人に、「竹ノ塚(地名)」を検索結果として表示したり、「不動(店名)」は「動かない」という意味で解釈するかもしれません。一方、次の文章を見て下さい。

竹ノ塚(という場所)」にある「不動(という店名)」の「ラーメン(という食べ物)」を、「Yuta Arai(という人)」が「85点(100点満点中)」と評価した。

このように、まるで人間と会話するように、Googleに1つ1つの言葉の意味を、細かく伝えることを可能にするのが、これから学ぶschema.orgなんです。「コンピュータに意思が通じる」なんて素晴らしいですよね!

schema.orgの恩恵

Googleにより詳しく意味を伝えることでどのような恩恵があるのか。これはすぐに分かると思いますが、検索機能がグンと向上しますね。ユーザーが求めている情報を、今よりずっと適切に検索結果に表示できるようになるでしょう。そして情報を発信する側の私たちも、よりマッチしたユーザーと出会う確率が増え、利益を得ることでしょう。

Google リッチスニペット
Google リッチスニペット

見かけたことがあると思いますが、Googleの検索結果で例えばこのように★マークが表示されるのを「リッチスニペット(豪華な表示)」と言います。目立つため、クリック率が高まることを期待できますね。リッチスニペットは「この記事は、このラーメンを、5点満点中5点だと評価してるよ」という情報が、schema.orgにより、Googleに正確に伝わることで実現します。

いくら文章中に「このラーメン5点だ!満点だ!★★★★★だ!」とテキストで書いたところで、Googleは認識してくれません。schema.orgの記法を通してGoogleに情報を伝えることの重要性が分かると思います。

Googleはschema.orgの普及に乗り気

schema.org(英語)は、検索エンジン大手の Google、Microsoft、Yahoo! がウェブの改善を目的として共同で進めている、構造化データ マークアップの共通仕様を策定する取り組みです。オンページ マークアップにより、検索エンジンはウェブページ上の情報を認識し、より有用な検索結果を提供できます。共通のマークアップ ボキャブラリを使用することで、ウェブマスターは容易にマークアップ スキーマを決定でき、労力に対して最大限の効果を上げることができます。

schema.org に関するよくある質問より引用

現在は検索結果に★を表示させたり、パンクズリストを反映させたり、といった程度のレベルでしか活用されていませんが、普及が進めば検索順位に強い影響を与えるなど、schema.orgを活用している人・いない人の差が顕著になってくるんじゃないでしょうか。

そうでなくても「コンピュータに正確に意思を伝えられる」なんて夢みたいな話なので、積極的に活用していきたいところですね。

基本的なルール・マークアップ方法

schema.orgのプロパティ

ここからはschema.orgの具体的な書き方について説明します。基本的には次の4つのプロパティを理解すれば、あとはいくらでも応用が効くはずです。

itemscope
microdataを取り扱うことを宣言する。
itemtype
microdataの種類をURLで指定する。
itemprop
情報の細かい項目を指定する。
itemref
離れた場所に記述してある情報とリンクする。

新しく登場したmicrodataという言葉ですが、これは広義で「Google(検索エンジン)に送られる情報」だと解釈して下さい。「schema.orgでmicrodataをマークアップする(=書く)」といった言葉の使い方をします。

書評のマークアップ例

schema.orgを使って、文章をマークアップしてみましょう。マークアップはHTMLで行ないます。映画、TV番組、音楽、レシピなどなど、microdataの種類は様々ですが、今回は書評を取り扱ってみましょう。

あらゆは
鳥山明の
ドラゴンボールを、
100点満点中100点と評価した

HTML

<div itemscope itemtype="http://schema.org/Review"> 
	<span itemprop="author">あらゆ</span>は
	鳥山明の
	ドラゴンボールを、
	100点満点中100点と評価した
</div>

microdataを取り扱う宣言

コードの意味を説明していきます。まずはGoogleに対して、「ここからここまで、書評のmicrodataだよ」という宣言をします。それが次のitemscopeitemtypeです。

HTML

<div itemscope itemtype="http://schema.org/Review"> 
	<!-- ... -->
</div>

itemscopeはただの宣言なので、値が必要ありません。itemtypeはmicrodataの種類を示すために、URLアドレスで値を指定します。http://schema.org/Reviewは「評価」を意味します。itemscopeitemtypeが付いた要素(サンプルはdiv)の中身が、microdataの範囲となります。

http://schema.org/Book
人物
http://schema.org/Person
レストラン
http://schema.org/Restaurant
映画
http://schema.org/Movie
評価
http://schema.org/Review

評価者をマークアップする

宣言に続いて「評価をする人があらゆであること」を伝えます。それにはitempropを利用して次のようにマークアップします。

HTML

<span itemprop="author">あらゆ</span>

itempropは情報の「項目」を指定するプロパティです。ここではauthor(著者)を指定しました。itemprop="author"を付けた要素(サンプルではspan)で取り囲んだテキスト(あらゆ)が値となります。

ここまでで、「microdataの種類が評価であること」「評価の著者(=評価者)があらゆであること」を、Googleに伝えることができました。「"評価"のmicrodataをschema.orgでマークアップした」ということになります。

入れ子構造とは?

itemscopeitemtypeitempropの使い方、すなわち、schema.orgのルールが分かってきたと思います。ここまでを応用して、他の要素をマークアップしてしまいます。

HTML

<div itemscope itemtype="http://schema.org/Review"> 
	<span itemprop="author">Yuta Arai</span>は
	<span itemprop="itemreviewed" itemscope itemtype="http://schema.org/Book">
		<span itemprop="author">鳥山明</span>の
		<span itemprop="name">ドラゴンボール</span>を、
	</span>
100点満点中100点と評価した
</div>

「評価されるのが本であること」「本の著者が鳥山明であること」「本の名前がドラゴンボールであること」を新たにマークアップしました。ここで3行目のspan要素に違和感を感じる方も多いはずです。

HTML

<span itemprop="itemreviewed" itemscope itemtype="http://schema.org/Book">

1つの要素に、左から順にitempropitemscopeitemtypeと、3つのプロパティが同時に入っています。これは一体どういうことなのか、見ていきましょう。

HTML

<span itemprop="itemreviewed">

まず、itemprop="itemreviewed"で情報の項目に「レビューされる対象」を指定しました。ここまでは大丈夫だと思います。

しかしながらその値は、先ほどの<span itemprop="author">あらゆ</span>のように「1つ」ではありません。「本の著者=鳥山明」「本の名前=ドラゴンボール」という複数の値を同時に指定しなければいけないわけです。さて、どうしたものか?

ここで便利なのが「入れ子構造」、言わば「サブのmicrodata」です。「評価のmicrodata」の中に、さらに「本のmicrodata」を入れてしまうというわけです。視覚的に表現すると、次のような形になります。

入れ子の関係

[評価のmicrodata 始まり]
	・著者=Yuta Arai
	[本のmicrodata 始まり]
		・名前=ドラゴンボール
		・著者=鳥山明
	[/本のmicrodata 終わり]
[/評価のmicrodata 終わり]

この「入れ子構造」を作るには、itempropを指定したのと同じ要素内で、itemscopeitemtypeを宣言してやればいいというわけです。それが次というわけですねー。

HTML

<span itemprop="itemreviewed" itemscope itemtype="http://schema.org/Book">
	<!-- ... -->
</span>

イメージはできたでしょうか?この「本のmicrodata」の中に「(本の)著者」「(本の)タイトル」をマークアップしましょう。次の形になりますね。

HTML

<span itemprop="itemreviewed" itemscope itemtype="http://schema.org/Book">
	<span itemprop="author">鳥山明</span>
	<span itemprop="name">ドラゴンボール</span>
</span>

ここまでで「microdataが評価であること」「評価の著者があらゆであること」「評価の対象が本であること」「その本の著者が鳥山明であること」「その本のタイトルがドラゴンボールであること」、この5点をマークアップすることができました。

点数をマークアップする

最後に100点満点中100点というデータをマークアップしましょう。「点数が100点」「最高点が100点」「最低点が0点」という3つの情報を新たにマークアップします。

HTML

<span itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating"> 
	<meta itemprop="worstRating" content="0"> 
	<span itemprop="bestRating">100</span>点満点中
	<span itemprop="ratingValue">100</span>点と評価した
</span>

itempropで「情報の項目」にreviewRating(点数)を指定しました。reviewRatingの値は「点数」「最高点」「最低点」と複数あるので、入れ子構造でmicrodataを作成する必要がありますね。この中でworstRating(最低点)、bestRating(最高点)、ratingValue(点数)をマークアップしています。

入れ子の関係

[評価のmicrodata 始まり]
	・著者=Yuta Arai

	[本のmicrodata 始まり]
		・名前=ドラゴンボール
		・著者=鳥山明
	[/本のmicrodata 終わり]

	[点数のmicrodata 始まり]
		・点数=100点
		・最高点数=100点
		・最低点数=0点
	[/点数のmicrodata 終わり]

[/評価のmicrodata 終わり]

ブラウザに表示できないデータ

下記は「最低点数(worstRating)が0点であること」をマークアップしたものです。他のものと違いますよね。これについて解説します。

HTML

<meta itemprop="worstRating" content="0">

まずは元の文章の、点数を表現する部分を確認してみましょう。

あらゆは
鳥山明の
ドラゴンボールを、
100点満点中100点と評価した

「100点満点中100点」としか書かれておらず、「最低点が0点」を示す表現がありません。そんな時に使える要素が、metaです。metaの要素内で、itempropcontent(値)というプロパティを使うことで、ブラウザにテキストを表示せず、マークアップすることができるというわけです。

便利とはいえ、このmeta要素は言わば「隠しテキスト」と同じ意味を持ちます。ユーザーにテキストを表示することなく、いくらでもウェブページに情報を仕込めるわけです。「好き勝手に使っていい」となったらスパムの温床になることは明白です。「metaの利用は最小限に抑えましょう」というのが、schema.orgの精神です。どうしてもブラウザ上で表現できないデータを取り扱いたい場合にだけ、利用するように心がけましょう。

This technique should be used sparingly. Only use meta with content for information that cannot otherwise be marked up.

3c. Missing/implicit information: use the meta tag with content(schema.orgより引用

間違いを探してみよう

下記の通り、マークアップが完成したと思いきや、ごめんなさい。下記のマークアップには2点、間違いがあります。記事を書いている途中で気付きました…。せっかくなので、この間違いを放置しないための「確認方法」を次の章で身に付けて下さい。

HTML

<div itemscope itemtype="http://schema.org/Review"> 
	<span itemprop="author">あらゆ</span>は
	<span itemprop="itemreviewed" itemscope itemtype="http://schema.org/Book">
		<span itemprop="author">鳥山明</span>の
		<span itemprop="name">ドラゴンボール</span>を、
	</span>
	<span itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating"> 
		<meta itemprop="worstRating" content="0"> 
		<span itemprop="bestRating">100</span>点満点中
		<span itemprop="ratingValue">100</span>点と評価した
	</span>
</div>

リファレンスの確認方法

microdataの種類(URL)を調べる

基本的なマークアップのルールが分かったと思います。型が身に付けば、あとは応用するだけ。違う種類のマークアップもできるようになるはずです。この章では、schema.orgのリファレンスの見方を解説します。まずはmicrodataの種類を示すURLにはどんなものがあるか見てみましょう。

schema.org microdataの一覧
schema.org microdataの一覧

ページを開くと、「Blog」「Movie」「Diet」などなど、驚くほど大量のmicrodataが一覧になっています。例えば、本のmicrodataを指定するには、上記図のように「Book(本)」にアクセスして下さい。リンク先のURLが、microdataの種類として指定するURLです。

itempropの指定方法を調べる

続いて、itempropで値をどのように指定したらいいか、を調べます。

schema.org microdataの内容
schema.org microdataの内容

「Book」のページを開くと出てくる画面です。itemtype="http://schema.org/Book"の中でitempropに指定できる項目がズラーっと出てきます。先ほどはnameを使って、「本のタイトルがドラゴンボールであること」をマークアップしましたね。

schema.org microdataのproperty一覧
schema.org microdataのproperty一覧

itempropの「prop」とは「property」の略です。その「property」の一覧が、このページに並んでいるというわけです。

schema.org microdataのExpected Type
schema.org microdataのExpected Type

そして「Expected Type」の欄にあるのが、propertyの「指定方法」になります。例えば「Text」だったら<span itemprop="name">ドラゴンボール</span>というようにテキストで指定するし、「URL」だったら<span itemprop="image">http://syncer.jp</span>というようにURLアドレスで指定します。下記は指定方法の一例です。

Text
テキストで指定する。
URL
URLアドレスで指定する。
Number
半角数字で指定する。
Date
ISO形式の日付(YYYY-MM-DD)で指定する。
microdata
microdataで指定する。

先ほどのマークアップミスを直そう

schema.org authorの指定方法について
schema.org authorの指定方法について

これはitempropauthorの指定方法です。「Organization or Person」と書いてあります。つまり「Organization」か「Person」のmicrodataでしか指定ができないということです。ここで、前章で間違いがあると言っていたマークアップを見直してみましょう。

HTML

<div itemscope itemtype="http://schema.org/Review">
	<span itemprop="author">あらゆ</span>は
	<span itemprop="itemreviewed" itemscope itemtype="http://schema.org/Book">
		<span itemprop="author">鳥山明</span>の
		<span itemprop="name">ドラゴンボール</span>を、
	</span>
	<span itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating"> 
		<meta itemprop="worstRating" content="0"> 
		<span itemprop="bestRating">100</span>点満点中
		<span itemprop="ratingValue">100</span>点と評価した
	</span>
</div>

次の2点、authorは「Organization(組織)」か「Person(人)」のmicrodataで指定しなければいけないところ、テキストで指定しまっているのが間違いですね。

HTML

<span itemprop="author">あらゆ</span>は
<!-- ... -->
<span itemprop="author">鳥山明</span>の
<!-- ... -->

これらをリファレンスに従って、正しく直すと次の通りになります。これが、正しいマークアップです。

HTML

<div itemscope itemtype="http://schema.org/Review"> 
	<span itemprop="author" itemscope itemtype="http://schema.org/Person">
		<span itemprop="name">あらゆ</span>
	</span>は
	<span itemprop="itemreviewed" itemscope itemtype="http://schema.org/Book">
		<span itemprop="author" itemscope itemtype="http://schema.org/Person">
			<span itemprop="name">鳥山明</span>
		</span>の
		<span itemprop="name">ドラゴンボール</span>を、
	</span>
	<span itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating"> 
		<meta itemprop="worstRating" content = "0"> 
		<span itemprop="bestRating">100</span>点満点中
		<span itemprop="ratingValue">100</span>点と評価した
	</span>
</div>

今度こそ完成です。このように、schema.orgのリファレンスを確認しながらマークアップしていくことで、より正確に、知識を得ながらGoogleに情報を伝えられるようになるでしょう。

応用したマークアップ方法

itemrefを使ってみよう

さて、ここまで言及していなかったitemrefの使い方について、説明します。itemrefとは別の場所と別の場所をリンクさせる要素です。具体的には次のように使います。

HTML

<div itemscope itemtype="http://schema.org/Person" itemref="KOKO_KARA_GET">
<!-- ... -->
<div>
<!-- ↑ここでタグが閉じる -->
<!-- 〜 -->
<!-- ↓離れた場所にある -->
<div itemscope id="KOKO_KARA_GET">
	<span itemprop="name">Yuta Arai</span>
<div>

このように別の場所を参照して、microdataの値を取得できるようにするのがitemrefです。値に任意のIDを指定すると、そのIDがある要素内を、microdataとして参照します。次のように、IDを半角スペースで分けて複数の場所を指定することも可能です。

HTML

<div itemscope itemtype="http://schema.org/Person" itemref="AAA BBB">
<!-- ... -->
<div>
<!-- ↑ここでタグが閉じる -->
<!-- 〜 -->
<!-- ↓離れた場所にある -->
<div itemscope id="AAA">
	<span itemprop="name">Yuta Arai</span>
<div>

<div itemscope id="BBB">
	<span itemprop="birthdate">1982-02-06</span>
<div>

また、次のように、複数の場所から同じIDを参照することも可能です。例えば、「Movie(映画)」「Book(本)」を紹介していて、その著者が同一人物の場合などに便利ですね。

HTML

<div itemscope itemtype="http://schema.org/Movie" itemref="KOKO_KARA_GET">
<!-- ... -->
<div>

<div itemscope itemtype="http://schema.org/Book" itemref="KOKO_KARA_GET">
<!-- ... -->
<div>

<div itemscope id="KOKO_KARA_GET">
	<span itemprop="author" itemscope itemtype="http://schema.org/Person">
		<span itemprop="name">あらゆ</span>
	</span>
<div>

itempropに複数の値を指定する

itempropには「editor(=編集者)」「author(=著者)」「creator(=制作者)」「copyrightHolder(=著作者)」といったように、同じような値がたくさんあります。値が同じ場合は、次のように複数まとめて指定することが可能です。

HTML

<span itemprop="editor author creator copyrightHolder" itemscope itemtype="http://schema.org/Person">
	<span itemprop="name">あらゆ</span>
</span>

schema.orgの文法チェックをする

schema.orgでマークアップしたコードが正しいのか、自分で確認するのは大変ですよね。データが増えて複雑になればなるほどそうです。そんな時にオススメなのが、Googleが提供している「構造化テストツール」です。

Google 構造化テストツール
Google 構造化テストツール

HTMLコード、またはURLを入力すればそのページを、HTMLを入力すればそのコードを、マークアップが正しくされているのか確認してくれる便利なウェブサービスです。これに、前章でマークアップしたコードを入力して、「検証」をクリックしてみて下さい。URLの入力は左上部分にある「URLを取得」から、できます。

検証結果が表示される
検証結果が表示される

すると、右側部分に検証結果が表示されます。この図の例では、5種類のitemscopeを、Googleが認識していることが分かりますね。

詳細内容を確認する
詳細内容を確認する

気になるitemscopeの項目をクリックすると、有効になっているitempropとその値のペアを一覧で確認することができます。自分の意図した通りに認識されているか、入念にチェックしましょう。

マークアップのエラーを確認する
マークアップのエラーを確認する

仮にマークアップに間違いがあった場合は、図のように赤文字で警告が表示されます。この赤文字の部分を読めば、何が間違っているかを確認することができます。schema.orgでマークアップをする上で、この「構造化テストツール」は欠かせないツールです。ブックマークしておきましょう。

マークアップ支援ツール

2015年9月1日現在、Googleがリッチスニペットに反映する主なデータには、下記のものがあります。

  • Tv Episodes with Ratings
  • イベント
  • ソフトウェア アプリケーション
  • テレビ番組のエピソード
  • レストラン
  • 商品
  • 地域のお店やサービス
  • 映画
  • 書評
  • 記事

これらについては、Googleが提供する構造化データ マークアップ支援ツールでお手軽にマークアップすることが可能です。

ただしツールに頼るよりも自分でリファレンスを確認しながらマークアップをしていくことをオススメします。その方が理解が深まり、より応用が利くようになるはずです。ツールは確認程度に利用するのが良いでしょう。

schema.orgは普及するのか?

コストが大きい

ここまで読んでいただいた方、ありがとうございます。Googleに情報を正確に伝えられるschema.org。とても魅力的ですよね。しかしながら「普及は遠いかもなー」と思ってしまうのが正直なところです。

1つマークアップするのも大変ですよね。例えば既に100記事、1000記事と書いているブロガーさんなどは、これから全てのコンテンツをマークアップするのはほぼ不可能です。

また、これは些細なことでしょうが、schema.orgのマークアップによって増えたファイルサイズは、塵を積もらせてサーバーを圧迫してしまうことになるかもしれません。

ユーザーからはあまり歓迎されてない?

シアトルで開催されたSMX Advanced 2011のパネルで、私はSchema.orgのタグに関する質問を耳にした。もう少し詳しく説明すると、グレッグ・ボーザー氏による検索エンジンが最終的に元に戻った経緯に関する発言であった。

まず、検索エンジンはメタデータを検索アルゴリズムに利用した。その後、撤去した。そして、今、検索エンジンは再びメタデータを求めているのだ。ただボーザー氏のトーンからは、Schema.orgの告知やSEO戦略としてのタグの利用に関して、同氏がどう思っているのかは伝わってこなかった。

その他のパネリストは、Schema.orgのタグがコードの膨張につながる点に関してコメントし、最終的に新しいSchema.orgの新しいタグを使ってサイト全体のコーディングをやり直す取り組みを推奨するパネリストは一人も現れなかった。そして、Schema.orgのタグをSEO戦略として利用する点に対して、経験に基づいた証拠もまた提示されなかった。

HTML5のウソとホントをSEO的に分析してみた。(SEO JAPAN)より引用

こちらは2011年の記事です。先ほど書いた通りで、今から過去の記事をマークアップする労力、そしてそれがSEOに繋がるのかが保証されていない現状を考えると、「積極的にマークアップしていこう!」という人は現れにくいですよね…。

Googleのエンジニアは推奨している

schema.orgを使ってないなら今すぐ使うべき。
ユーザーはリッチスニペットをよりクリックする傾向にある。
検索結果にリッチスニペットが増えている。
ユーザーにとって情報が多いほうがいいから使うべき。
検索エンジンに理解させやすくなる。
レシピ検索では構造化マークアップしているサイトだけが絞込みできる。
Googleはより多くのリッチスニペットをサポートし始めている。 — プロダクト、レビュー、イベントなど。

米国のSEOエキスパートたちが語る、最新SEO情報 総まとめ at #SMX Advanced Seattle 2012(海外SEO情報ブログ)より引用

海外SEO情報ブログの「SMX Advanced Seattle 2012」のレポートによると、上記の発言があったそうです。エンジニア側は「積極的にschema.orgを使うべき」という姿勢です。

schema.orgを始めよう!

まだまだschema.orgのマークアップで得られる恩恵は、その労力に対して少ないかもしれません。だけど、この記事の最初でも言いましたが、これからさらに多くの情報がサポートされるようになることは想像できます。

やっている人・やっていない人の差は必ず出てくると思います。「コンピュータに詳しく思い通りに情報を伝えることができる」、そんな素晴らしいschema.orgの取り組みが普及した未来が楽しみです。

今からschema.orgでマークアップを始めてみませんか?この記事が、みなさんの何らかのきっかけになれたら幸いです。ここまで読んでいただき、ありがとうございました。