NavigatorUAData.getHighEntropyValues()
======================================

**Experimental:** **これは実験的な機能です。**  
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

**`getHighEntropyValues()`** は `NavigatorUAData` インターフェイスのメソッドで、、ユーザーエージェントが返す *高エントロピー* 値を格納した辞書オブジェクトで解決される `Promise` を返し案す。

**メモ:** 「高エントロピー」「低エントロピー」という用語は、これらの値がブラウザーについて明らかにする情報の量を示します。
 プロパティとして返される値は、低エントロピーであり、ユーザーを特定する可能性は低いと判断されます。
 `NavigatorUAData.getHighEntropyValues()` が返す値は、より多くの情報を明らかにする可能性があります。
 そのため、これらの値は `Promise` によって取得され、ブラウザーがユーザーの許可を求めたり、他のチェックを行ったりする時間を確保することができます。


構文
--


```js
getHighEntropyValues(hints)
```

### 引数

`hints`

返すべきヒントを格納した配列で、 1 つまたは複数を指定します。

* `"architecture"`
* `"bitness"`
* `"model"`
* `"platformVersion"`
* `"uaFullVersion"` 
非推奨
* `"fullVersionList"`

### 返値

以下の値の一部またはすべてを含むオブジェクトに解決する `Promise` です（リクエストされたヒントに基づく）。

`brands`

 ブラウザーのブランドとそのバージョン (`NavigatorUAData.brands` が提供する情報と同じもの) を指定した `brand` と `version` を格納したオブジェクトの配列を返します。
 なお、この情報は `Sec-CH-UA` (en-US) ヘッダーでサーバーへ送ることができます（低エントロピークライアントヒント）。


`mobile`

 ユーザーエージェントがモバイル端末で動作している場合、 `true` を返します（`NavigatorUAData.mobile` が提供するのと同じ情報です）。
 なお、この情報は `Sec-CH-UA-Mobile` (en-US) ヘッダーでサーバーへ送ることができます（低エントロピークライアントヒント）。


`platform`

`"Windows"`のようにユーザーエージェントが動作しているプラットフォームを記述した文字列を返します（`NavigatorUAData.platform`が提供する情報と同じものです）。
 なお、この情報は `Sec-CH-UA-Platform` (en-US) ヘッダーでサーバーに送信できることができます（低エントロピークライアントヒント）。


`architecture`

 プラットフォームアーキテクチャを格納した文字列。例えば `"x86"` です。
 なお、この情報は、 `Sec-CH-UA-Arch` (en-US) ヘッダーでサーバーが明示的にリクエストされた後に、 `Accept-CH` へ送ることができることができます。


`bitness`

 アーキテクチャのビット数を格納した文字列。例えば `"32"` または `"64"` です。
 なお、この情報は、 `Accept-CH` ヘッダーでサーバーが明示的にリクエストした場合、 `Sec-CH-UA-Bitness` (en-US) ヘッダーでサーバーに送ることができます。


`model`

 モバイル端末のモデルを格納した文字列。例えば `"Pixel 2XL"` です。機器がモバイル端末でない場合、または機器のモデルが不明な場合は `model` は `""` になります。
 なお、この情報は、 `Accept-CH` ヘッダでサーバーが明示的にリクエストすれば、 `Sec-CH-UA-Model` (en-US) でサーバーに送信することができます。


`platformVersion`

 プラットフォームのバージョンを格納した文字列。プラットフォーム名自体は、常に低エントロピーのヒント `platform` として利用することができます。例えば `"10.0"` です。
 なお、この情報は、 `Accept-CH` ヘッダーでサーバーが明示的にリクエストすれば、 `Sec-CH-UA-Platform-Version` (en-US) ヘッダーでサーバーに送ることができます。


`uaFullVersion` 
非推奨

 完全なブラウザーバージョンを格納した文字列。例えば `"103.0.5060.134"` です。`fullVersionList` に取って代わられ、非推奨です。
 なお、この情報は、 `Accept-CH` ヘッダーでサーバーが明示的にリクエストした場合、 `Sec-CH-UA-Full-Version` (en-US) ヘッダーでサーバーに送ることができます。


`fullVersionList`

 オブジェクトの配列であり、プロパティ `"brand"` と `"version"` はそれぞれブラウザー名とフルバージョンを表す。
 例えば、 `{"brand": "Google Chrome", "version": "103.0.5060.134"}, {"brand": "Chromium", "version": "103.0.5060.134"}` です。
 オブジェクトによっては、サイトが固定されたブラウザーのリストに依存しないようにするため、意図的に無効な情報を格納している場合があることに注意してください。
 なお、この情報は、 `Accept-CH` ヘッダーでサーバーが明示的にリクエストした場合、 `Sec-CH-UA-Full-Version-List` (en-US) ヘッダーでサーバーに送ることができます。


### 例外

`NotAllowedError` `DOMException`

ユーザーエージェントが、リクエストされた `hints` の一つまたはそれ以上を返してはいけないと判断した場合に発生します。

例
-

 以下の例では、`getHighEntropyValues()` メソッドを使用して多くのヒントがリクエストされます。
 プロミスが解決すると、この情報がコンソールに表示されます。


```js
navigator.userAgentData
  .getHighEntropyValues([
    "architecture",
    "model",
    "platformVersion",
    "fullVersionList",
  ])
  .then((values) => console.log(values));
```

仕様書
---

| Specification |
| --- |
| User-Agent Client Hints # dom-navigatoruadata-gethighentropyvalues |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* これらの値は、 HTTP リクエストヘッダー経由でも利用できます。
    + 低エントロピーのクライアントヒントは自動的に送信されます。
        - `Sec-CH-UA` (en-US)
        - `Sec-CH-UA-Mobile` (en-US)
        - `Sec-CH-UA-Platform` (en-US)
    + サーバーは `Accept-CH` ヘッダーを使用して、以降のリクエストで高エントロピーのクライアントヒントを受け取るようにリクエストすることができます。
        - `Sec-CH-UA-Arch` (en-US)
        - `Sec-CH-UA-Bitness` (en-US)
        - `Sec-CH-UA-Full-Version` (en-US)
        - `Sec-CH-UA-Model` (en-US)
        - `Sec-CH-UA-Platform-Version` (en-US)