Google Chrome、ユーザーエージェント文字列を段階的に廃止へ
(zdnet.com)ウェブ開発をしていると、ウェブブラウザーの種類やOSに応じて異なる画面を表示したり、あるいはアクセスユーザーの利用プラットフォームを集計したりする必要が生じることがあります。このとき使われるものの1つが、ウェブブラウザーがHTTPリクエストヘッダーに追加する[ユーザーエージェント](User Agent)文字列です。これによってプラットフォームやブラウザーを判別する方式は広く使われてはいるものの、この文字列はすでにNetscape時代から互換性などの理由で混乱して分かりにくく入り組んでいました。今では言うまでもなく、ほとんどすべてのブラウザーが互いに別のブラウザーであるかのように振る舞っている状況です。たとえば、私が使っているあるブラウザーのユーザーエージェント文字列は次のとおりです。
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4003.0 Safari/537.36 Edg/81.0.381.0
ほかの予備知識なしにこのユーザーエージェント文字列だけを見ても、いったい何のブラウザーなのか到底分からないでしょう。Mozilla Firefox? Chrome? Safari? Edge? 正解はMicrosoft Edge Dev版です。まだ利用プラットフォームはある程度見分けられそうですが、この文字列をパースして利用プラットフォームの判別に使おうとすると、やはり頭が痛くなります。
Googleはこの問題を解決するため、ユーザーエージェント文字列を段階的に廃止し、代わりに[Client Hints](Client Hints)を使おうと提案しました。Client Hintsとは、現在ユーザーエージェント文字列が表している情報を7つのフィールド(ブラウザー名/ブラウザーのメジャーバージョン/ブラウザーの完全なバージョン/プラットフォーム名とバージョン/プラットフォームのアーキテクチャ/ハードウェアのモデル名/モバイルかどうか)に分離してHTTPリクエストヘッダーに追加することを意味します。
Googleは今年(2020年)中に、Google Chromeのユーザーエージェント文字列がこれ以上変更されないよう固定し(互換性の問題があるため削除はできない)、その代わりにこのClient Hintsを使い始める予定だとしています。Mozilla、Apple、MSなど他の主要ウェブブラウザー開発元もこれをサポートする計画はあるようですが、具体的な内容はまだ出ていません。他のウェブブラウザーでもこれを使い始めれば、普及に大きな支障はなさそうです。ただ、自社ブラウザー以外にはサービスで差別的な扱いをしているGoogleのこれまでの動きを見ると、この提案を手放しで歓迎する気にもなれません。
GoogleのClient Hints提案内容:
https://wicg.github.io/ua-client-hints/
ユーザーエージェント文字列の歴史:
まだコメントはありません。