Chrome 11 におけるユーザーエージェント文字列の変更
2011年6月7日火曜日
[本記事は、The Chromium Blog にて Google ソフトウェアエンジニアの Peter Kasting が執筆したブログ記事 "UA String Changes Coming In Chrome 11" を元に、Google シニアエンジニアリングマネージャの及川卓也が解説した記事です。 -山崎]
ウェブサイトやウェブアプリケーションはユーザーの利用しているブラウザ情報を取得するためにユーザーエージェント(UA)文字列を利用します。この UA 文字列はユーザーの OS やブラウザ環境を識別するための文字列です。
Chrome 11 ではこの UA 文字列の変更が行われました。互換性を考慮はしていますが、ウェブサイトやウェブアプリケーションの動作に影響を与える可能性があります。以下の変更をご理解いただき、今一度、ウェブサイトやウェブアプリケーションの設定をご確認ください。
まず、Chrome 10 での UA 文字列の例を示します。
Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16同じプラットフォームでの Chrome 11 の UA 文字列はそれぞれ次のようになります。
Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16
Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.16 Safari/534.24この違いを詳しく解説します。Chrome 11 では主に 4 つの変更点があり、そのうちの 2 つは Windows 固有のものです。
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.16 Safari/534.24
Windows では、最初の「Windows;」というプラットフォーム識別子が削除されました。これは 、その後に続く OS のバージョン識別子と重複しており、また、UA 文字列にこの識別子をもたない Internet Explorer との互換性を高めるためです。
次に、「U」という SSL の暗号強度を示すトークンが削除されました。このトークンは 10 年以上も前のもので、米国輸出法が、いろいろな国に輸出されるソフトウェアに組み込む暗号強度を限定したときに用意されたものです。その有効な値は、「U」(USA を表し、128 ビットビット暗号化に対応)、「I」(インターナショナルを表し、40 ビット暗号化に対応)、「N」(暗号化のサポートなし)です。その後、暗号技術に対する輸出規制は大きく変更され、現在ではすべてのブラウザが 128 ビットの SSL サポートをしているので、強度を示す必要はありません。
Windows の 64 ビット版では、64 ビット版であることを示すトークンが OS のバージョンの後に追加されました。Windows 64 ビット版で動く Chrome 32 ビット版には、「WOW64」を追加しました(WOW64 は「Windows 32 on Windows 64=Windows 64 ビット上の Windows 32 ビット」の略で、マイクロソフトが 32 ビット互換のサブシステムに与えた名前です)。Chrome のソースコードでは、64 ビットネイティブのビルドに対してさらに識別子を追加しました。たとえば、「Win64;x64」(x64 ベースのプロセッサ)、「Win64; IA64」(Itanium システム)です(ただし、現在は、このビルドは公開しておらず、当面の予定でしかありません)。これらのトークンは、ネイティブな実行可能ファイルに対するダウンロードリンクを提供したり、Internet Explorer が利用するものに一致することを必要とするサイトにとって便利です。
ロケールは削除されました。ブラウザがどのような言語に対応するかを知りたいウェブ開発者は HTTP ヘッダーの Accept-Language を利用すべきです。これは、複数のロケールを与えることができます。
皆様の中にはどうしてこのような変更を行ったか疑問に思われる方もいらっしゃると思います。
ウェブサイトはすべてのブラウザの UA 文字列を確認するために、共通のコードを持つ傾向にあります。異なるブラウザがお互いに同期して維持されることは重要なことです。Mozilla も Firefox 4 で同様の変更を行っています(さらに詳しいことは、 http://hacks.mozilla.org/2010/09/final-user-agent-string-for-firefox-4/ をご覧ください)。開発者の混乱を小さくするために、Chrome もなるべく早くあわせたいと考えました。
これらの変更は Canary ビルドや Dev ビルドなどを使って、十分な検証を行ってあります。Google サイトで一時問題が発生していましたが、問題となっていた UA 文字列解析ライブラリは既に修正されています。新しい UA 文字列が原因で問題が起きる他のサイトを発見したら、代わりの UA 文字列を Chrome が持つ ように、コマンドラインに --user-agent=<ここに任意の文字列を挿入します> というフラグをつけて Chrome を起動してください(アドレスバーで、about: とタイプしてエンターキーを押せば、Chrome がウェブサイトに送信する UA 文字列を再度確認できます)。