---
title: "イベント"
slug: "events"
abstract: "xConnect Client APIを用いて、目標と検索イベントをインタラクションに追加する方法の例を含むイベントの概要。"
---
# イベント

イベントとは、ウェブページを閲覧したり、実店舗で購入したりするなど、やり取りの文脈で重要な出来事を指します。

イベントは最終的にSitecore.XConnect.Eventクラスを引き継ぎ、Interactionクラス上のEventsコレクションで表現されます。インタラクションには少なくとも1つのイベントが必要です。すべてのイベントはイベントモデル、イベント定義ID、タイムスタンプでトリガーされます。以下の例は、xConnectクライアントAPIを使ってインタラクションにGoalとSearchEventを追加する方法を示しています:

using Sitecore.XConnect;
using Sitecore.XConnect.Collection.Model;
using System;

namespace Documentation
{
 public class AddMultipleEvents
 {
 public async void ExampleAsync()
 {
 using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
 {
 try
 {
 var newContact = new Sitecore.XConnect.Contact();
 client.AddContact(newContact);

 Guid channelId = Guid.Parse("dee6a101-a5d7-4111-9dd0-c3ac18d78295");

 var interaction = new Sitecore.XConnect.Interaction(newContact, InteractionInitiator.Brand, channelId, "Mozilla/5.0 (Nintendo Switch; ShareApplet) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.5.9 NintendoBrowser/5.1.0.13341");

 // Search event has built-in definition GUID as there is
 // only one search event
 SearchEvent searchEvent = new SearchEvent(DateTime.UtcNow)
 {
 Keywords = "sitecore" // Event-specific property
 };

 // Goal instantiated with goal definition GUID as there are
 // multiple goals
 Guid goalId = Guid.Parse("2ee6a101-45d7-a111-9dd0-c3ac18d78295");
 Goal goal = new Goal(goalId, DateTime.UtcNow);

 interaction.Events.Add(searchEvent);
 interaction.Events.Add(goal);

 client.AddInteraction(interaction);

 await client.SubmitAsync();
 }
 catch (XdbExecutionException ex)
 {
 // Handle exception
 }
 }
 }
 }
}

xConnect Client APIを使ってイベントを扱う方法については、以下のトピックを参照してください。

-   [相互作用にイベントを追加する](https://doc.sitecore.com/xp/ja/developers/91/sitecore-experience-platform/add-interaction-events.html "Add interaction events")
-   [インタラクションイベントを取得](https://doc.sitecore.com/xp/ja/developers/91/sitecore-experience-platform/get-interaction-events.html "Get interaction events")
-   [イベントによる相互作用の検索](https://doc.sitecore.com/xp/ja/developers/91/sitecore-experience-platform/search-interactions.html "Search interactions")

## イベントの定義

イベントがトリガーされると、イベント定義IDがコンストラクタに渡されます。イベント定義IDは、Sitecore内のレポーティングコンテキストでイベントに文脈的な意味を与えるアイテムから得られます。イベント定義はマーケターによって管理され、イベント名、説明、分類などのプロパティが定義されます。以下の表は、利用可能なイベントの種類とSitecoreツリー内の位置を示しています:

定義

使用されるイベントモデル

経路

目標

Goal

/sitecore/system/マーケティングコントロールパネル/目標

成果

Outcome

/sitecore/system/マーケティングコントロールパネル/成果

一般的なイベント

Event\`\`PageViewEvent (システム) MVTestTriggered (システム) PersonalizationEvent (システム)

/sitecore/system/マーケティングコントロールパネル/イベント

ページイベント

EventDownloadEvent SearchEvent CampaignEvent

/sitecore/system/設定/アナリティクス/ページイベント

> !重要正しいイベント定義IDが正しいモデルで使用されていることを確認するのはあなたの責任です。Goalモデルとアウトカム定義IDを使うことは可能ですが、そうするとデータの報告に悪影響を及ぼします。

### 固定定義を持つイベント

以下のイベントは固定された定義項目を持ち、これはイベントモデルとSitecore内の定義項目と一対一の関係があることを意味します。

-   PageViewEvent:Event
-   CampaignEvent:Event
-   DownloadEvent:Event
-   SearchEvent:Event

以下の例では、SearchEventが固定されたEventDefinitionIdを定義し、それを基底Eventモデルに渡します。異なる定義IDに渡せる公開構造体はありません。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Sitecore.XConnect.Collection.Model
{
 public class SearchEvent : Event
 {
 public static readonly Guid EventDefinitionId = new Guid("0C179613-2073-41AB-992E-027D03D523BF");
 public string Keywords { get; set; }

 public SearchEvent(DateTime timestamp) : base(EventDefinitionId, timestamp)
 {
 }
 }
}

固定定義項目でイベントを作成する例は [カスタム結果](https://doc.sitecore.com/xp/ja/developers/91/sitecore-experience-platform/create-a-custom-outcome-model.html "Create a custom outcome model") を参照してください。

## イベントモデル

イベントモデルは、イベントがトリガーされた際に何が収集されるかを決定します。例えば、SearchEventモデルはKeywordsプロパティとして使用された検索語を表します。xConnectは以下のデフォルトイベントモデルを搭載しています:

-   Event
-   Goal:Event
-   Outcome:Event
-   CampaignEvent:Event
-   DownloadEvent:Event
-   SearchEvent:Event
-   PageViewEvent:Event (システムイベント)
-   PersonalizationEvent:Event (システムイベント)
-   MVTestTriggered (システムイベント)

> !注すべての目標、結果、ページイベントにモデルがあるわけではありません。専門モデルを持たないイベントは、基本Goal、Outcome、またはEventクラスを使ってトリガーしてください。

イベントモデルを扱う際には、以下の推奨される実践を念頭に置いてください:

-   目標と成果は、 Goal モデルや Outcome モデル、または継承型を用いてトリガーされなければなりません。
-   イベント定義IDが SearchEventのような専門モデルに関連付けられている場合、その定義ID他のモデルでは使用しないでください。
-   カスタムデータを取得したり特定のコンストラクタパラメータを強制したい場合は、独自のイベントモデルを作成しなければなりません。イベントモデルは Event、 Goal、または Outcomeを継承できます。

特にインタラクションデータを第三者にエクスポートする予定がある場合は、可能な限り意味のある名前を持つカスタムイベントモデルを使用してください。例えば、CarPurchaseOutcomeはOutcomeよりも文脈的な意味を持ちます。

> !重要EventクラスのData、DataKey、Text、CustomValuesプロパティに頼ってカスタムデータを保存しないでください。これらのプロパティはレガシー目的でのみ利用可能です。

## イベント属性

イベントや個々のイベント物件は、以下の属性で装飾することができます。

-   DONOTINDEX: この属性で装飾されたイベントやイベントプロパティはインデックス化されておらず、したがって検索できません。検索に興味がないデータ、例えばバイナリデータにはこの方法を使ってください。

## トリガーイベント

トラッカーの文脈では、トラッカーAPIを使ってイベントをトリガーする必要があります。セッション側では、イベントデータはxConnectイベントモデルにマッピングされ、xConnectにインタラクションとして提出されます。それ以外の文脈では、xConnect Client APIを直接使用してください。イベントのトリガーに関する詳細は以下のトピックを参照してください。

-   [xConnect Client APIを使ってイベントをトリガーします](https://doc.sitecore.com/xp/ja/developers/91/sitecore-experience-platform/add-interaction-events.html "Add interaction events")
-   [Tracker APIを使ってイベントをトリガーします](https://doc.sitecore.com/xp/ja/developers/91/sitecore-experience-platform/triggering-built-in-events.html "Triggering built-in events")