事の発端は、自分のサイトを検索にかけたときにURLの下に「このサイトはスマートフォン対応されていません」のような文言があることに気づいたことです。
このサイトではPCとスマホはViewを切り分けているのでばっちり対応していたので「えっ?」って感じでした。
サイトがスマートフォン対応されていることがSEOに関係することは公式のページを見ても分かるので対応する必要がありました。
Google ウェブマスター向け公式ブログ [JA] : 検索ユーザーがモバイル フレンドリー ページを見つけやすくするために
そもそもなんでこんなことになったかというと、2016年3月18日に勧告されているGooglebotのUA変更をもろに受けた結果です。
Google ウェブマスター向け公式ブログ [JA] : Googlebot のスマートフォン用ユーザー エージェントの更新について
これまでのGooglebotのスマートフォンUAは「iPhone」でしたが、それが「Android」に変更されました。
ただし、Googleによるとサイトの99%は影響を受けないと言われています。もし、影響を受けるのであればそれは「クローキング」の一形態であるとまで言われています。
Google の評価によると、今回のユーザー エージェントの変更は 99% のサイトで影響がない見込みです。サイトが影響を受ける場合に最も多い理由として考えられるのは、そのサイトが Googlebot の特定のユーザー エージェント文字列を期待している場合です。Googlebot に対するユーザー エージェント スニッフィングは推奨されておらず、クローキングの一形態と見なされます。Googlebot は他のブラウザと同様に扱ってください。
それで今回のサイトがどのようにViewを切り替えているかというと以下のgemの下記メソッドで切り分けています。
request.from_iphone? # true if it comes from iphone request.from_ipad? # true if it comes from ipad request.from_android? # true if it comes from android mobile request.from_android_tablet? # true if it comes from android tablet request.from_windows_phone? # true if it comes from windows phone
ただし、これだとうまくGooglebotに対応してくれないので、以下のようにGooglebot用にメソッドを用意していました。クローキングをしたい訳では全くないのですが個別に対応することになってしまっています。
def google_mobile_bot? request.browser == 'Googlebot' && /iPhone/ === request.user_agent end
これを見ると分かるように「iPhone」から「Android」に変わってしまうとこのメソッドはGooglebotのスマートフォンのアクセスに対してfalseを出してしまいます。 対応として「iPhone」、「Android」どちらともいけるようにメソッドを作りました。
def google_mobile_bot_android? request.browser == 'Googlebot' && /Android/ === request.user_agent end def google_mobile_bot_iphone? request.browser == 'Googlebot' && /iPhone/ === request.user_agent end
このようにすると無事に以下のフレンドリーテストをクリアしました!
https://www.google.com/webmasters/tools/mobile-friendly/?hl=ja
今回はGooglebotのUA変更の影響を知らないうちに受けていましたが、ひとまず対応出来たのでよかったです。 気づいていなかったら、スマートフォンの検索順位落とされていたと思うと恐ろしいですね。。
2016年5月12日から、モバイルフレンドリーであることがgoogleの検索順位により大きく影響を受けるようにアップデートされたので未対応の場合は早急に対応が必要ですね。
http://meshrepublic.com/mobile-friendly-algorithm-boost-update/meshrepublic.com