Googleの記事から読み解く!ユーザーエージェント振り分けがダメな理由

「ユーザーエージェント振り分け」は、スマートフォン、タブレット、デスクトップ向けに別々にウェブサイトを表示させるための技術の一つです。ここでは、Googleが「ユーザー エージェントの正確な検出」という記事を元に「ユーザーエージェント振り分け」がダメなワケをご紹介いたします。

ユーザーエージェントでの振り分け

振り分けでよく利用される方法として、スマートフォン、タブレット、デスクトップの端末ごとの固有の端末記号のUA(ユーザーエージェント)をサーバーが判定して、端末ごとにHTML、CSSを配信します。HTMLとCSSをスマートフォン用、タブレット用、デスクトップ用と最低でも2種類以上のHTML+CSSが必要になります。

Googleが「ユーザーエージェント判定」を警告する理由

Googleは、「ユーザー エージェントの正確な検出」という記事で、以下の3つの警告をしています。

  1. ユーザーエージェント情報の更新不足
  2. ユーザーエージェントの不一致
  3. クローキングの可能性

ひとつ一つ見ていきましょう。

ユーザーエージェント情報の更新不足

UAを利用する場合、端末ごとのUAのリストは常に最新の情報である必要があります。
現在、Open Signalの調査によると、2014年、市場には19,000種類のアンドロイド端末が存在しています。 その全てのユーザーエージェントを調べて最新の情報とするのは非常に難しいということは簡単に想像がつきます。

さらに、今後も端末は増え続けテレビなどの家電、スマートウォッチ、Iot時代になったことから家や家具、車などあらゆるものとWebが連携することになるのです。このように、ユーザーエージェントは増え続けいます。つまり、増えていく端末のユーザーエージェントを整理して振り分けていくのは現実的ではないのです。

ユーザーエージェントの不一致

Googleは、「ユーザーエージェントの不一致」も指摘しています。
ユーザーエージェントの不一致は、デバイス自体のユーザーエージェント登録が現実異なる場合もありますし、サーバーが間違って判定してしまうケースがあります。そのことで、スマートフォンでアクセスしたのにタブレットと判定して、タブレット用ページが配信されてしまいます。

下記は実際の文字列をもとに説明した例です。

サーバーが、「Android」という言葉で、利用者の端末をスマートフォンと判定をします。すると、タブレットも「Android」が含まれていることで端末を間違ってしまいます。この場合、スマートフォンに含まれる「Mobile」という文字列がふくまれてた場合にスマートフォンと判定するのが正しい判定方法です。

判定を間違えば利用者には異なったページが表示されてしまいます。

スマートフォン
Mozilla/5.0 (Linux; <Android Version>; <Build Tag etc.>) AppleWebKit/<WebKit Rev> (KHTML, like Gecko) Chrome/<Chrome Rev> Mobile Safari/<WebKit Rev>  
タブレット
Mozilla/5.0 (Linux; <Android Version>; <Build Tag etc.>) AppleWebKit/<WebKit Rev>(KHTML, like Gecko) Chrome/<Chrome Rev> Safari/<WebKit Rev>  

クローキングの可能性

振り分けが失敗することで、検索エンジンはクローキングというスパム判定をしてしまう可能性があります。と解説しています。

Googleは振り分けを非推奨していないのか!?

Googleは、ユーザーエージェント判定を禁止してませんが、「ユーザーエージェント判定」自体が怪しい以上、大丈夫ではないと警告をしていますし、日本語ではわかりにくいですが、英語(原文)では「“Pitfalls when detecting user agents”」「ユーザーエージェントの検出は危険」と書かれています。
このように記載されていることから、振り分けの方法を選択する場合はこれらのデメリットを理解した上で採用しましょう。

まとめ

Googleがユーザーエージェントを非推奨とした重要な3つの理由があります。その内容をもう一度確認してユーザーエージェントの利用をやめましょう。そして、早く正しいレスポンシブWebデザインを採用することをオススメします。