menu
Is this helpful?

# Erlang

最新バージョン:v2.0.0

更新時間:2023-10-08

ダウンロード: Source Code (opens new window)

# SDK実装

# 1.1 v1.2.0 以降の新バージョンは、rebar3環境を採用して引用

1.1: プロジェクトにrebar3環境を入れてください

1.2: プロジェクトの設定ファイルを変更し、lagerライブラリの設定を追加してください。主に数数SDKが独自に使用するsinkであるta_logger_lager_eventを追加します。異なるログファイルへの複数インスタンス書き込みが必要な場合は、他のsinkも追加する必要があります。

[
  %% lager logging library configuration
  {lager, [
    {colored, true},
    {log_root, "./log"}, %% The storage path of the logs generated during system operation
    %% Add a separate sink for the counting SDK here, named: ta_logger_lager_event
    {extra_sinks,
      [
        {ta_logger_lager_event,
          [{handlers, [
            {lager_file_backend, [
              {file, "LOG_DIRECTORY"}, %% Configure the file path and name for data collection.
              {level, info},
              {formatter, lager_default_formatter},
              {formatter_config, [message, "\n"]},
              {size, 10485760}, %% The page size of a single file is 10Mb.
              {rotator, td_lager_rotator} %% Custom log rotation
            ]}]},
            {async_threshold, 500},
            {async_threshold_window, 50}
          ]
        }]
    }
  ]
  }
].

注意:SDKディレクトリには、example_sys.configというサンプルファイルがあります。このサンプル設定を参考にしてください。

LOG_DIRECTORYはローカルに書き込まれるフォルダのアドレスです。LogBusの監視フォルダのアドレスをここに設定するだけで、LogBusを使用してデータを監視およびアップロードできます。

  1. rebar.configファイルを変更し、thinkingdata_analytics SDKへの参照を追加します。
{erl_opts, [debug_info, 
    %% The parameters required for using the lager library
    {parse_transform, lager_transform},
    %% Here you need to declare the extended sink. If there are multiple sinks, please write: [ta_logger, ta_logger_xxxx]
    {lager_extra_sinks, [ta_logger]}
]}.

{deps, [ 
    %% Add number collection SDK
    {thinkingdata_analytics, {git, "https://github.com/ThinkingDataAnalytics/erlang-sdk.git", {tag, "v1.3.0"}}}
]}.

{shell, [ 
    %% Enable configuration file
    {config, "config/sys.config"},
    {apps, [app_name]}
]}.

実行コマンド:

rebar3 compile

1.4:プロジェクト設定ファイルの中で起動パラメータを入れてください。

xxxx.app.srcファイル中でSDKの起動項目を追加します。

{application, your_name,
 [{description, "An OTP application"},
  {vsn, "0.1.0"},
  {registered, []},
  {mod, {your_name_app, []}},
  {applications,
   [kernel,
    stdlib,
    jsone, %% Add startup items here
    lager %% Add startup items here
   ]},
  {env,[]},
  {modules, []},

  {licenses, ["Apache-2.0"]},
  {links, []}
 ]}.

1.5 使用方法

%% 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),

WARNING

Windowsプラットフォーム注意事項:データ書き込みにエラーがでないように管理者権限で実行してください。

  1. Logbusをインストール

TEシステムにより迅速かつ正確なデータを転送するために、SDK+LogBusの併用でサーバデータのデータレポートを推奨しております。

# 初期設定

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),

# メイン機能

ゲストIDとアカウントIDをうまく紐付けるために、もしゲーム内でゲストIDとアカウントID両方を使われる場合は、それらのIDを同時にアップロードするのを推奨しております。同時にアップロードしない場合は、ユーザーを重複にカウントされてしまう可能性があります。

# 3.1 イベント送信

trackを利用してイベントの送信を行います。事前にデータプランをご用意の上、送信してください。以下はモデルコードとなります。

td_analytics:track_instance(TE_SDK, "account_id_Erlang", "distinct_logbus", "ViewProduct", #{"key_1" => "🚓🦽🦼🚲🚜🚜🦽", "key_2" => 2.2, "key_array" => ["🚌", "🏍", "😚😊"]}),
  • イベント名称はstringタイプで、英文字と数字、 "_"を含め、最大50文字
  • Key は当プロパティの名称でstringタイプで、英文字と数字、 "_"を含め、最大50文字。TEシステムは一律で小英文字に統一されます
  • Value は当プロパティの値で、String, Number, Bloon, Time, object, array, list objectを対応しております。

ユーザープロパティはイベントプロパティと一致する必要があります

# 3.2 ユーザープロパティを設定

一般のユーザープロパティに関しては、user_setを利用して設定することができますが、 UserSetは元の値を上書きされます。本来該当プロパティに値がない場合は、プロパティが新規作成されます。以下はコード例となります。

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}),

# コード例のまとめ

以下のコード例で全ての操作が含まれます、以下の順で利用推奨しております。

%% 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),