---
title: "UUIDを使ってサイト訪問者を追跡する"
slug: "using-a-uuid-to-track-site-visitors"
abstract: "UUIDを通じてサイト訪問者を追跡する重要な理由を説明し、その方法のコードサンプルを提供します。"
---
# UUIDを使ってサイト訪問者を追跡する

Sitecore Search APIに連絡する際は、各サイト訪問者ごとにユニバーサルユニーク識別子(uuid)を作成して送信することをお勧めします。 uuidは、メールアドレスや会員名IDなどの個人識別情報(PII)を含まない、固有のユーザー IDです。Sitecore Searchはuuidを使って複数のセッションにまたがるリクエストを訪問者に紐付け、パーソナライズされた検索結果を提供し、正確な分析を生成しています。

Sitecore Search、ハイフンで区切られた7部構成のUUIDを作成する必要があります。形式は以下の通りです。

<part1>-<part2>-<part3>-<part4>-<part5>-<part6>-<part7>

各部品は以下の通りです:

-   <part1> これは定数、つまりドメインIDです。ドメイン名のドロップダウンリストで、SearchでドメインIDを確認できます。例えば、 159271561。
-   <part2><part5>は4部構成の弦です。長さの要件はありません。シンプルさと後方互換性のために、ドメイン内のすべての訪問者でこれらを一定に保つことを強くお勧めします。例としてはy-d-7-nやa-b-c-dがあります。
-   <part6> はサイト訪問者を一意に識別するための少なくとも20文字のランダムな英数字文字列です。例えば、 f5tdhddqwvywv7b9g2vy。
-   <part7> はUUID作成時のタイムスタンプ(ミリ秒単位)です。例えば、 1664852644904。

以下はサンプルuuid: 159271561-a-b-c-d-f5tdhddqwvywv7b9g2vy-1664852644904

> !注カスタムUUIDが上記の形式に従わない場合は、カスタムのフリーフォームIDがSearchリクエストでcontext.user.uuidではなく、context.user.user\_idで渡されることを確認してください。

例えば、以下のシナリオでuuidを作成して永続化したい場合です。

-   クッキーを使っています。
-   UUIDをクッキーに保存したいのです。
-   スクリプト内でSearchドメインIDを使ってUUIDを生成します。

このサンプルコードのスニペットはUUIDの生成方法を示しています:

const generateUUID = (domainId) => {
const uuidx = 'xx-xx-4x-1p-'; // pattern of prefix to user id
 uuid = uuidx.replace(/x
 /g, () => digit2string((Math.random() \* 36) | 0));
 for (let i = 0; i < 5; i++) {
 uuid += ('0000' + ((Math.random() \* 1679615) | 0).toString(36)).slice(-4);
 }
 let value = domainId;
 value += '-' + uid + '-' + Date.now();
 return value;
}

const getDomainId = () => {
 let uuid = getCookie('uuid');
 if (uuid) {
 return uuid;
 }
 return generateUUID('<Fill this with your Search domain ID>')

}

このサンプルコードのスニペットは、クッキー内でUUIDを永続化する方法を示しています:

/\*\*
 \* @description: Sets a cookie on the browser. Refer to https://www.w3schools.com/js/js\_cookies.asp
 \* @param {string} cname: Cookie name
 \* @param {string} cvalue: Cookie value
 \* @param {number} exdays: Expiry date in days
 \*/
function setCookie(cname, cvalue, exdays) {
 const d = new Date();
 d.setTime(d.getTime() + (exdays\*24\*60\*60\*1000));
 let expires = "expires="+ d.toUTCString();
 document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
/\*\*
 \* @description: Gets a cookie already in browser. Returns empty if not exists.
 \* Refer to https://www.w3schools.com/js/js\_cookies.asp
 \* @param cname
 \* @returns {string}
 \*/
function getCookie(cname) {
 let name = cname + "=";
 let decodedCookie = decodeURIComponent(document.cookie);
 let ca = decodedCookie.split(';');
 for(let i = 0; i <ca.length; i++) {
 let c = cai
 ;
 while (c.charAt(0) === ' ') {
 c = c.substring(1);
 }
 if (c.indexOf(name) === 0) {
 return c.substring(name.length, c.length);
 }
 }
 return undefined;
}
/\*\*
 \* @description: Converts a digit to the string that belongs to.
 \* @param {number} i: Number to convert
 \* @returns {string}
 \*/
function digit2string(i) {
 // 0-9 -> 0-9; 10-35 > a-z; 36-61 -> A-Z
 return String.fromCharCode(i < 10 ? i + 48 : i < 36 ? i + 87 : i + 29);
}