canonicalは検索エンジンだけのものじゃない

canonicalは、GoogleYahoo!マイクロソフトが共同で策定した仕様です。 正しいサイトのURLを検索エンジンに指定することができるもので、これをうまく活用すると重複コンテンツやリンク価値の分散、無駄なインデックスのなどの様々な問題を防止することができます。 特に大量の動的ページを含む大規模サイトでは様々な意図でcanonicalが活用されていて、canonicalは無くてはならないものになっているサイトも少なくありません。

しかしcanonicalを活用しているのは検索エンジンだけではありません。FacebookはてなブックマークTwitterなどソーシャルメディアもカノニカルを参考にしています。 そのような中、canonical検索エンジン対策、SEOのためだけに使っているとソーシャルメディア側で問題が起きる場合もありますので注意が必要です。

実際にどのような形でフェイスブックcanonicalを使っているのかを紹介します。

Facebookcanonical

Facebookは、2012年5月現在、canonicalを使っています。

少しわかりづらいですので、実例で見てもらおうと思います。 下記をテストでやってみました。 Facebookとcanonicalの実験

  1. nothing.htmlはog:urlもcanonicalも指定していません。
  2. onlyogurl.htmlはog:urlをog_url_saki.htmlに指定して、canonicalは指定していません。
  3. both.htmlはcanonicalcanonical_saki.htmlに、og:urlをog_url_saki.htmlに指定しています。
  4. onlycanonical.htmlはcanonicalcanonical_saki.htmlに指定して、og:urlは指定していません。

当然ですが、通常FacebookのタイムラインでURLをシェアすると、シェアしたURLのタイトル・説明文・サムネイルが表示されます。 では、上の場合にはどのURLのタイトル、説明文、サムネイルが表示されるでしょうか?

Facebookcanonical実験結果

og:urlもcanonicalも指定しない場合

example0 og:urlもcanonicalも指定しない場合、当然ながらシェアしたページのサムネイル、タイトル、説明文が現れます。

og:urlだけを指定した場合

上のページと同じソースで、og:urlだけを追加したものがこちらです。 example1 og:url先のタイトル、説明文に変化しました。元のURLは無視して、og:urlのOGPで指定した内容が表示されます。 なお、この場合、表示される内容がog:url先になりますが、クリックした場合に飛ぶリンク先は、シェアしたURLのままになります。

og:urlとcanonicalを指定した場合

今度はog:urlとcanonicalを追加してみました。 example2 両方指定しても、og:url先のタイトル、説明文が表示されています。

canonicalだけを指定した場合

og:URLを外してcanonicalだけ残してみました。 example3 og:urlが無く、canonicalを指定した場合には、canonical先のタイトル、説明文が表示されます。 なお、この場合、表示される内容がcanonical先になりますが、クリックした場合に飛ぶリンク先は、シェアしたURLのままになります。

なお、上記のテストを試すときは、それぞれ下記のページを公開範囲を自分のみなどにしてシェアしてみてください。

Facebookは一部状況でcanonicalを使っている

上記の実験の通り、現在のFacebookは下記の仕様としてcanonicalを使っています。

  • og:urlを設定せずにcanonicalを設定していると、タイムラインに表示されるサムネイルや文章はcanonical先が表示される
  • 変化するのはタイムラインに表示されるサムネイル、タイトル、説明文だけで、リンク先は変更されない。

この仕様が問題になる事はあまり無いと思いますが、canonicalの使い方によっては充分に有りえます。

紫色のシャツのページを「この色は趣味悪いね」とシェアしたつもりが、Tシャツの総合ページと白いTシャツのサムネイルが表示されてしまうかもしれません。

また、以前Googleが推奨していた方法で、多国語展開するWebサイトは一つの代表的な言語のページにcanonicalを指定するべきケースが稀にあります。「イギリス版ページをシェアしていたはずが、アメリカ版のタイトルが表示されていた」という事もあるかもしれません。

さらに、失敗したcanonical設定だと様々な問題が発生し得るでしょう。

情報が異なるページに対してcanonicalを指定する時には、セットでog:urlを指定するようにするべきでしょう。

はてなブックマークTwittercanonical

検索エンジン以外でcanonicalを見ているのは、Facebookだけではありません。

はてなブックマークは、Chrome等の拡張機能でブックマークをするときにcanonical先のURLを提示して「このページには別のURLが提示されています」と推薦してくれます。 はてブとcanonical

通常でははてなブックマーク数が集中しやすくなるので便利ですが、無料ブログのBloggerなど特殊なcanonicalの使い方をしている場合や誤ったcanonicalの使い方をしていると、はてなブックマークユーザを混乱させてしまいます。

また、Twitterも一部canonicalを使っています。 Twitter公式のツイートボタンにはツイート数が表示されるものがありますが、canonicalを指定しているとcanonical先のツイート数も配慮して表示してくれます。

ソーシャルメディアをふまえたcanonicalの注意点

canonicalは「ほぼ同じ情報のページに指定するもの」という仕様でありつつ、本質的に同じ情報ならばある程度違う情報でも問題ありません。

また、ほぼ異なる情報であったとしても検索エンジンが許容する場合もあります。例えばコンテンツを100ページに分割したものと、それを1ページにまとめたものがあった場合、それぞれの1/100のページから1ページに指定する事もGoogleが公式に認めています。情報としてはcanonical元はcanonical先の1%の情報しか含んでいないにもかかわらず、です。 さらに、GoogleのMatt Cuttsのブログのカテゴリページの2ページ目以後から1ページ目にcanonicalを指定している例をみましても、インデックスの制御のためにcanonicalを使うことも充分に許容範囲のようです。

もちろんスパムを意図としたcanonicalはリスクがあるのは当然でしょうが、canonicalは様々な用途で使うことができます。 しかし本来は「本質的に同じ情報」に指定するものです。

canonicalは実装当初の異様なまでの強力さは少し抑えられてきました。しかし現状でもまだまだ強力です。その分、乱用や指定ミスは致命的な事態を招きます。 そして、本来の仕様とは異なる使い方をしていると、今回のような検索エンジン以外が使う場合に問題が発生する可能性もあります。

canonicalは非常に便利ですので多くのサイトで採用されています。今後canonicalが更に多く使われるようになると、そのデータを様々なWebサービスが使うようになっていくのかもしれません。 非常に便利であっても、自信がない場合は利用は避けるべきでしょう。