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

Python

最終更新 2026/08/27

このガイドでは、Python SDKを使用してプロジェクトに接続する方法を説明します。

最新バージョン:v3.0.0

更新日:2023-10-07

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

注意

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

1. SDKの統合​

  1. pipでPython SDKを取得します
pip install ThinkingDataSdk

アップグレードコマンド:

pip install --upgrade ThinkingDataSdk
  1. Logbusのインストール

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

2. 初期化​

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

from tgasdk.sdk import *

consumer = TDLogConsumer("LOG_DIRECTORY", rotate_mode=TD_ROTATE_MODE.HOURLY, file_prefix="LOG_FILE_PREFIX")
te = TDAnalytics(consumer)

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

LOG_FILE_PREFIXはログファイル名のプレフィックスです。

3. よく使う機能​

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

3.1 イベントの送信​

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

distinct_id = "ABCDEF123456"
account_id = "TE10001"
properties = {
"#time": datetime.datetime.now(),
# このeventの発生時刻を設定します。設定しない場合は、デフォルトで現在時刻になります
"#ip": "192.168.1.1",
# ユーザーのIPを設定します。tdaはこのIPから都道府県・市区町村を自動的に解析します
# "#uuid":uuid.uuid1(),#任意。上記のenable_uuidスイッチがオンの場合は入力不要です
"Product_Name": "商品名",
"Price": 30,
"OrderId": "注文番号abc_123"
}
# イベントを送信します(アカウントIDとゲストIDを含む)
try:
te.track(distinct_id, account_id, "Payment", properties)
# ゲストIDのみを送信することもできます
# te.track(distinct_id = distinct_id, event_name = "Payment", properties = properties)
# またはアカウントIDのみを送信します
# te.track(account_id = account_id, event_name = "Payment", properties = properties)
except Exception as e:
# 例外処理
print(e)
  • イベント名は文字列型で、英字で始まり、数字、英字、アンダースコア"_"を含めることができます。最大長は50文字です。
  • Keyはそのプロパティの名前で、文字列型です。英字で始まり、数字、英字、アンダースコア "_" を含めることができます。最大長は50文字で、英字の大文字と小文字は区別されません。AEはすべて小文字に変換します
  • Valueはプロパティの値で、文字列、数値、ブール値、時間、オブジェクト、オブジェクトグループ、配列に対応しています

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

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

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

properties = {"user_name": "ABC"}
# ユーザープロパティを送信します。"user_name"の値は"ABC"です
try:
te.user_set(account_id="account_id", distinct_id="distinct_id", properties=properties)
except Exception as e:
# 例外処理
print(e)

3.3 データの送信​

TDLogConsumerを使用する場合、収集されたイベントはまずjson文字列に変換され、キャッシュ配列に追加されます。配列の要素数が設定された容量を超えた時点で、データがディスクに書き込まれます。デフォルトの容量上限は5件です。TDLogConsumerのコンストラクタでbuffer_sizeのサイズを設定できます。

業務シナリオによっては、データをすぐにAEサーバーへ送信したい場合があります。その場合はflush()インターフェースを呼び出します。なお、flush()を頻繁に呼び出すと、サービスのパフォーマンスが低下します。

te.flush();

3.4 SDKの終了​

te.close()

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

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

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

from tgasdk.sdk import *

# SDKを初期化
te = TDAnalytics(TDLogConsumer("LOG_DIRECTORY"))

# イベントを送信します。アカウントIDとゲストIDの両方を空にすることはできません
properties = {
"#time": datetime.datetime.now(), # このeventの発生時刻を設定します。設定しない場合は、デフォルトで現在時刻になります
"#ip": "192.168.1.1", # ユーザーのIPを設定します。tdaはこのIPから都道府県・市区町村を自動的に解析します
"Product_Name": "商品名"
}
try:
te.track("distinct_id", "account_id", "Payment", properties)
except Exception as e:
# 例外処理
print(e)

# ユーザープロパティを送信します。"user_name"の値は"ABC"です
user_properties = {"user_name": "ABC"}
try:
te.user_set(account_id="account_id", distinct_id="distinct_id", properties=user_properties)
except Exception as e:
# 例外処理
print(e)

# flushインターフェースを呼び出すと、データはすぐにファイルに書き込まれます。本番環境では、頻繁にflushを呼び出してIOやネットワークのオーバーヘッドが生じないよう注意してください
te.flush()
このページは役に立ちましたか?