Navigator.userAgentDataを使いたい

現在、検討が進められているUA-CHですが、導入にあまり乗り気では無いFirefoxが、
先日(6月)、Navigator.userAgentData実装のトラッキングステータスを “UNCONFIRMED” から “New” へ移行させました。

1750143 – Implement Navigator.userAgentData
https://bugzilla.mozilla.org/show_bug.cgi?id=1750143

これにより、少なくともuserAgentDataのプロトタイプが実装される可能性が少し高まったのではないかと考えています。実際の製品版への実装時期は未定。優先度も高くないため、
完全に取り下げられる場合もあり得る状況ですが、standards-positionsの議論を見ている限りでは、ユーザーエージェントの情報を構造化することについては肯定的なところもあるように見えます。

Navigator.userAgentDataが使えると何が嬉しいのか。

User-Agentの解析というと、これまでは以下のような文字列を解析していました。

Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Mobile Safari/537.36 EdgA/90.0.818.46

構造化されたuserAgentDataであれば、スマートフォンやタブレットの判定がこれで済みます。

const isMobile = navigator.userAgentData.mobile;

他にも、以下のような構造でデータが取得できます。

{
  "brands": [
    {
      "brand": "Chromium",
      "version":"91"
    },
    {
      "brand": "Microsoft Edge",
      "version":"91"
    },
    {
      "brand": "GREASE",
      "version":"99"
    }
  ],
  "mobile": false 
}

// https://docs.microsoft.com/ja-jp/microsoft-edge/web-platform/user-agent-guidance#user-agent-client-hints-javascript-api

特定の端末やブラウザの判定、対応がこれまで以上にやり易くなりそうです。
UA-CH自体とは無関係に実装して欲しい機能であることだなぁというところです。

ところで、炎暑酷暑のみぎりではありますが、Safari様におかれましてはご健勝でしょうか。userAgentの文字列は凍結するのかどうかどっちなんでしょうか。パワーでしょうか。
Push APIは、来年ようやく対応されるとのこと。おめでとうございますありがとうございます。

暑熱耐え難き時節、皆様夏風邪など召されませぬようご自愛ください。

Related Post