The IE10 User-Agent String

本記事は、マイクロソフト本社の IE チームのブログから記事を抜粋し、翻訳したものです。 

【元記事】IE10 User-Agent String (2011/4/16 2:14 AM)

先日、IE10 Platform Preview 1 が発表されました。このプラットフォーム プレビューには、いくつかの魅力的な新機能に加え、IE10 の新しいユーザーエージェント文字列が含まれています。

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)

全体として、IE9 のユーザーエージェント文字列から想定されるとおりの変更です。IE10 での変更点は以下の 2 つだけです。

  • "MSIE" トークンの値が "10.0" になりました。
  • "Trident" トークンの値が "6.0" になりました。

また IE10 の互換表示は、IE8 および IE9 と同様に、IE7 標準モードに設定されています。ユーザー エージェント文字列は、互換性のために以下のように IE7 を表しますが、"Trident" トークンの値は、IE10 が使用されていることを示すため "6.0" になります。

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/6.0)

影響

理想を言えば、このような変更はほとんど意識する必要がないという状態がベストです。実際、機能検出のみを使用している場合は何もあわてることはないでしょう。機能検出については、"同一のマークアップ" に関する 3 つのブログ (ブログその 1ブログその 2ブログその 3) を参照してください。

しかしながら、サイトでユーザーエージェントを参照している場合は、特に、"MSIE" トークンの値が "10.0" に上がったことを考慮する必要があります。というのは、トークンの文字列値の桁が 1 つ増えているからです。ほとんどのサイトは何もしなくてもこの値を処理できると思われますが、増えた桁を誤って処理し、IE10 を IE1 と誤認してしまうサイトも出てくるでしょう。

例を挙げて説明しましょう。以下は、"MSIE" トークンの値の最初の桁だけを取得する正規表現です。

// 誤: 1 文字を取得し、IE10 のバージョンを "1" としてレポートする

var matchIE = /MSIE\s(\d)/;

以下は、"MSIE" トークンの値全体を取得する正規表現です。

// 正: 複数の文字を取得し、IE10 バージョンを "10.0" としてレポートする

var matchIE = /MSIE\s([\d.]+)/

当然ながら、使用しているプログラミング言語や文字列の解析方法などによってコードはさまざまです。Apache でカスタムの HTTPS 構成を使用している場合は、Eric Lawrence によるこちらのブログも参照してください。

今後の対応

IE10 Platform Preview 1 をダウンロードし、各自のサイトが IE10 のユーザー エージェント文字列をどのように処理するかを検証してください。必要であれば、ユーザー エージェントを参照するロジックを更新します。また、より良い方法としては、機能検出に移行することをお勧めします。機能検出を使用すれば、今後このような変更に手間を取られることはなくなるでしょう。

—Tony Ross、プログラム マネージャー、Internet Explorer