このページでは、メディアアプリのユーザー イベントについて説明します。ユーザー イベントの種類、要件、ユーザー イベントの種類の例などについて説明します。
メディア レコメンデーション アプリでは、ユーザー イベントの記録が必要です。メディア レコメンデーション アプリは、リアルタイムのユーザー イベントを使用してレコメンデーションを生成します。その他のアプリタイプでは、ユーザー イベントは必要ありません。
次の表に、ユーザー イベントをアップロードするアプリの種類を示します。
アプリの種類 | ユーザー イベントは必要ですか? |
---|---|
メディア レコメンデーション | ○ |
メディア検索 | ×(ただし強く推奨) |
一般的な推奨 | × |
一般的な検索 | ×(ただし強く推奨) |
ユーザー イベントの記録については、リアルタイム ユーザー イベントの記録をご覧ください。
ユーザー イベントタイプ
エンドユーザーがサイトを閲覧する際に、次のような種類のユーザー イベントを記録できます。
ユーザー イベント名 | ユーザーの操作 |
---|---|
view-category-page | [ホーム] > [テレビ] > [ドラマ]、[ホーム] > [映画] > [アクション] などのカテゴリページを表示します。 |
view-item | ドキュメントの詳細ページを表示します。 |
view-home-page | ホームページを表示します。 |
search | データストアを検索します。 |
media-play | メディア アイテムの再生ボタンをクリックします。 |
media-complete | メディア アイテムの再生を停止し、視聴を終了します。 |
UserEvent
オブジェクトの詳細については、UserEvent
API リファレンスをご覧ください。
メディアアプリのユーザー イベントの要件とベスト プラクティス
次の表に、メディア レコメンデーション アプリが使用するユーザー イベントタイプの要件とベスト プラクティスの一覧を示します。アプリが高品質の結果を生成できるように、ユーザー イベントがこれらの要件を満たしていることを確認します。
また、メディアアプリのレコメンデーション タイプについてもご覧ください。使用するレコメンデーション タイプと最適化目標に応じて必要なユーザー イベントのタイプを示しています。
メディア レコメンデーションに関するイベントタイプの優先度
次の表に、メディア レコメンデーションのユーザー イベントタイプの優先度を示します。メディア レコメンデーションを使用するには、一部のユーザー イベントが必要です。その他の設定は、成果を高めるために推奨されますが、必須ではありません。
優先度 | ユーザー イベント |
---|---|
メディア レコメンデーションを使用した最初のライブテストに必要 | |
時間とともにメディア レコメンデーションの結果の品質を向上させるうえで重要 |
メディア レコメンデーションの要件
メディア レコメンデーションアプリが高品質の結果を生成できるように、ユーザー イベントが次の要件を満たしていることを確認します。
イベントの種類 | 要件 | 影響 |
---|---|---|
すべてのイベント |
合成データまたは重複イベントを含めないでください。 |
合成イベントや重複イベントは結果の品質に悪影響を及ぼし、アプリのデプロイを妨げる可能性があります。イベントが重複すると、指標の値に誤りが生じる可能性があります。 |
取り込まれるイベントのタイプごとに 100 個以上の一意のユーザー 疑似 ID を含みます。 |
これにより、メディア レコメンデーション アプリは高品質な結果を生成するのに十分なデータを確保します。 |
|
ユーザー 疑似 ID は、イベントのインポートまたはイベントの記録全体で、またメディア レコメンデーション リクエストでも、まったく同じ形式にする必要があります。 |
ユーザーの疑似 ID に一貫した形式を使用すると、メディア レコメンデーション アプリは訪問者のパターンを正しく識別し、ユーザーの行動に基づいてより良い結果を提供できます。 |
|
すべてのドキュメントで |
|
|
イベントに含まれるドキュメントは、データストアに存在する必要があります。 |
未結合イベントの比率はできるだけ低くする必要があります。この比率が高いと、結果の品質に悪影響を与える可能性があります。 |
|
ユーザー イベントによっては、同じユーザー 疑似 ID を使用する必要があります。 |
有効な動作シーケンスの履歴を作成するには、メディア レコメンデーション アプリが同じユーザー 仮想 ID を持つ複数のイベントを参照できる必要があります。
たとえば、 |
|
view-item |
イベントごとに 1 つのドキュメントのみを含めます。 |
ドキュメントが存在しない場合、イベントは使用できません。複数のドキュメントが含まれている場合、イベントは不正な形式になり、使用できません。 |
media-play |
イベントごとに 1 つのドキュメントのみを含めます。 |
複数のドキュメントが含まれている場合、イベントは不正な形式になり、使用できません。 |
ユーザー イベントタイプの例とスキーマ
このセクションでは、メディア レコメンデーションでサポートされる各イベントタイプのデータ形式について説明します。
JavaScript Pixel の例が用意されています。BigQuery の場合、各タイプのテーブル スキーマ全体が用意されています。
すべてのユーザー イベントタイプでは、userId
は省略可能です。
次のことに注意してください。
tagIds
項目は、A/B テストを実行する場合にのみ必要です。attributionToken
項目は省略可能です。パフォーマンスを測定するために使用されます。メディア レコメンデーションのクリックから生成されたsearch
イベントとview-item
イベントには、イベントを生成したレコメンデーションにリンクするための属性トークンが必要です。
ユーザー イベント オブジェクトの詳細については、UserEvent
API リファレンス ドキュメントをご覧ください。
view-category-page
view-category-page
ユーザー イベントの形式は、次のとおりです。
最低限必要な view-category-page オブジェクト
次の例は、view-category-page
ユーザー イベント形式の必須項目のみを示しています。
通常、ページに関連付けられるカテゴリは 1 つのみですが、pageCategories
項目ではカテゴリ階層もサポートし、それをリストとして指定できます。
JavaScript Pixel
var user_event = { "eventType": "view-category-page", "userPseudoId": "user-pseudo-id", "eventTime": "2020-01-01T03:33:33.000001Z", "pageInfo": { "pageCategory": "category1 > category2" } };
BigQuery
このユーザー イベントタイプの完全な JSON スキーマです。BigQuery でこのユーザー イベント タイプのテーブルを作成する場合、このスキーマを指定します。
必須項目のモードが REQUIRED
または REPEATED
に設定されています。省略可能な項目のモードは NULLABLE
に設定されています。
BigQuery でイベントをインポートするには、eventTime
が必要です。eventTime
は、タイムスタンプ形式の文字列です。
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "userPseudoId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "userInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "userId", "type": "STRING", "mode": "NULLABLE" }, { "name": "userAgent", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "pageInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "pageviewId", "type": "STRING", "mode": "NULLABLE" }, { "name": "pageCategory", "type": "STRING", "mode": "NULLABLE" }, { "name": "uri", "type": "STRING", "mode": "NULLABLE" }, { "name": "referrerUri", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "attributionToken", "type": "STRING", "mode": "NULLABLE" }, { "name": "documents", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "id", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "tagIds", "type": "STRING", "mode": "REPEATED" }, { "name": "attributes", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "example_text_attribute", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "text", "type": "STRING", "mode": "REPEATED" } ] }, { "name": "example_number_attribute", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "numbers", "type": "NUMERIC", "mode": "REPEATED" } ] } ] } ]
view-item
view-item
ユーザー イベントのデータ形式は、次のとおりです。
最低限必要な view-item オブジェクト
次の例は、view-item
ユーザー イベント形式の必須項目のみを示しています。
ほとんどの場合、documents
には関連ドキュメントの詳細が含まれます。
JavaScript Pixel
var user_event = { "eventType": "view-item", "userPseudoId": "user-pseudo-id", "eventTime": "2020-01-01T03:33:33.000001Z", "documents": [{ "id": "document-id" }] };
BigQuery
このユーザー イベントタイプの完全な JSON スキーマです。BigQuery でこのユーザー イベント タイプのテーブルを作成する場合、このスキーマを指定します。
必須項目のモードが REQUIRED
または REPEATED
に設定されています。省略可能な項目のモードは NULLABLE
に設定されています。
BigQuery でイベントをインポートするには、eventTime
が必要です。eventTime
は、タイムスタンプ形式の文字列です。
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "userPseudoId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "userInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "userId", "type": "STRING", "mode": "NULLABLE" }, { "name": "userAgent", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "pageInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "pageviewId", "type": "STRING", "mode": "NULLABLE" }, { "name": "uri", "type": "STRING", "mode": "NULLABLE" }, { "name": "referrerUri", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "attributionToken", "type": "STRING", "mode": "NULLABLE" }, { "name": "documents", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "id", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "tagIds", "type": "STRING", "mode": "REPEATED" }, { "name": "attributes", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "example_text_attribute", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "text", "type": "STRING", "mode": "REPEATED" } ] }, { "name": "example_number_attribute", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "numbers", "type": "NUMERIC", "mode": "REPEATED" } ] } ] } ]
view-home-page
view-home-page
ユーザー イベントの形式は、次のとおりです。
最低限必要な view-home-page オブジェクト
次の例は、view-home-page
ユーザー イベント形式の必須項目のみを示しています。
JavaScript Pixel
var user_event = { "eventType": "view-home-page", "userPseudoId": "user-pseudo-id", "eventTime": "2020-01-01T03:33:33.000001Z", };
BigQuery
このユーザー イベントタイプの完全な JSON スキーマです。BigQuery でこのユーザー イベント タイプのテーブルを作成する場合、このスキーマを指定します。
必須項目のモードが REQUIRED
または REPEATED
に設定されています。省略可能な項目のモードは NULLABLE
に設定されています。
BigQuery でイベントをインポートするには、eventTime
が必要です。eventTime
は、タイムスタンプ形式の文字列です。
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "userPseudoId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "userInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "userId", "type": "STRING", "mode": "NULLABLE" }, { "name": "userAgent", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "pageInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "pageviewId", "type": "STRING", "mode": "NULLABLE" }, { "name": "uri", "type": "STRING", "mode": "NULLABLE" }, { "name": "referrerUri", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "attributionToken", "type": "STRING", "mode": "NULLABLE" }, { "name": "documents", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "id", "type": "STRING", "mode": "NULLABLE" }, { "name": "quantity", "type": "INT64", "mode": "NULLABLE" } ] }, { "name": "tagIds", "type": "STRING", "mode": "REPEATED" }, { "name": "attributes", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "example_text_attribute", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "text", "type": "STRING", "mode": "REPEATED" } ] }, { "name": "example_number_attribute", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "numbers", "type": "NUMERIC", "mode": "REPEATED" } ] } ] } ]
検索
search
ユーザー イベントの形式は、次のとおりです。
最低限必要な search オブジェクト
次の例は、search
ユーザー イベント形式の必須項目のみを示しています。
searchQuery
または pageCategory
フィールドの少なくとも 1 つは必須です。
ユーザーがテキストクエリを入力した検索イベントには
searchQuery
を指定します。ユーザーがテキスト クエリを入力するのではなく、ブラウジング(カテゴリをクリックする)によって興味のあるアイテムに移動した場合は、
pageCategory
を指定します。
documents
には、エンドユーザーに検索結果ページ内に表示されるドキュメント ID のリストを含める必要があります。
JavaScript Pixel
var user_event = { eventType: "search", userPseudoId: "user-pseudo-id", eventTime: "2020-01-01T03:33:33.000001Z", searchInfo: { searchQuery: "search-query", }, pageInfo: { pageCategory: "category1 > category2", }, documents: [ { id: "document-id1", }, { id: "document-id2", }, ] };
BigQuery
このユーザー イベントタイプの完全な JSON スキーマです。BigQuery でこのユーザー イベント タイプのテーブルを作成する場合、このスキーマを指定します。
必須項目のモードが REQUIRED
または REPEATED
に設定されています。省略可能な項目のモードは NULLABLE
に設定されています。
BigQuery でイベントをインポートするには、eventTime
が必要です。eventTime
は、タイムスタンプ形式の文字列です。
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "userPseudoId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "searchInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "searchQuery", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "pageInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "pageCategory", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "documents", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "id", "type": "STRING", "mode": "NULLABLE" } ] } ]
media-play
media-play
ユーザー イベントの形式は、次のとおりです。
最低限必要な media-play オブジェクト
次の例は、media-play
ユーザー イベント形式の必須項目のみを示しています。
JavaScript Pixel
var user_event = { "eventType": "media-play", "userPseudoId": "user-pseudo-id", "eventTime": "2020-01-01T03:33:33.000001Z", "documents": [ { "id": "document-id1" } ] };
BigQuery
このユーザー イベントタイプの完全な JSON スキーマです。BigQuery でこのユーザー イベント タイプのテーブルを作成する場合、このスキーマを指定します。
必須項目のモードが REQUIRED
または REPEATED
に設定されています。省略可能な項目のモードは NULLABLE
に設定されています。
BigQuery でイベントをインポートするには、eventTime
が必要です。eventTime
は、タイムスタンプ形式の文字列です。
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "userPseudoId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "userInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "userId", "type": "STRING", "mode": "NULLABLE" }, { "name": "userAgent", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "pageInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "pageviewId", "type": "STRING", "mode": "NULLABLE" }, { "name": "uri", "type": "STRING", "mode": "NULLABLE" }, { "name": "referrerUri", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "attributionToken", "type": "STRING", "mode": "NULLABLE" }, { "name": "documents", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "id", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "tagIds", "type": "STRING", "mode": "REPEATED" }, { "name": "attributes", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "example_text_attribute", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "text", "type": "STRING", "mode": "REPEATED" } ] }, { "name": "example_number_attribute", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "numbers", "type": "NUMERIC", "mode": "REPEATED" } ] } ] } ]
media-complete
media-complete
ユーザー イベントの形式は、次のとおりです。
最低限必要な media-complete オブジェクト
次の例は、media-complete
ユーザー イベント形式の必須項目のみを示しています。
JavaScript Pixel
var user_event = { "eventType": "media-complete", "userPseudoId": "user-pseudo-id", "eventTime": "2020-01-01T03:33:33.000001Z", "documents": [ { "id": "document-id1" } ], "mediaInfo": { "mediaProgressDuration": "65s", "mediaProgressPercentage": 1.2 } };
BigQuery
このユーザー イベントタイプの完全な JSON スキーマです。BigQuery でこのユーザー イベント タイプのテーブルを作成する場合、このスキーマを指定します。
必須項目のモードが REQUIRED
または REPEATED
に設定されています。省略可能な項目のモードは NULLABLE
に設定されています。
BigQuery でイベントをインポートするには、eventTime
が必要です。eventTime
は、タイムスタンプ形式の文字列です。
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "userPseudoId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "userInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "userId", "type": "STRING", "mode": "NULLABLE" }, { "name": "userAgent", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "pageInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "pageviewId", "type": "STRING", "mode": "NULLABLE" }, { "name": "uri", "type": "STRING", "mode": "NULLABLE" }, { "name": "referrerUri", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "attributionToken", "type": "STRING", "mode": "NULLABLE" }, { "name": "documents", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "id", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "tagIds", "type": "STRING", "mode": "REPEATED" }, { "name": "attributes", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "example_text_attribute", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "text", "type": "STRING", "mode": "REPEATED" } ] }, { "name": "example_number_attribute", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "numbers", "type": "NUMERIC", "mode": "REPEATED" } ] } ] }, { "name": "mediaInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "mediaProgressDuration", "type": "STRING", "mode": "NULLABLE" }, { "name": "mediaProgressPercentage", "type": "NUMERIC", "mode": "NULLABLE" } ] } ]
カスタム属性
ユーザー イベント用にカスタム属性と機能を追加できます。これにより、メディア レコメンデーションを使用するときに、向上した具体的な最適化案が得られます。カスタム属性を追加するには、ユーザー イベントを記録するときに attributes
を使用します。
取り込まれたユーザー イベントのカスタム属性を指定する場合は、レコメンデーション リクエストに関連付けるユーザー イベントにも含めることが重要です。カスタム属性の形式は、インポートされたイベントと、レコメンデーション リクエストで指定されたイベントの間で一貫している必要があります。これにより、メディア レコメンデーション アプリはこれらのカスタム属性を使用して品質を向上させることができます。
text
フィールドを使用してカスタム テキスト値を指定するか、numbers
フィールドを使用してカスタムの数値を指定します。
たとえば、ユーザー イベントを記録するリクエストの attributes
セクションを以下に示します。
attributes: { user_age: {text: ["teen", "young adult"]}, user_location: {text: ["CA"]}, user_zip: {numbers: [90210]} }
ユーザー情報について
userPseudoId
は一意のユーザー ID を表し、ユーザー イベントを記録する際に必要です。
ユーザー イベントを記録するときに表示されるユーザー情報(UserInfo
)には、userPseudoId
の値と userId
の値(使用可能な場合)が含まれます。userId
は省略可能で、ユーザーがサイトにログインするたびに、デバイス間で一意の永続的な識別子として使用できます。ユーザーの userId
を記録すると、メディア レコメンデーション アプリ は、モバイル デバイスやウェブブラウザなど、ユーザーが複数のデバイスで 1 人のユーザーに対してカスタマイズされた結果を生成できます。
タイムスタンプについて
ユーザー イベントを記録する際は、イベントが発生した正確なタイムスタンプを必ず含めるようにしてください。正確なタイムスタンプにより、イベントが正しい順序で保存されることが保証されます。タイムスタンプは、JavaScript Pixel を使用して収集されたイベントに対して自動的に記録されます。イベントをインポートする際は、RFC 3339 で指定されている形式で eventTime
フィールドにタイムスタンプを指定する必要があります。
次のステップ
- 詳しくは、ユーザー イベントを記録する方法をご覧ください。