米Googleは2011年12月5日、多言語サイトを適切にGoogleに登録・掲載するために、rel="alternate" hreflang="x" のサポートを拡張したことを発表した。
rel="alternate" hreflang="x" は、rel="canonical"と組み合わせて使用することにより、個々のウェブページが、どの国・言語のユーザーに閲覧されることを想定したものかをGoogleに伝達するためのアノテーション。この記述を行うことにより、Googleは検索ユーザーに正しい言語・地域別のウェブページ(URL)を検索結果に表示することができるようになる。
rel="alternate" hreflang="x" は、次のようなケースで利用することができる。
- ページのナビゲーションやフッターなど、テンプレートは閲覧者にあわせて翻訳されるが、主たるコンテンツは同一の言語で記述されているケース。たとえば、Facebook や Flickr などのようなケースが該当する。
- 多地域向けのサイトで、ほぼ同一のコンテンツを使用している場合。たとえば、オーストラリア、カナダ、シンガポール、米国向けの英語サイトで、それぞれの国にあわせて通貨表記のみが異なるケース。
- 多地域向けのサイトで、国別にすべて翻訳したコンテンツを持っている場合。たとえばbooking.comや TripAdvisor などのようなケースが該当する。
上記のようなケースで rel="alternate" hreflang="x"アノテーション を(必要に応じて rel="canonical" と組み合わせて)利用することで、検索ユーザーの国・言語にあわせた適切なリンクを検索結果に表示できるようになる。また、個々の(言語・国別の)URL同士でインデックスプロパティ(リンクの資産価値等)を統合することも可能だ。
例えば、次のようなケースを見てみよう。
- http://en-gb.example.com/ 英国向け・主コンテンツは英語
- http://de-de.example.com/ ドイツ向け・主コンテンツはドイツ語
- http://ja.example.com/ 日本向け・主コンテンツは日本語
同一ドメイン example.com に展開したサブドメイン毎に、英国・ドイツ・日本それぞれの地域に向けた、全く異なる言語で翻訳したコンテンツを提供していると仮定する。この場合は、上記全てのページの head セクションに、次のrel="alternate" hreflang="x"アノテーションを記述する。
<link rel="alternate" hreflang="en-gb" href="http://en-gb.example.com/" />
<link rel="alternate" hreflang="de" href="http://de-de.example.com/" />
<link rel="alternate" hreflang="ja" href="http://ja.example.com/" />
上記アノテーションの記述により、google.de から検索した際は de.example.com が表示され、google.co.jp から検索した際は ja.example.com が表示されるようになる。
#
さて、意味は理解できましたでしょうか。たぶん、わからない方が多いと思います。そこで以下、私の解説です。
多言語サイトのSEO運用時の課題
多言語サイトを運用していると、ある国・言語向けに公開したコンテンツが、そのターゲットユーザーの検索結果画面に適切に表示されないという問題は比較的日常茶飯事です。
例えば、米国と英国という同じ英語圏の2つの国をターゲットとしたサイトを考えてみましょう。
- http://en-gb.example.com/ 英国向け・主コンテンツは英語
- http://en-us.example.com/ 米国向け・主コンテンツは英語
ウェブマスターの意図としては、google.com (米国)から検索したユーザーは(きっと米国人なので)us.example が検索結果に表示されることを望む一方、google.co.uk(英国)から検索したユーザーには en-gb.example が表示されることを望むでしょう。
しかし両者ともに英語という同じ言語で記述されている、つまり主たるコンテンツが重複している状態となるため、Googleはアルゴリズムで判断した、「代表的」なURL(仮に us.example とします)のみを表示するように努めます。このため、google.co.uk から検索しているのに、us.example が表示されてしまうという問題が発生します。
重複コンテンツの解決方法としてGoogleが用意したものとして、rel=canonicalがあります。しかし、本ケースは canonical で解決することはできません。なぜなら、canonical は検索結果に優先表示してほしいURLを指定するための要素であり、そこに検索ユーザーの言語・地域属性情報を紐づかせることはできないからです。あくまで canonical は重複したコンテンツを持つ複数のURLをグループとして認識し、インデックスプロパティを統合する機能でしかありません。従って、先に述べた「英国人がgoogle.co.uk から検索しているのに検索結果に us.example が表示されてしまう」問題の解決にはなりません。
多言語・多地域をターゲットとしたSEOにおいて、多くの担当者がこの問題に直面しています。今紹介した例はシンプルにしていますが、現実には英語圏でも英国、シンガポール、オーストラリア、英国、インド…と多岐に渡ります。また、スペイン語をとってもスペイン、メキシコ、コスタリカ, ニカラグア、コロンビア、ベネズエラ、etc..、ドイツ語もドイツ、オーストラリア、スイス、リヒテンシュタイン、etc... と多数の地域に渡るわけです。
このような、同一言語を繰る複数国向けのコンテンツを用意する場合、オリジナルの言語からある言語(たとえばドイツ語)に一度翻訳して、その翻訳をスイス、オーストリアに流用するのが一般的で、国にあわせて個別カスタマイズするのは(通貨表記など除いて)希なケースです。つまり重複コンテンツがどうしても発生してしまう状況にあるのです。
Googleはこうしたグローバルに展開する企業サイトのインデクシングを解決するための1つの方法として、rel="alternate" hreflang="x" アノテーションを発表しているのです。
rel="alternate" hreflang="x"の位置づけ
Googleは多言語サイトを正しく検索エンジンに掲載する方法として、次の方法を推奨しています。
- ccTLDを用いて、国・言語別にローカルドメインを使用すること。たとえば、日本は .jp 、韓国は .kr、マレーシアは .my、シンガポールは .sg など。
- gTLDを使用し、サブドメインで国・言語別に分割する方法。たとえば、日本は jp.example.com、韓国は kr.example.com など。
* サブディレクトリによる分類は私の実務経験上、お勧めできないので含めていない
Googleは ccTLD のローカルドメインを、国・言語を判定するための強いシグナルとして利用するため、ウェブマスターが意図した国・言語の検索結果に掲載されやすくなります。よって私としては ccTLD によるサイト分割した運用を強くお勧めします。
このccTLDによる運用であれば、先に指摘した「複数国向けの同一言語によるコンテンツ」という重複コンテンツ問題も発生しません。たとえば、example.sg.com (シンガポール)とexample.com(米国)それぞれに(同一の)英語コンテンツを用意したとしましょう。しかし Googleは .sg.com と .com という gTLD / ccTLD の違いから、両者は異なるユーザーをターゲットにしているサイトであるとアルゴリズムで自動的に判断して、重複とはみなさないのです。
一方、個別に ccTLD を用意できない場合は、gTLD で運用するサイトで、かつサブドメインで区切る方法もあります。この場合はGoogleウェブマスターツール内にある、地域ターゲット設定の利用を併用することが条件となります。地域ターゲット設定を使って、サブドメインごとにターゲットとする国を指定することにより、各々のコンテンツが本来意図した国・言語の検索結果に表示されるようになります。
以上の通り、多言語サイトの検索エンジン最適化を考える上では上記いずれかの方法が推奨されるわけですが、ここで重要なポイントを説明します。ccTLDを使って国・言語別にサイトを分割している場合は、rel="alternate" hreflang="x"アノテーションを利用する必要がありません。Googleは ccTLD を参照して自動的に判定できるので、このアノテーションは記述しなくてもよいのです。
つまり、rel="alternate" hreflang="x" アノテーションは、想定として 単独の gTLD (.comなど)ドメインで複数地域・言語向けのコンテンツを展開している場合であるということです。ただし、先述したとおり gTLD でサブドメインで分割展開している場合は、Googleウェブマスターツールのサイトターゲット設定が利用できるため、hreflang を必ずしも使う必要がありません。hreflang のメリットは、運用ドメインが ccTLD でもターゲット指定ができること、ページレベルで指定ができる点です。
rel="alternate" hreflang="x"と rel="canonical" 役割の違い
Googleの公式ヘルプ記事を読むと、rel="alternate" hreflang="x"アノテーションと rel="canonical" 属性の話が出てきますが、両者は全く別物です。
ここで各々の役割について整理しましょう。
- rel="alternate" hreflang="x":各々のページが閲覧対象とする国・地域・言語を属性情報として追加し、Googleにシグナルとして伝えるための役割を持つ。
- rel="canonical":重複したコンテンツをグルーピングして、優先表示URLをGoogleに伝える。また、そのグループ内のインデックスプロパティを統合する役割を持つ。
hreflang はターゲット地域・言語をGoogleに対して明示するための記述、rel=canonical は、重複コンテンツをグルーピングするための記述です。両者はコンセプトが全く異なるので、同時に記述できます。
rel=canonical がオプションとして記述する必要があるのは、ターゲットと関係ない、ジェネリック言語における優先表示URLを決めておく必要があるためです。たとえば、米国向け英語ページとシンガポール向け英語ページの2つがあったと仮定すると、日本人がgoogle.co.jpで英語キーワードで検索した時のケースが想定されます。つまり、同一言語で記述された複数ページが存在した時に、汎用的にはどれを表示したいか決めておくのがcanonicalです(インデックスプロパティ統合の役割もある)。
[UPDATE 2019/05] どの時点か不明ですが、公式ブログでは canonical の記述に関する段落が取り消されており "Update: to simplify implementation, we no longer recommend using rel=canonical." (実装をシンプルにするために canonical は不要)との記載があります。ただし日本語版のヘルプページ(多地域、多言語のサイトの管理、https://support.google.com/webmasters/answer/182192?hl=ja&ref_topic=2370587)には canonical の記載が残っています。
rel="alternate" hreflang="x"と rel="canonical" の実装例
以上を踏まえて、具体的な例をあげてみましょう。今回は次のケースを考えてみます。
- http://www.example.com/ 国際版・主コンテンツは英語
- http://en-gb.example.com/ 英国版・主コンテンツは英語
- http://en-us.example.com/ 米国版・主コンテンツは英語
- http://fr.example.com/ フランス版・主コンテンツは仏語
- http://fr-ca.example.com/ カナダ版・主コンテンツは仏語
英語で記述した3つの国・地域向けのページ(3つ)と、フランス語で記述した2つの国向けのページ(2つ)があります。この場合、各々のページの head セクションにはどのように記述したらいいでしょうか。
まず、次の hreflang を全てのページ(5ページ)に共通で記述します。
<link rel="alternate" hreflang="en" href="http://www.example.com/" />
<link rel="alternate" hreflang="en-gb" href="http://en-gb.example.com/" />
<link rel="alternate" hreflang="en-us" href="http://en-us.example.com/" />
<link rel="alternate" hreflang="fr" href="http://fr.example.com/" />
<link rel="alternate" hreflang="fr-ca" href="http://fr-ca.example.com/" />
以上の記述で、各ページに地域・言語のシグナル情報を追加することができました。しかし、国を限定しない、"一般"英語及びフランス語の検索ユーザーに対してどのページを表示すべきかという課題は解決されていません(例えば、日本人ユーザーが日本からフランス語で検索した場合、同じく英語で検索した場合に表示したいURL)。つまり、重複コンテンツの問題を解決する必要があります。英語コンテンツ(3ページ)と、フランス語コンテンツ(2ページ)が、それぞれ重複状態にありますので、これを解消しましょう。
まず英語コンテンツの重複を解決します。ここでは国際版としての www. を canonical URL つまり代表URLと定めます。そこで、www、en-gb、en-us それぞれのページに次の1行を追加します。
英語ページに共通して次の1行を追加
<link rel="canonical" href="http://www.example.com/" />
同様にフランス語コンテンツの重複も解決します。ここではフランス向けのフランス語ページをcanonical URL と定めます。そこで、fr、fr-ca それぞれのページに次の1行を追加します。
フランス語ページに共通して次の1行を追加
<link rel="canonical" href="http://fr.example.com/" />
英語ページに、フランス語ページのcanonical を追加したり、その逆を行ってはいけません。言語が完全に異なりますので、canoical を利用することはできません。多地域を対象とした同一言語で記述されたコンテンツの中で canonical を指定します。
上記の例では、英語グループとフランス語グループにわけて、それぞれのcanonical URL を決定し、そのグループ内で canonical を指定しています。
New markup for multilingual content
http://googlewebmastercentral.blogspot.com/2011/12/new-markup-for-multilingual-content.html
多言語コンテンツのマークアップのヒント
http://googlewebmastercentral-ja.blogspot.com/2011/12/blog-post_19.html
rel="alternate" hreflang="x"
http://support.google.com/webmasters/bin/answer.py?hl=en&answer=189077
Language Codes
http://msdn.microsoft.com/en-us/library/ms533052(v=vs.85).aspx
#
グーグル公式ヘルプで言及されている、クッキー処理の方法の話はバッサリと切り捨てています。話が複雑になりすぎると思いますので。
2011.12.21 説明に間違いがありましたので訂正させて頂きました。ご指摘ありがとうございました。