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

Erlang

最終更新 2026/10/05

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

ヒント

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

最新バージョン:v2.0.0

更新日:2023-10-08

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

注意

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

1. SDKの統合​

  1. プロジェクトにrebar3環境が導入されている必要があります。
  2. rebar.configファイルを編集し、thinkingdata_analytics SDKへの参照を追加します。
{erl_opts, [debug_info,
%% lagerライブラリを使用するために必要なパラメーター
{parse_transform, lager_transform},
%% ここで拡張sinkを宣言する必要があります。sinkが複数ある場合は次のように記述してください:[ta_logger, ta_logger_xxxx]
{lager_extra_sinks, [ta_logger]}
]}.

{deps, [
%% ThinkingData SDKを追加
{thinkingdata_analytics, {git, "https://github.com/ThinkingDataAnalytics/erlang-sdk.git", {tag, "v2.0.0"}}}
]}.

{shell, [
%% 設定ファイルを有効化
{config, "config/example_sys.config"},
{apps, [app_name]}
]}.

ヒント:SDKディレクトリにサンプルファイルexample_sys.configがあるので、設定例として参考にできます。

  1. 次のコマンドを実行します:
rebar3 compile
  1. プロジェクトの設定ファイル(例:example_sys.config)を編集します。設定ファイルにlagerライブラリの設定を追加します。主な内容は、ThinkingData SDK専用のsink:ta_logger_lager_eventの追加です。マルチインスタンスで異なるログファイルに書き込む場合は、ほかのsinkも追加する必要があります。
[
%% lagerログライブラリの設定
{lager, [
{colored, true},
{log_root, "./log"}, %% システムの実行中に生成されるログの保存パス
%% ここでThinkingData SDK専用のsinkを1つ追加します。名前はta_logger_lager_eventで固定です
{extra_sinks,
[
{ta_logger_lager_event,
[{handlers, [
{lager_file_backend, [
{file, "LOG_DIRECTORY"}, %% 収集データのファイルパスと名前を設定
{level, info},
{formatter, lager_default_formatter},
{formatter_config, [message, "\n"]},
{size, 10485760}, %% 1ファイルあたりの分割サイズ10Mb
{rotator, td_lager_rotator} %% カスタムログローテーション
]}]},
{async_threshold, 500},
{async_threshold_window, 50}
]
}]
}
]
}
].

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

  1. アプリプロジェクトの設定ファイルで起動パラメーターを設定します。xxxx.app.srcファイルに必要な起動項目を追加します。
{application, app_name,
[{description, "An OTP application"},
{vsn, "0.1.0"},
{registered, []},
{mod, {app_name_app, []}},
{applications,
[kernel,
stdlib,
jsone, %% ここに起動項目を追加
lager %% ここに起動項目を追加
]},
{env,[]},
{modules, []},

{licenses, ["Apache-2.0"]},
{links, []}
]}.
  1. SDKを使用します:
%% A lager sink is provided by default: 'ta_logger'. You could add your own sink
Consumer = td_log_consumer:init_with_logger(fun(E) -> ta_logger:info(E) end),
%% init SDK with consumer
TE_SDK = td_analytics:init_with_consumer(Consumer),
ヒント

Windowsプラットフォームでの注意事項:管理者権限でコマンドラインターミナルを開いてプロジェクトを実行する必要があります。そうしないと、データの書き込みエラーが発生します。

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

2. 初期化​

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

%% A lager sink is provided by default: 'ta_logger'. You could add your own sink
Consumer = td_log_consumer:init_with_logger(fun(E) -> ta_logger:info(E) end),
%% init SDK with consumer
TE_SDK = td_analytics:init_with_consumer(Consumer),

3. よく使う機能​

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

3.1 イベントの送信​

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

%% 注意:account_idとdistinct_idの少なくとも一方を設定する必要があります
%% ユーザーのIPアドレスを設定。AEシステムはIPアドレスからユーザーの地理位置情報を解析します。設定しない場合、デフォルトでは送信されません
%% イベントの発生時刻を設定。設定しない場合、デフォルトで現在の時刻が使用されます。注意:#timeのタイプはtimestamp()タイプである必要があります

%% イベントを送信
td_analytics:track_instance(TE_SDK, "account_id_Erlang", "distinct_logbus", "ViewProduct", #{"#ip" => "192.168.1.1", "#time" => os:timestamp(), "key_1" => "🚓🦽🦼🚲🚜🚜🦽", "key_2" => 2.2, "key_array" => ["🚌", "🏍", "😚😊"]}),
  • イベント名は文字列型で、英字で始まり、数字、英字、アンダースコア"_"を含めることができます。最大長は50文字です。
  • Keyはそのプロパティの名前で、文字列型です。英字で始まり、数字、英字、アンダースコア "_" を含めることができます。最大長は50文字で、英字の大文字と小文字は区別されません。AEはすべて小文字に変換します
  • Valueはプロパティの値で、文字列、数値、ブール値、時間、オブジェクト、オブジェクトグループ、配列に対応しています

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

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

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

%% user properties
td_analytics:user_set_instance(TE_SDK, "account_id_Erlang", "distinct_id", #{"id" => 12, "key_1" => [1,1,1,1], "key_2" => ["a", "b"], "key_3" => ["中", "文"], "key_4" => ["中文", "list"], "key_5" => "中文字符串", "amount" => 7.123}),

3.3 データの送信​

td_analytics:consumer_type_log()を使用する場合、SDKは収集したデータをリアルタイムでディスクに書き込むため、flush()メソッドを呼び出す必要はありません。

3.4 SDKの終了​

%% SDKを終了するときに呼び出す必要があります
td_analytics:close_instance(TE_SDK),

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

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

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

%% A lager sink is provided by default: 'ta_logger'. You could add your own sink
Consumer = td_log_consumer:init_with_logger(fun(E) -> ta_logger:info(E) end),
%% init SDK with consumer
TE_SDK = td_analytics:init_with_consumer(Consumer),

%% ordinary event
td_analytics:track_instance(TE_SDK, "account_id_Erlang", "distinct_logbus", "ViewProduct", #{"key_1" => "🚓🦽🦼🚲🚜🚜🦽", "key_2" => 2.2, "key_array" => ["🚌", "🏍", "😚😊"]}),

td_analytics:close_instance(TE_SDK),
このページは役に立ちましたか?