メインコンテンツまでスキップ

応用ガイド

最終更新 2026/10/03

1. イベントの送信​

SDKの初期化が完了したら、データのトラッキングを行い、ユーザーの行動情報を収集できます。通常は通常イベントで業務シナリオの要件を満たせますが、実際の業務シナリオに応じて、初回イベントや更新可能イベントなどを使用することもできます。

1.1 通常イベント​

trackを呼び出してイベントを送信できます。事前に整理したドキュメントに従って、イベントのプロパティと送信条件を設定することをお勧めします。ここでは、ユーザーが商品を購入する場合を例にします:

// イベントプロパティを設定
properties := map[string]interface{}{
"product_name": "商品名",
}
// イベント名がproduct_buyのイベントを送信。account_idとdistinct_idを同時に空にすることはできません
te.Track("account_id", "distinct_id", "product_buy", properties)

1.2 初回イベント​

初回イベントとは、デバイスまたはその他のディメンションのIDに対して、1回だけ記録されるイベントのことです。たとえば、あるデバイスでのアクティベーションイベントを記録したい場合は、初回イベントでデータを送信できます。

// 初回イベントを送信。イベント名はdevice_activation、first_check_idの値はfirst_event_flag
properties := map[string]interface{}{
"prop_string": "value",
}
err := te.TrackFirst("account_id", "distinct_id", "device_activation", "first_event_flag", properties)

注意:初回かどうかの検証はサーバー側で行われるため、初回イベントはデフォルトで1時間遅れて取り込まれます。

1.3 更新可能イベント​

更新可能イベントを使用すると、特定のシナリオでイベントデータを変更する必要がある場合に対応できます。更新可能イベントでは、そのイベントを識別するIDを指定し、更新可能イベントのオブジェクトを作成する際に渡す必要があります。AE管理画面は、イベント名とイベントIDに基づいて更新するデータを特定します。

// 更新可能なイベントを送信。イベント名はUPDATABLE_EVENTとします
// 送信後、イベントプロパティstatusは3、priceは100になります
properties := make(map[string]interface{})
properties["status"] = 3
properties["price"] = 100
err := te.TrackUpdate("account_id", "distinct_id", "UPDATABLE_EVENT", "test_event_id", properties)
propertiesNew := make(map[string]interface{})
propertiesNew["status"] = 5

// 送信後、イベントプロパティstatusは5に更新され、priceは変わりません
err = te.TrackUpdate("account_id", "distinct_id", "UPDATABLE_EVENT", "test_event_id", propertiesNew)

1.4 上書き可能イベント​

上書き可能イベントは更新可能イベントと似ていますが、上書き可能イベントでは最新のデータで過去のデータを完全に上書きする点が異なります。効果としては、前のデータを削除して最新のデータを格納するのと同じです。AE管理画面は、イベント名とイベントIDに基づいて更新するデータを特定します。

// 上書き可能なイベントを送信。イベント名はOVERWRITE_EVENT
// 送信後、イベントプロパティstatusは3、priceは100になります
properties := make(map[string]interface{})
properties["status"] = 3
properties["price"] = 100
err := te.TrackOverwrite("account_id", "distinct_id", "OVERWRITE_EVENT", "test_event_id", properties)

// 送信後、イベントプロパティstatusは5に更新され、priceプロパティは削除されます
propertiesNew := make(map[string]interface{})
propertiesNew["status"] = 5
err = te.TrackOverwrite("account_id", "distinct_id", "OVERWRITE_EVENT", "test_event_id", propertiesNew)

2. ユーザープロパティ​

AEプラットフォームでは、次のユーザープロパティ設定APIに対応しています:UserSet、UserSetOnce、UserAdd、UserDelete、UserUnset、UserAppend、UserUniqAppend。

2.1 UserSet​

一般的なユーザープロパティは、UserSetを呼び出して設定できます。このインターフェースで送信したプロパティは、既存のプロパティ値を上書きします。そのユーザープロパティが以前に存在しない場合は新しく作成され、タイプは渡されたプロパティのタイプと同じになります。ここでは、ユーザー名の設定を例にします:

//この時点でuserNameはTA
err := te.UserSet("account_id", "distinct_id", map[string]interface{}{
"user_name": "TA",
})
//この時点でuserNameはAE
err = te.UserSet("account_id", "distinct_id", map[string]interface{}{
"user_name": "AE",
})

2.2 UserSetOnce​

送信するユーザープロパティを一度だけ設定すればよい場合は、UserSetOnceを呼び出して設定できます。そのプロパティにすでに値がある場合、この情報は無視されます。ここでもユーザー名の設定を例にします:

//first_payment_timeは2018-01-01 01:23:45.678
err := te.UserSetOnce("account_id", "distinct_id", map[string]interface{}{
"first_payment_time":"2018-01-01 01:23:45.678",
})

//first_payment_timeは2018-01-01 01:23:45.678のまま
err = te.UserSetOnce("account_id", "distinct_id", map[string]interface{}{
"first_payment_time":"2018-12-31 01:23:45.678",
})

2.3 UserAdd​

数値型のプロパティを送信する場合は、UserAddを呼び出してそのプロパティを累積加算できます。そのプロパティがまだ設定されていない場合は、0を代入してから計算します。負の値を渡すこともでき、その場合は減算と同じになります。ここでは、累積課金額を例にします:

//ユーザープロパティを送信。この時点で"total_revenue"の値は30
err := te.UserAdd("account_id", "distinct_id", map[string]interface{}{
"total_revenue":30,
})
//再度ユーザープロパティを送信。この時点で"total_revenue"の値は累計で678になります
err = te.UserAdd("account_id", "distinct_id", map[string]interface{}{
"total_revenue":648,
})

設定するプロパティのkeyは文字列で、Valueには数値のみ指定できます。

2.4 UserAppend​

UserAppendを呼び出して、配列型のユーザープロパティに要素を追加できます。

//この時点でuser_listのプロパティ値は["apple","ball"]
err := te.UserAppend("account_id", "distinct_id", map[string]interface{}{
"user_list": []string{"apple", "ball"},
})

2.5 UserUniqAppend​

v1.6.0から、UserUniqAppendを呼び出して配列型のユーザープロパティに要素を追加できます。UserUniqAppendインターフェースを呼び出すと、追加するユーザープロパティの重複が除去されます。UserAppendインターフェースは重複を除去しないため、ユーザープロパティに重複が存在する場合があります。

//in this case, the property value of user_list is ["apple","ball"]
err := te.UserAppend("account_id", "distinct_id", map[string]interface{}{
"user_list": []string{"apple", "ball"},
})
//in this case, the property value of user_list is ["apple","apple","ball","cube"]
err = te.UserAppend("account_id", "distinct_id", map[string]interface{}{
"user_list": []string{"apple", "cube"},
})
//in this case, the property value of user_list is ["apple","ball","cube"]
err = te.UserUniqAppend("account_id", "distinct_id", map[string]interface{}{
"user_list": []string{"apple", "cube"},
})

2.6 UserUnset​

ユーザーのユーザープロパティ値をクリアする場合は、UserUnsetを呼び出して指定したプロパティをクリアできます。そのプロパティがまだクラスターで作成されていない場合、UserUnsetはそのプロパティを作成しません

// あるユーザーの特定のユーザープロパティをクリアします。パラメータにプロパティ名を渡します
err := te.UserUnset("account_id","distinct_id", property_name)

UserUnset:に渡す値は、クリアするプロパティのKeyです。

2.7 UserDelete​

あるユーザーを削除する場合は、UserDeleteを呼び出してそのユーザーを削除できます。削除後はそのユーザーのユーザープロパティを照会できなくなりますが、そのユーザーが発生させたイベントは引き続き照会できます。この操作は元に戻せない結果をもたらす可能性があるため、慎重に使用してください

err := te.UserDelete("account_id", "distinct_id")

3. その他の機能​

3.1 BatchConsumer​

注意

データ量が多すぎる場合やネットワークに異常がある場合は、データが失われるおそれがあるため、本番環境での使用はお勧めしません

データをバッチでリアルタイムにAEサーバーへ送信します。転送ツールと組み合わせる必要はありません。

consumer, err := thinkingdata.NewBatchConsumer("SERVER_URL", "APP_ID")
te := thinkingdata.New(consumer)

パラメータの説明:

  • APPID: プロジェクトのAPPIDです。AE管理画面の「プロジェクト管理」ページで取得できます

  • SERVER_URL: データの送信先URL

    • クラウドサービスをご利用の場合は、次を入力します: https://global-receiver-ta.thinkingdata.cn
    • プライベートデプロイ版をご利用の場合は、データ収集アドレスにドメインをバインドし、HTTPS証明書を設定してください:https://データ収集アドレスにバインドしたドメイン
このページは役に立ちましたか?