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

C++

最終更新 2026/10/05
ヒント

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

C++ SDKのソースコードはGitHubで入手できます。

C++ SDKはMac、Windowsプラットフォームで動作し、C++ 11以降のバージョンに対応しています。サイズは約144KBです

最新バージョン: 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のライブラリを自分でコンパイルできます

  1. SDKのコードをダウンロードしたら、cdでcmakelistファイルのディレクトリに移動します
  2. 以下のコマンドを実行します
//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がコンパイルしたライブラリの使用​

SDKのダウンロード

ダウンロードして解凍すると、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);
このページは役に立ちましたか?