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

Golang

最終更新 2026/10/03
ヒント

接続する前に、まず接続前の準備をお読みください。

最新バージョン:v2.3.0

更新日:2026-03-17

リソースのダウンロード:ソースコード

注意

このドキュメントはv2.0.0以降のバージョンに適用されます。以前のバージョンについては、Go SDK接続ガイド(V1)を参照してください

1. SDKの統合​

  1. SDKを統合する方法は2つあります:

方法1: 次のコマンドを実行して、最新版のGolang SDKを取得します

# SDKを取得
go get github.com/ThinkingDataAnalytics/go-sdk/v2

# SDKを更新
go get -u github.com/ThinkingDataAnalytics/go-sdk/v2

方法2: Moduleモード

//コードファイルの先頭でthinkingdataをインポート
import "github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata"
# 最新のSDKモジュールを取得
go mod tidy
  1. LogBusのインストール

SDK+LogBusの形式でサーバー側のデータの収集と送信を行うことをお勧めします。次のドキュメントを参考に、Logbusをインストールしてください:LogBus使用ガイド

2. 初期化​

SDKの初期化のサンプルコードは次のとおりです:

// LogConfig設定ファイルを作成
config := thinkingdata.TDLogConsumerConfig {
FileNamePrefix: "test_prefix", // log file prefix
Directory: "LOG_DIRECTORY", // イベント収集のファイルパス
}
// logConsumerを初期化
consumer, _ := thinkingdata.NewLogConsumerWithConfig(config)
// teオブジェクトを作成
te := thinkingdata.New(consumer)

LOG_DIRECTORYは、ローカルに書き込むフォルダーのパスです。LogBusの監視フォルダーのパスをこのパスに設定するだけで、LogBusでデータを監視して送信できます

3. よく使う機能​

ゲストIDとアカウントIDを正しく紐付けるため、ゲーム内でゲストIDとアカウントIDの両方を使用する場合は、この2つのIDを同時に送信することを強くお勧めします。そうしないと、アカウントが一致せず、ユーザーが重複してカウントされる可能性があります。具体的なIDの紐付けルールについては、ユーザー識別ルールの章を参照してください。

3.1 イベントの送信​

trackを呼び出してイベントを送信できます。事前に整理したドキュメントに従って、イベントのプロパティと送信条件を設定することをお勧めします。イベントを送信するサンプルコードは次のとおりです:

accountId := "te_account_id"
distinctId := "te_distinct_id"//accountIdとdistinctIdを両方とも空にすることはできません
properties := map[string]interface{}{
//ユーザーのIPアドレスを設定。AEシステムはIPアドレスからユーザーの地理位置情報を解析します
"#ip": "123.123.123.123",
"channel": "te", // 文字列
"age": 1, // 数値
"is_success": true, // ブール値
"birthday": time.Now(), // 時間
// オブジェクト
"object": map[string]interface{}{
"key": "value",
},
//オブジェクトグループ
"objectArr": []interface{}{
map[string]interface{}{
"key": "value",
},
},
"arr": []string{"value"}, // 配列
}
// trackイベント
err := te.Track(accountId, distinctId, "payment", properties)
  • イベント名は文字列型で、英字で始まり、数字、英字、アンダースコア"_"を含めることができます。最大長は50文字です。
  • Keyはそのプロパティの名前で、文字列型です。英字で始まり、数字、英字、アンダースコア "_" を含めることができます。最大長は50文字で、英字の大文字と小文字は区別されません。AEはすべて小文字に変換します
  • Valueはプロパティの値で、文字列、数値、ブール値、時間、オブジェクト、オブジェクトグループ、配列に対応しています

ユーザープロパティの要件は、イベントプロパティと同じです

3.2 ユーザープロパティの設定​

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

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

3.3 データの送信​

TDLogConsumerを使用する場合、SDKは収集したデータをリアルタイムでディスクに書き込みます。

TDAnalyticsオブジェクトのFlush()メソッドは、ファイルシステムのデフォルトのメモリキャッシュをリアルタイムにディスクへ同期します。通常、Flush()メソッドを手動で呼び出す必要はありません。

3.4 SDKの終了​

// SDKを閉じて終了
te.Close()

SDKを終了します。キャッシュ内のデータが失われないよう、サーバーをシャットダウンする前にこのインターフェースを呼び出してください

4. ベストプラクティス​

次のサンプルコードには、上記のすべての操作が含まれています。次の手順で使用することをお勧めします:

// LogConfig設定ファイルを作成
config := thinkingdata.TDLogConsumerConfig {
Directory: "./log_directory", // イベント収集のファイルパス
}
// logConsumerを初期化
consumer, _ := thinkingdata.NewLogConsumerWithConfig(config)
// teオブジェクトを作成
te := thinkingdata.New(consumer)

accountId := "te_account_id"
distinctId := "te_distinct_id"//accountIdとdistinctIdを両方とも空にすることはできません
properties := map[string]interface{}{
//ユーザーのIPアドレスを設定。AEシステムはIPアドレスからユーザーの地理位置情報を解析します
"#ip": "123.123.123.123",
"channel": "te", // 文字列
"age": 1, // 数値
"isSuccess": true, // ブール値
"birthday": time.Now(), // 時間
// オブジェクト
"object": map[string]interface{}{
"key": "value",
},
//オブジェクトグループ
"objectArr": []interface{}{
map[string]interface{}{
"key": "value",
},
},
"arr": []string{"value"}, // 配列
}
// イベントを送信
err := te.Track(accountId, distinctId, "payment", properties)
if err != nil {
fmt.Println(err)
}
//ユーザープロパティを設定
err = te.UserSet("accountId", "distinctId", map[string]interface{}{
"user_name": "AE",
})
if err != nil {
fmt.Println(err)
}
このページは役に立ちましたか?