# JavaScript SDK Version 3.1について

JavaScript SDK v3.1から、セキュリティを向上させ、ingestionのボトルネックを排除するために、新しいingestion endpointがサポートされています。この新しいendpointを使用することで、以下の拡張機能と変更が導入されます:

* [表示される変更](/ja/products/customer-data-platform/integration-hub/streaming/td-javascript-sdk/about-javascript-sdk-version-3-1#visible-changes)
* [Treasure Data JavaScript SDK Version 3.1のログパラメータ](/ja/products/customer-data-platform/integration-hub/streaming/td-javascript-sdk/about-javascript-sdk-version-3-1#treasure-data-javascript-sdk-version-31-log-parameters)
* [新しいendpointの使用方法](/ja/products/customer-data-platform/integration-hub/streaming/td-javascript-sdk/about-javascript-sdk-version-3-1#how-to-use-a-new-endpoint)
* [FAQ](/ja/products/customer-data-platform/integration-hub/streaming/td-javascript-sdk/about-javascript-sdk-version-3-1#faq)
* [制限事項と変更された動作](/ja/products/customer-data-platform/integration-hub/streaming/td-javascript-sdk/about-javascript-sdk-version-3-1#limitations--changed-behavior)


# 表示される変更

* これらの値は入力されなくなります。顧客は**td_user_agent**からTrinoおよびHiveのTD_PARSE_AGENT関数を使用してそれらを取得する必要があります:
* **td_browser**: クライアントbrowser
  * **td_browser_version**: クライアントbrowserバージョン
  * **td_os**: クライアントoperating system
  * **td_os_version**: クライアントoperating systemバージョン
  * 注: **td_user_agent**は、*navigator.userAgent* APIを介してJavaScriptを使用して入力されます
* **JSSDK/version**が**td_user_agent**プロパティの末尾に追加されます
  * すなわち、`td_user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36;JSSDK/3.1.1"`
* 新しいendpointは、requestが受信されるとAPIKEYを検証します。APIKEYが無効な場合、即座に401エラーを返します。
  * `{"code":401,"message":"Credentials are required to access this resource."}`


# Treasure Data JavaScript SDK Version 3.1のログパラメータ

TD JS SDKは、trackPageview関数を使用して以下のパラメータをログに記録します。

| **パラメータ** | **説明** | **デフォルト** |
|  --- | --- | --- |
| **td_version** | td-js-sdkのバージョン | X |
| **td_client_id** | クライアントのuuid | NO |
| **td_charset** | 文字セット | X |
| **td_description** | descriptionメタタグ | X |
| **td_language** | ブラウザ言語 | X |
| **td_color** | 画面のcolor depth | X |
| **td_screen** | 画面解像度 | X |
| **td_viewport** | viewportサイズ | X |
| **td_title** | ドキュメントタイトル | X |
| **td_url** | ドキュメントURL | X |
| **td_user_agent** | ブラウザuser agent | X |
| **td_platform** | ブラウザplatform | X |
| **td_host** | ドキュメントhost | X |
| **td_path** | ドキュメントpathname | X |
| **td_referrer** | ドキュメントreferrer | X |
| **td_ip** | リクエストIP(server) | NO |
| **td_browser** | クライアントbrowser(server) | X |
| **td_browser_version** | クライアントbrowserバージョン(server) | X |
| **td_os** | クライアントoperating system(server) | X |
| **td_os_version** | クライアントoperating systemバージョン(server) | X |
| **td_global_id** | 3rd party cookie | NO |
| **td_ssc_id** | Server Side Cookie | NO |


追跡されるデフォルトパラメータには、グローバルなプライバシー法への準拠を確保するために**td_client_id**、**td.ip**、および**td_global_id**が含まれていません。td.setコマンドを呼び出すことで有効にできます。

# 新しいendpointの使用方法

新しいJavaScript endpointをオプトインするための新しいオプションuseNewJavaScriptEndpointを導入します。これにはtrueまたはfalse値があります。このオプションを有効にする場合は、新しいendpointを指すようにhost設定も変更する必要があります。

host設定は、使用する環境に応じて以下の値を持つ必要があります:

* AP02リージョン: **[ap02.records.in.treasuredata.com](http://ap02.records.in.treasuredata.com)**
* Tokyoリージョン: **[ap01.records.in.treasuredata.com](http://ap01.records.in.treasuredata.com)**
* USリージョン: **[us01.records.in.treasuredata.com](http://us01.records.in.treasuredata.com)**
* EU01リージョン: **[eu01.records.in.treasuredata.com](http://eu01.records.in.treasuredata.com/)**


_`useNewJavaScriptEndpoint`_を`false`に設定するか、設定しないことでこの機能をオプトアウトする場合は、`host`を古い設定に更新してください。


```javascript
var td = new Treasure({
  database: 'foo',
  writeKey: 'your_write_only_key',
  useNewJavaScriptEndpoint: true,
  host: 'us01.records.in.treasuredata.com'
});
```

# FAQ

* 以前のバージョンでサポートされている既存の関数を使用できますか?
  * はい。機能は現状のままです。
* queryでtd_browser、td_browser_version、td_os、td_os_versionを取得するにはどうすればよいですか?



```sql
-- Trino
-- element_atはkeyが欠落している場合でも処理できます。
SELECT
  element_at(
    td_parse_agent(td_user_agent) ,
    'name'
  ) AS td_browser,
  element_at(
    td_parse_agent(td_user_agent) ,
    'version'
  ) AS td_browser_version,
  element_at(
    td_parse_agent(td_user_agent) ,
    'os'
  ) AS td_os,
  element_at(
    td_parse_agent(td_user_agent) ,
    'os_version'
  ) AS td_os_version
FROM
  web_access

  -- OR, 以下はHiveとTrinoの両方で機能します
  SELECT
    td_parse_agent(td_user_agent) ['name'] AS td_browser,
    td_parse_agent(td_user_agent) ['version'] AS td_browser_version,
    td_parse_agent(td_user_agent) ['os'] AS td_os,
    td_parse_agent(td_user_agent) ['os_version'] AS td_os_version
  FROM
    web_access
```

# 制限事項と変更された動作

Real-time segmentationを使用するには、Backendからのルーティング有効化が必要です。Treasure サポートに連絡して、ルーティングを有効にするアカウント、database、tableをお知らせください。バックエンドから実行できます。将来のリリースでこの制限を削除する予定です。