C++
最新バージョン: v1.5.3
更新日: 2025-10-11
リソースのダウンロード: SDKソースコード
1. SDKの統合
1.1 SDKのダウンロード
SDKソースコードをダウンロードして解凍し、cpp-client/cppフォルダーに移動します。
includeはSDKのヘッダーファイル、srcはSDKのソースコードファイル、thirdpartyは依存するサードパーティライブラリです。
cpp-client
├── CMakeLists.txt
├── cpp
│ ├── include
│ ├── src
│ └── thirdparty
└── main.cpp
1.2 依存関係の追加
C++ SDKはsqlite、curl、zlib、opensslライブラリに依存しています。プラットフォームの特性の違いにより、ライブラリの形式も異なります。ThinkingAIがコンパイルしたライブラリを使用することも、ライブラリを自分でコンパイルすることもできます。
1.2.1 ThinkingAIがコンパイルしたライブラリの使用
これらのライブラリはwindowsプラットフォームのコンパイラで生成されたものです。thirdpartyフォルダー内のコンパイル済みライブラリをプロジェクトに設定します。(.dllは動的ライブラリ、.libは静的ライブラリです)
thirdparty
├── x64
│ ├── curl
│ ├── openssl
│ ├── sqlite
│ └── zlib
└── x86
1.2.2 自分でコンパイル
ここではWindowsプラットフォームを例にします:
curlライブラリ(https://github.com/curl/curl/releases/tag/curl-7_61_1)をダウンロードして解凍したら、winbuildディレクトリに移動してコンパイルします。コンパイルコマンドは以下のとおりで、コンパイル結果はcurlディレクトリのbuilds配下に出力されます。
nmake /f Makefile.vc mode=static ENABLE_IDN=no
zlibライブラリ(https://github.com/madler/zlib/releases/tag/v1.2.11)をダウンロードして解凍したら、コンパイルコマンドを実行します。コンパイル結果はzlibディレクトリ配下に出力されます。
nmake -f win32/Makefile.msc
sqliteライブラリ(https://www.sqlite.org/download.html)をダウンロードし、対象プラットフォームのライブラリを選択します。
コマンドラインのほか、IDE(統合開発環境)、たとえばVisual Studio、CLionなどを使って対応するプラットフォームのライブラリを生成することもできます。
opensslライブラリ(https://github.com/openssl/openssl)をダウンロードし、対象プラットフォームのライブラリを自分でコンパイルします。
1.3 SDKの統合
1.3.1 CMakeを使った統合
CMakeを使ってC++ SDKを統合するには、cppフォルダーをプロジェクトにコピーし、CMakeLists.txtファイルにWindowsとMacそれぞれ以下の設定を追加します:
C++のバージョンを設定します:
set(CMAKE_CXX_STANDARD 11)
ヘッダーファイルをインクルードします:
include_directories(cpp/include)
Windowsプラットフォームの設定を追加します:
if(WIN32)
if(CMAKE_SIZEOF_VOID_P EQUAL 8) # x64プラットフォーム
include_directories(cpp/thirdparty/x64/curl/include cpp/thirdparty/x64/zlib/include cpp/thirdparty/x64/sqlite/include cpp/thirdparty/x64/openssl/include)
link_directories(cpp/thirdparty/x64/curl/lib cpp/thirdparty/x64/zlib/lib cpp/thirdparty/x64/sqlite/lib cpp/thirdparty/x64/openssl/lib)
else() # Win32プラットフォーム
include_directories(cpp/thirdparty/x86/curl/include cpp/thirdparty/x86/zlib/include cpp/thirdparty/x86/sqlite/include cpp/thirdparty/x86/openssl/include)
link_directories(cpp/thirdparty/x86/curl/lib cpp/thirdparty/x86/zlib/lib cpp/thirdparty/x86/sqlite/lib cpp/thirdparty/x86/openssl/lib)
endif()
add_library(thinkingdata SHARED cpp/src/ta_analytics_sdk.cpp cpp/src/ta_cpp_helper.cpp cpp/src/ta_cpp_network.cpp cpp/src/ta_cpp_utils.cpp cpp/src/ta_sqlite.cpp cpp/src/ta_timer.cpp cpp/src/ta_event_task.cpp cpp/src/ta_cpp_send.cpp cpp/src/ta_json_object.cpp cpp/src/ta_cJSON.c cpp/src/ta_encrypt.cpp cpp/src/ta_calibrated_time.cpp cpp/src/ta_flush_task.cpp)
target_link_libraries(thinkingdata libcurl sqlite3 zlibwapi libssl libcrypto)
endif()
Macプラットフォームの設定を追加します:
if (CMAKE_HOST_APPLE)
find_library(COCOA Cocoa)
find_library(IOKIT IOKit)
find_package(OpenSSL REQUIRED)
include_directories(${OPENSSL_INCLUDE_DIR})
link_directories(${OPENSSL_LIBRARIES})
add_library(thinkingdata SHARED cpp/src/ta_analytics_sdk.cpp cpp/src/ta_cpp_helper.cpp cpp/src/ta_cpp_network.cpp cpp/src/ta_cpp_utils.cpp cpp/src/ta_sqlite.cpp cpp/src/ta_timer.cpp cpp/src/ta_event_task.cpp cpp/src/ta_cpp_send.cpp cpp/src/ta_json_object.cpp cpp/src/ta_cJSON.c cpp/src/ta_mac_tool.mm cpp/src/ta_encrypt.cpp cpp/src/ta_calibrated_time.cpp cpp/src/ta_flush_task.cpp)
target_link_libraries(thinkingdata curl z sqlite3 ${OPENSSL_LIBRARIES} ${COCOA} ${IOKIT})
endif()
1.3.2 自分でコンパイル
IDE(統合開発環境)を使って、ThinkingAIのライブラリを自分でコンパイルできます
- SDKのコードをダウンロードしたら、cdでcmakelistファイルのディレクトリに移動します
- 以下のコマンドを実行します
//windowsプラットフォーム visual studioでコンパイル
//x86
cmake -S . -B build -G "Visual Studio 17 2022" -A Win32
//x64
cmake -S . -B build -G "Visual Studio 17 2022" -A x64
//Macプラットフォーム
// arm64プラットフォーム m1
arch -arm64 cmake -B build
arch -arm64 cmake --build build
//x86_64プラットフォーム intel
arch -x86_64 cmake -B build
arch -x86_64 cmake --build build
1.3.3 ソースコードを使った統合
手順1.2のサードパーティ依存関係の設定が完了したら、includeフォルダーとsrcフォルダーをプロジェクトに追加します。
.
├── cmake-build-debug
├── cmake-build-release
├── CMakeLists.txt
├── cpp
│ ├── include
│ ├── src
│ └── thirdparty
└── main.cpp
1.3.4 ThinkingAIがコンパイルしたライブラリの使用
ダウンロードして解凍すると、x64とx86プラットフォームに対応するdllファイルがあり、そのまま使用できます。
2. SDKの初期化
#include "ta_analytics_sdk.h"
#include "ta_json_object.h"
using namespace thinkingdata;
ThinkingAnalyticsAPI::Init(SERVER_URL, APPID);
パラメータの説明:
-
APPID: プロジェクトのAPPIDです。AE管理画面の「プロジェクト管理」ページで取得できます -
SERVER_URL: データの送信先URL- クラウドサービスをご利用の場合は、次を入力します: https://global-receiver-ta.thinkingdata.cn
- プライベートデプロイ版をご利用の場合は、データ収集アドレスにドメインをバインドし、HTTPS証明書を設定してください:https://データ収集アドレスにバインドしたドメイン
3. よく使う機能
よく使う機能を使用する前に、まずユーザー識別ルールを確認することをお勧めします。SDKはデフォルトで乱数を生成してゲストIDとし、ゲストIDをローカルに永続的に保存します。ユーザーがログインするまでは、ゲストIDが識別IDとして使われます。注意:ゲストIDは、ユーザーがAppを再インストールしたり、デバイスを変更したりすると変わります。
3.1 アカウントIDの設定
ユーザーがログインする際にLoginを呼び出してユーザーのアカウントIDを設定できます。AEプラットフォームはアカウントIDを識別IDとして使用し、設定したアカウントIDはLogOutを呼び出すまで保持されます。Loginを複数回呼び出すと、以前のアカウントIDが上書きされます。
// ユーザーのログイン固有識別子。このデータは送信データの#account_idに対応し、この時点で#account_idの値はTA
ThinkingAnalyticsAPI::Login("TA");
Loginは複数回呼び出せます。呼び出すたびに、渡されたアカウントIDが以前に保存したIDと一致するかどうかを判定し、一致する場合は呼び出しを無視し、一致しない場合は以前のIDを上書きします。
このメソッドはログインイベントを送信しません
3.2 イベントの送信
Trackを呼び出してイベントを送信できます。事前に整理したトラッキングドキュメントに従って、イベントのプロパティと送信条件を設定することをお勧めします。ここでは、ユーザーが商品を購入する場合を例にします:
TDJSONObject event_properties;
event_properties.SetString("name1", "name1");//文字列
event_properties.SetNumber("test_number_int", 3);//数値
event_properties.SetBool("test_bool", true);//bool
event_properties.SetDateTime("test_time1", time(NULL), 0);//時間
std::vector<std::string> test_list;
test_list.push_back("item11");
test_list.push_back("item21");
event_properties.SetList("test_list1", test_list);//配列
ThinkingAnalyticsAPI::Track("CPP_event", event_properties);
-
イベント名は文字列型で、英字で始まり、数字、英字、アンダースコア"_"を含めることができます。最大長は50文字です。
-
イベントプロパティは
TDJSONObject型で、各要素が1つのプロパティを表します。- イベントプロパティの
Keyはプロパティ名で、文字列型です。英字で始まり、数字、英字、アンダースコア"_"のみを含めることができます。最大長は50文字で、英字の大文字と小文字は区別されません。 - プロパティ値には、文字列、数値、ブール、配列、時間型を使用できます。
- イベントプロパティの
ユーザープロパティの要件は、イベントプロパティと同じです
3.3 ユーザープロパティの設定
一般的なユーザープロパティは、UserSetを呼び出して設定できます。このインターフェースで送信したプロパティは、既存のプロパティ値を上書きします。そのユーザープロパティが以前に存在しない場合は新しく作成され、タイプは渡されたプロパティのタイプと同じになります。ここでは、ユーザー名の設定を例にします:
TDJSONObject userProperties;
userProperties.SetString("user_name", "TA");
ThinkingAnalyticsAPI::UserSet(userProperties);
4. ベストプラクティス
次のサンプルコードには、上記のすべての操作が含まれています。次の手順で使用することをお勧めします:
#include "ta_analytics_sdk.h"
using namespace thinkingdata;
//SDKを初期化
ThinkingAnalyticsAPI::Init(SERVER_URL, APPID);
//ユーザーがログイン済みの場合は、ユーザーのアカウントIDを一意の識別子として設定できます
ThinkingAnalyticsAPI::Login("TA");
//イベントを送信
TDJSONObject event_properties;
event_properties.SetString("name1", "name1");//文字列
event_properties.SetNumber("test_number_int", 3);//数値
event_properties.SetBool("test_bool", true);//bool
event_properties.SetDateTime("test_time1", time(NULL), 0);//時間
std::vector<std::string> test_list;
test_list.push_back("item11");
test_list.push_back("item21");
event_properties.SetList("test_list1", test_list);//配列
ThinkingAnalyticsAPI::Track("CPP_event", event_properties);
//ユーザープロパティを設定
TDJSONObject userProperties;
userProperties.SetString("user_name", "TA");
ThinkingAnalyticsAPI::UserSet(userProperties);

