<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://organizeseries.com/"
	>

<channel>
	<title>高見和也 &#8211; HTML5Experts.jp</title>
	<atom:link href="/miiitaka/feed/" rel="self" type="application/rss+xml" />
	<link>https://html5experts.jp</link>
	<description>日本に、もっとエキスパートを。</description>
	<lastBuildDate>Sat, 07 Jul 2018 03:14:05 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.7.19</generator>
	<item>
		<title>schema.org構造化データマークアップのシンタックスにJSON-LDという選択</title>
		<link>/miiitaka/17128/</link>
		<pubDate>Tue, 06 Oct 2015 00:00:53 +0000</pubDate>
		<dc:creator><![CDATA[高見和也]]></dc:creator>
				<category><![CDATA[サイト制作]]></category>
		<category><![CDATA[JSON-LD]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[schema.org]]></category>
		<category><![CDATA[マークアップ]]></category>

		<guid isPermaLink="false">/?p=17128</guid>
		<description><![CDATA[2014年10月28日にHTML5が勧告され、もうすぐ1年が経とうとしています。HTML5やその他のAPI、たとえばWeb StorageやService Workerを始め、WebではJavaScriptで操作するよう...]]></description>
				<content:encoded><![CDATA[<p><img src="/wp-content/uploads/2015/09/eyecatch_jsonld-640x400.jpg" alt="schema.org 構造化データマークアップのシンタックスに JSON-LD という選択" width="640" height="400" class="aligncenter size-large wp-image-17179" srcset="/wp-content/uploads/2015/09/eyecatch_jsonld.jpg 640w, /wp-content/uploads/2015/09/eyecatch_jsonld-300x188.jpg 300w, /wp-content/uploads/2015/09/eyecatch_jsonld-207x129.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>2014年10月28日にHTML5が勧告され、もうすぐ1年が経とうとしています。HTML5やその他のAPI、たとえばWeb StorageやService Workerを始め、WebではJavaScriptで操作するようなAPI技術が話題に上がることが多いように思えます。しかし忘れてはいけないのは、HTML5では検索エンジンなどのプログラムにサイトの情報を正しく理解してもらうことを可能とするマークアップができることです。</p>

<p>&lt;header&gt;や&lt;article&gt;といったタグレベルでの情報はたくさんあり、一般的になりつつあります。代表的なCMSのテンプレートでも実際に組み込まれているものがほとんどです。そこで今回は、Webサイトのコンテンツ情報をよりプログラムで構造的に取得できるように考えられた、構造化データ定義ボキャブラリ「<a href="http://schema.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">schema.org</a>」とそのシンタックスとして「<a href="http://json-ld.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">JSON-LD（JSON for Linking Data）</a>」を選ぶ理由をまとめたいと思います。</p>

<h2>schema.org登場の背景</h2>

<p>schema.orgが登場する以前は、検索サービスを提供しているYahoo!・Microsoft・Googleの3社がそれぞれ別々のボキャブラリ（語彙）で定義していました。しかし、検索サービス毎に定義が別では、その検索サービスに合わせたマークアップをそれぞれ行わなければいけません。そこで3社は2011年から共同で1つのフォーマットの策定を進めてきました。それがschema.orgです。最新バージョンは2.1で、2015年8月6日にリリースされたものです。</p>

<h2>JSON-LDシンタックスの利点</h2>

<p>JSON-LDは、2014年1月16日にW3C勧告になったオープンデータフォーマットです。その名のとおり、JSON形式で情報をセットします。schema.orgのほかのシンタックスとして、MicrodataやRDFaがありますが、どちらもタグの属性として値をセットします。Googleの<a href="https://developers.google.com/structured-data/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">構造化マークアップ公式サイト</a>に掲載されている<a href="https://developers.google.com/structured-data/rich-snippets/reviews" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">商品レビューのマークアップ方法</a>で、JSON-LDとMicrodataシンタックスの記述を比較してみると以下のように違いがわかります。</p>

<p></p><pre class="crayon-plain-tag">&lt;div&gt; 
  &lt;div&gt; 
    &lt;span&gt;Legal Seafood&lt;/span&gt; 
  &lt;/div&gt; 
  &lt;span&gt; 
    &lt;span&gt;4&lt;/span&gt; 
  &lt;/span&gt; stars - 
  &lt;b&gt;"&lt;span&gt;A good seafood place.&lt;/span&gt;" &lt;/b&gt; 
  &lt;span&gt; 
    &lt;span&gt;Bob Smith&lt;/span&gt; 
  &lt;/span&gt; 
  &lt;span&gt;The seafood is great.&lt;/span&gt; 
&lt;/div&gt;</pre><p></p>

<p></p><pre class="crayon-plain-tag">&lt;div itemscope itemtype="http://schema.org/Review"&gt; 
  &lt;div itemprop="itemReviewed" itemscope itemtype="http://schema.org/Restaurant"&gt; 
    &lt;span itemprop="name"&gt;Legal Seafood&lt;/span&gt; 
  &lt;/div&gt; 
  &lt;span itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating"&gt; 
    &lt;span itemprop="ratingValue"&gt;4&lt;/span&gt; 
  &lt;/span&gt; stars - 
  &lt;b&gt;"&lt;span itemprop="name"&gt;A good seafood place.&lt;/span&gt;" &lt;/b&gt; 
  &lt;span itemprop="author" itemscope itemtype="http://schema.org/Person"&gt; 
    &lt;span itemprop="name"&gt;Bob Smith&lt;/span&gt; 
  &lt;/span&gt; 
  &lt;span itemprop="reviewBody"&gt;The seafood is great.&lt;/span&gt; 
  &lt;div itemprop="publisher" itemscope itemtype="http://schema.org/Organization"&gt; 
    &lt;meta itemprop="name" content="Washington Times"&gt; 
  &lt;/div&gt; 
&lt;/div&gt;</pre><p></p>

<p></p><pre class="crayon-plain-tag">&lt;script type="application/ld+json"&gt; 
{ 
  "@context": "http://schema.org/", 
  "@type": "Review", 
  "itemReviewed": { 
    "@type": "Restaurant", 
    "name": "Legal Seafood" 
  }, 
  "reviewRating": { 
    "@type": "Rating", 
    "ratingValue": "4" 
  }, 
  "name": "A good seafood place.", 
  "author": { 
    "@type": "Person", 
    "name": "Bob Smith" 
  }, 
  "reviewBody": "The seafood is great.", 
  "publisher": { 
    "@type": "Organization", 
    "name": "Washington Times" 
  } 
} 
&lt;/script&gt;</pre><p></p>

<p>構造化マークアップを実装する前のソースコードにそれぞれ実装した例です。属性（itemprop、itemscope、 itemtype など）で設定するMicrodataはソースコードが複雑になり可読性が悪くなります。一方、JSON-LDではscript要素で別に定義しますので、本来のソースコードを汚染することはありません。おそらく属性値から情報を取得するよりJSON形式でデータをまとめておいてもらったほうが検索プログラムもデータを扱いやすいのではないかと考えています。</p>

<h2>GoogleはJSON-LDシンタックスを推奨している</h2>

<p>Googleの<a href="http://googlewebmastercentral-ja.blogspot.jp/2015/03/easier-website-development-with-web.html" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">ウェブマスター向け公式ブログ</a>の過去記事にもあるように、JSON-LDによるシンタックスを推奨しています。schema.orgの定義をWeb Componentと組み合わて、必要箇所にインポートすることができます。</p>

<p>では、基本です。JSON-LDの基本型は以下のとおりです。</p>

<p></p><pre class="crayon-plain-tag">&lt;script type="application/ld+json"&gt; 
{ 
  "@context": "http://schema.org/", 
  "@type": "xxxxxxxx" 
} 
&lt;/script&gt;</pre><p></p>

<p>script要素のtype属性にapplication/ld+jsonを設定します。そして定義するJSONデータをその中に記述します。@contextはschema.org定義です。これは変わらず。@typeでいろいろな種類の定義ができます。例えば、商品・商品レビュー・イベント・会社情報・レシピなど、schema.orgの公式サイトを見てもらうと設定値が詳しく記載されています。そのタイプに応じたパラメータを設定することで、正確な情報を伝えることができるようになります。Googleではそのページが構造化マークアップが正しくできているかテストができる「<a href="https://developers.google.com/structured-data/testing-tool/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">構造化マークアップテストツール</a>」も準備していますので、マークアップ後にテストをしてエラーがないことを確認しましょう。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/09/11874e9dcbd86ae56f9279864b538033.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/09/11874e9dcbd86ae56f9279864b538033-640x288.png" alt="Structured Data Testing Tool" width="640" height="288" class="aligncenter size-large wp-image-17134" srcset="/wp-content/uploads/2015/09/11874e9dcbd86ae56f9279864b538033.png 640w, /wp-content/uploads/2015/09/11874e9dcbd86ae56f9279864b538033-300x135.png 300w, /wp-content/uploads/2015/09/11874e9dcbd86ae56f9279864b538033-207x93.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>※ @type: &#8220;Organization&#8221;の構造化マークアップテストツールの確認例</p>

<p>構造化マークアップを行うことで検索プログラムに正確な情報を収集してもらいます。検索プログラムはこの情報をもとに検索結果を最適化することはもちろんですが、ナレッジグラフにもこの情報が影響することが公式サイトに記載されてあります。サイトに構造化マークアップをして、その情報を検索プログラムが認識したかどうかは<a href="https://www.google.com/webmasters/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Google Search Console</a>の「検索デザイン」→「構造化データ」で確認することができます。下図は、schema.orgのOrganizationやBreadclumbListなどが認識された例です。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/09/64d59b422189a4505ac968484538cc8f.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/09/64d59b422189a4505ac968484538cc8f.png" alt="Web Search Console" width="589" height="205" class="aligncenter size-full wp-image-17168" srcset="/wp-content/uploads/2015/09/64d59b422189a4505ac968484538cc8f.png 589w, /wp-content/uploads/2015/09/64d59b422189a4505ac968484538cc8f-300x104.png 300w, /wp-content/uploads/2015/09/64d59b422189a4505ac968484538cc8f-207x72.png 207w" sizes="(max-width: 589px) 100vw, 589px" /></a></p>

<p>私が注目しているのは、構造化マークアップで<a href="https://developers.google.com/structured-data/slsb-overview" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">検索結果ページに絞り込み検索（サイト内検索）のボックスを表示させることができる</a>設定です。下図は、「LinkedIn」を検索した結果です。サイト名の下に検索ボックスが表示されています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/09/SiteLink-Search-Box.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/09/SiteLink-Search-Box.png" alt="SiteLink Search Box" width="549" height="338" class="aligncenter size-full wp-image-17175" srcset="/wp-content/uploads/2015/09/SiteLink-Search-Box.png 549w, /wp-content/uploads/2015/09/SiteLink-Search-Box-300x185.png 300w, /wp-content/uploads/2015/09/SiteLink-Search-Box-207x127.png 207w" sizes="(max-width: 549px) 100vw, 549px" /></a></p>

<p>例えば「高見和也」と入力して検索すると「高見和也 site:linkedin.com」とGoogleの検索ボックスに入力した状態と同じになります。しかし、検索ボックスが検索結果に表示されているほかのサイトで使用してみると、サイト内に設置してある検索ボックスを使用して検索を実行するものもありました。これはおそらく、Google が自動で検索ボックスを認識したパターンの場合です。LinkedInのサイトのソースコードにはschema.org定義のマークアップはありませんでした。ナレッジグラフや企業情報も同じだと思うのですが、Googleが自動的に情報を読み取って表示してもらえるパターンがあるがschema.orgで正確に情報を渡してあげればこういった対応の揺れがなくなる、そういうことだと理解しています。</p>

<p>話は検索ボックスに戻りまして、通常そのサイトで探したいものがある場合、サイトにアクセスして、サイト内検索ボックスに検索キーワードを入力するという流れになります。しかし、このマークアップを実装していてGoogleが検索結果として表示してくれるようになれば、一手少なくすみます。少しでも短い導線で必要な情報にアクセスする仕組みを考えるのもフロントエンドエンジニアの仕事の一つではないかと考えています。</p>

<h2>メールも構造化マークアップができる</h2>

<p>Webサイトだけが構造化の対象というわけではありません。Gmailを使用している方は、お気づきかもしれません。例えば、Googleカレンダーから招待メールを送ります。すると、下図のようなメールが届きます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/09/Calender-Mail.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/09/Calender-Mail-640x22.png" alt="Calender Mail" width="640" height="22" class="alignnone size-large wp-image-17141" srcset="/wp-content/uploads/2015/09/Calender-Mail.png 640w, /wp-content/uploads/2015/09/Calender-Mail-300x10.png 300w, /wp-content/uploads/2015/09/Calender-Mail-207x7.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>「出欠確認」のプルダウンボタンが表示されています。これをクリックするとメールを開かなくても一覧の状態のままで出欠の返信ができます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/09/Calender-Action.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/09/Calender-Action.png" alt="Calender-Action" width="354" height="179" class="alignnone size-full wp-image-17143" srcset="/wp-content/uploads/2015/09/Calender-Action.png 354w, /wp-content/uploads/2015/09/Calender-Action-300x152.png 300w, /wp-content/uploads/2015/09/Calender-Action-207x105.png 207w" sizes="(max-width: 354px) 100vw, 354px" /></a></p>

<p>これは、HTMLメールのソースコード内にJSON-LDでschema.org定義をマークアップすることで実現できます。公式サイトにGASから実装する例が掲載されていたので実際に組んでみました。</p>

<p></p><pre class="crayon-plain-tag">&lt;html&gt; 
  &lt;head&gt; 
    &lt;script type="application/ld+json"&gt; 
    { 
      "@context": "http://schema.org/", 
      "@type": "EmailMessage", 
      "description": "Check this out", 
      "potentialAction": { 
        "@type": "ViewAction", 
        "target": "/" 
      } 
    } 
    &lt;/script&gt; 
  &lt;/head&gt; 
  &lt;body&gt; 
    &lt;p&gt; 
      This a test for a Go-To action in Gmail. 
    &lt;/p&gt; 
  &lt;/body&gt; 
&lt;/html&gt;</pre><p></p>

<p></p><pre class="crayon-plain-tag">function testSchemas() { 
  var htmlBody = HtmlService.createHtmlOutputFromFile('mail_template').getContent(); 
 
  MailApp.sendEmail({ 
    to: Session.getActiveUser().getEmail(), 
    subject: 'テスト', 
    htmlBody: htmlBody, 
  }); 
}</pre><p></p>

<p>Googleスプレッドシートからスクリプトエディタを起動して、mail_template.htmlを作成します。それからmain.gsを新規作成しメールを送信する処理を記述します。getContent()で作成したテンプレートのHTMLを取得してメールの本文とし送信を行う単純な処理です。送られてきたメールは以下のとおりです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/09/8c3cd6315b27a45d837afce3f8dbaa27.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/09/8c3cd6315b27a45d837afce3f8dbaa27-640x24.png" alt="Mail View Action" width="640" height="24" class="alignnone size-large wp-image-17136" srcset="/wp-content/uploads/2015/09/8c3cd6315b27a45d837afce3f8dbaa27.png 640w, /wp-content/uploads/2015/09/8c3cd6315b27a45d837afce3f8dbaa27-300x11.png 300w, /wp-content/uploads/2015/09/8c3cd6315b27a45d837afce3f8dbaa27-207x8.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>この例は、potentialActionの@typeで「ViewAction」を指定しているので、「表示」をクリックするとtargetで指定している「<a href="https://html5experts.jp/" data-wpel-link="internal">/</a>」のサイトに遷移します。クリック以外にもカレンダーからの出欠確認やレビュー、Google Nowでのリッチスニペット化、Inboxにおけるハイライトなどさまざまなアクションが準備されています。</p>

<p>GitHubやAmazonからのメールでも使用されているようです。Amazonで注文した際に送られてくる確認メールを見てもらうと「注文を表示」というボタンが表示されていました。この技術を利用するには、Googleに<a href="https://developers.google.com/gmail/markup/registering-with-google" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">ホワイトリスト</a>登録を行う必要があるようで、ECサイトなどからのメルマガを配信したいといった場合は、ドメインを専用フォームから申請しなければいけません。</p>

<p>この形式が正式に定義されれば、今はGmailだけが使用できているこの機能を、ほかのメールアプリケーションでも独自の機能が組み込めていけるのではないでしょうか？ECサイトではメルマガからのユーザーの流入は集客の王道です。競合他社との差別化を図るにはこういった細かい改善や工夫が必要です。</p>

<h2>構造化とSEO</h2>

<p>では構造化マークアップを行えば、検索結果の上位に表示されるようになるのか？と思われるでしょうが、そうではありません。構造化することで検索プログラムに正確な情報を収集してもらい、理解してもらうことでユーザーにとって最適な検索結果を提供するというものです。もちろん、前述したとおりメールでの構造化では別の利点もあります。</p>

<p>しかし、先日行われたWebマスター向けのGoogleハングアウト</a>で、John Mueller氏の発言に驚きました。</p>

<p>&gt; 構造化データのマークアップをランキングアルゴリズムに組み込むかもしれない</p>


<!-- iframe plugin v.4.3 wordpress.org/plugins/iframe/ -->
<iframe width="640" height="360" src="https://www.youtube.com/embed/QWL864VlW7I?feature=player_embedded" frameborder="0" 0="allowfullscreen" scrolling="yes" class="iframe-class"></iframe>


<p>構造化された情報を収集してもらうことで、検索時にGoogleが推測せずともそのサイトがどのような情報を持っているか事前に把握しているわけです。そう考えると、そのサイトの順位を上げるのは自然な考え方に思えます（これを利用したスパムサイトが横行しないかが懸念材料ですが）。</p>

<p>ここまで、schema.org + JSON-LDのお話をしてきましが、すぐに導入すべきということではありません。
  まだJSON-LDのサポートを実装する過程で、Googleとしては<a href="https://developers.google.com/structured-data/rich-snippets/reviews" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">MicrodataかRDFaで実装することを推奨している定義もあります。</a></p>

<blockquote>
We are in the process of implementing JSON-LD support for this Rich Snippet type. At the current time, we recommend using microdata or RDFa.
</blockquote>

<p>しかしこれから除々に実装していく事は確かですので、これから必要になる知識として憶えておいて良い技術ではないでしょうか？</p>

<h2>参考サイト</h2>

<ul>
<li><a href="http://schema.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">schema.org</a> </li>
<li><a href="http://www.w3.org/TR/json-ld/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">JSON-LD</a> </li>
<li><a href="https://developers.google.com/structured-data/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Google：構造化マークアップの推奨</a> </li>
<li><a href="https://developers.google.com/gmail/markup/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Google：Email Markup</a> </li>
</ul>
]]></content:encoded>
			</item>
	</channel>
</rss>
