normalian blog

Let's talk about Microsoft Azure, ASP.NET and Java!

IE10 デスクトップ版/Metro UI版 の User Agent を確認してみた

※7/13追記IE10 User Agent String Update に詳細な比較があるのでこちらを参照頂きたい

Release Preview が発表されて暫く経った Windows 8 に同梱される IE10、正式リリースされたわけではないが、利用されている方も多いだろう。ふとWebアプリを作ろうとした際、以下を考えたので IE10 の User Agent を調べてみた。

  • Metro UI はタッチ操作が主体だから jQuery Mobile を使いたい
  • デスクトップ はマウス操作が主体だから jQuery UI を使いたい
  • 上記を判断するには IE10 の User Agent を調べれば良さそう

検証結果

デスクトップ版/Metro UI版 における User-Agent の差異はほぼなかった。IE10 Release Preview の User Agent は以下になる。

OS デスクトップ版での検証結果 Metro UI版での検証結果
Windows 8 32bit版 User-Agent = Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0) User-Agent = Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
Windows 8 64bit版 User-Agent = Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0) User-Agent = Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)

Windows 8 64bit 版の IE10 では一部 User Agent に差異があるのが、Windows 8 32bit版に関しては、User Agent が完全に一致しており、IE10 がデスクトップ版 と Metro UI 版かを区別できない仕様になっている。
※7/13 追記 IE10 User Agent の挙動は「Metro UI か デスクトップ か」での判断でなく、「HWがタッチデバイス対応をしているか?」や「32bit, 64bit, ARM」等のハードウェア情報により異なるようだ。

検証用のコード

念のため、検証用コードを紹介する。今回は ASP.NET MVC を利用し、以下のコードを Controller に記載することでブラウザ上に User Agent を表示して確認を行った*1

  • HomeController.cs
namespace Mvc4App1.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewBag.Message = "User-Agent = " + Request.UserAgent;

            return View();
        }
    (中略)
    }

上記のコードを利用し、ブラウザ画面上に User Agent を表示した結果は以下となる。

*1:View側に直接 Razor 記法で書いても良かったかもしれないが…