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

Lua

最終更新 2026/10/03

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

最新バージョン:v2.0.1

更新日:2026-01-08

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

注意

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

1. SDKの統合​

  1. ソースコードをダウンロードし、ダウンロードしたThinkingDataSdk.luaファイルをプロジェクトのディレクトリに配置します
  2. luarocks管理ツールを使用してサードパーティライブラリをインストールします:
luarocks install uuid 0.3-1

# luasecライブラリのインストールにはOPENSSL_DIRのパスを指定する必要があります
luarocks install luasec OPENSSL_DIR=[PATH]

luarocks install lua-cjson
  1. Logbusのインストール

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

2. 初期化​

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

local tdAnalytics = require "ThinkingDataSdk"

local consumer = tdAnalytics.TDLogConsumer("LOG_DIRECTORY", tdAnalytics.LOG_RULE.HOUR, 200, 500)
local sdk = tdAnalytics(consumer)

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

3. よく使う機能​

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

3.1 イベントの送信​

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

--ゲストID"ABCDEFG123456789"を設定
local distinctId = "ABCDEFG123456789"
--アカウントID"AE_10001"を設定
local accountId = "AE_10001"
--イベントプロパティを設定
local properties = {}
--イベントの発生時刻を設定。設定しない場合は、デフォルトで現在時刻を使用します
properties["#time"] = os.date("%Y-%m-%d %H:%M:%S")

--ユーザーのIPアドレスを設定。AEシステムはIPアドレスからユーザーの地理位置情報を解析します。設定しない場合、デフォルトでは送信されません
properties["#ip"] = "192.168.1.1"

properties["Product_Name"] = "card"
properties["Price"] = 30
properties["OrderId"] = "abc_123"
--イベントをアップロード。ユーザーのゲストIDとアカウントIDを含みます。アカウントIDとゲストIDの順序に注意してください
sdk:track(accountId, distinctId, "payment", properties)
  • イベント名は文字列型で、英字で始まり、数字、英字、アンダースコア"_"を含めることができます。最大長は50文字です。
  • Keyはそのプロパティの名前で、文字列型です。英字で始まり、数字、英字、アンダースコア "_" を含めることができます。最大長は50文字で、英字の大文字と小文字は区別されません。AEはすべて小文字に変換します
  • Valueはプロパティの値で、文字列、数値、ブール値、時間、オブジェクト、オブジェクトグループ、配列に対応しています

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

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

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

--ゲストID"ABCDEFG123456789"を設定
local distinctId = "ABCDEFG123456789"
--アカウントID"AE_10001"を設定
local accountId = "AE_10001"

local userSetProperties = {}
userSetProperties["user_name"] = "ABC"
--ユーザープロパティをアップロード
sdk:userSet(accountId, distinctId, userSetProperties)
userSetProperties = {}
userSetProperties["user_name"] = "abc"
--ユーザープロパティを再度アップロード。この時点で"user_name"の値は"abc"に上書きされます
sdk:userSet(accountId, distinctId, userSetProperties)

3.3 データの送信​

TDLogConsumerを使用する場合、収集したイベントはキャッシュ配列に追加されます。配列要素の数が設定した容量を超えたときにのみ、データがディスクに書き込まれます。TDLogConsumerを初期化する際は、batchNumの値を明示的に渡す必要があります。

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

sdk:flush()

3.4 SDKの終了​

sdk:close()

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

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

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

local tdAnalytics = require "ThinkingDataSdk"

local consumer = tdAnalytics.TDLogConsumer("LOG_DIRECTORY", tdAnalytics.LOG_RULE.HOUR, 200, 500)
local sdk = tdAnalytics(consumer)

--ゲストID"ABCDEFG123456789"を設定
local distinctId = "ABCDEFG123456789"
--アカウントID"AE_10001"を設定
local accountId = "AE_10001"
--イベントプロパティを設定
local properties = {}
--イベントの発生時刻を設定。設定しない場合は、デフォルトで現在時刻を使用します
properties["#time"] = os.date("%Y-%m-%d %H:%M:%S")

--ユーザーのIPアドレスを設定。AEシステムはIPアドレスからユーザーの地理位置情報を解析します。設定しない場合、デフォルトでは送信されません
properties["#ip"] = "192.168.1.1"

properties["Product_Name"] = "card"
properties["Price"] = 30
properties["OrderId"] = "abc_123"
--イベントをアップロード。ユーザーのゲストIDとアカウントIDを含みます。アカウントIDとゲストIDの順序に注意してください
sdk:track(accountId, distinctId, "payment", properties)

local userSetProperties = {}
userSetProperties["user_name"] = "ABC"
--ユーザープロパティをアップロード
sdk:userSet(accountId, distinctId, userSetProperties)
userSetProperties = {}
userSetProperties["user_name"] = "abc"
--ユーザープロパティを再度アップロード。この時点で"user_name"の値は"abc"に上書きされます
sdk:userSet(accountId, distinctId, userSetProperties)
このページは役に立ちましたか?