# Mobile Tracking と Mobile SDK について

Treasure Data は以下の SDK を提供しています: Android、iOS、Unity、Unreal。これらの mobile SDK を使用することで、アプリケーションのデータを Treasure Data にインポートできます。

詳細については以下をご覧ください:

* [Mobile SDK の機能](/ja/products/customer-data-platform/integration-hub/streaming/mobile/about-mobile-tracking-and-mobile-sdks#h1_551784748)
* [Mobile SDK のアカウント管理](/ja/products/customer-data-platform/integration-hub/streaming/mobile/about-mobile-tracking-and-mobile-sdks#h1__1882299180)
* [Mobile SDK の詳細](/ja/products/customer-data-platform/integration-hub/streaming/mobile/about-mobile-tracking-and-mobile-sdks#h1_1773140935)


Treasure Data では、本番環境で使用を開始する前に、Treasure Data JavaScript SDK version 3 を使用してサイトでの新機能の実装を検証することを推奨しています。Cookie の管理方法が異なりますのでご注意ください。これらの記事のほとんどを参照する際は、提案されている event collector と Treasure Data JavaScript SDK version 3 の呼び出しをソリューションに定義する必要があります。例えば、//cdn.treasuredata.com/sdk/2.5/td.min.js を //cdn.treasuredata.com/sdk/3.0.0/td.min.js に変更してください。

# Mobile SDK の機能

SDK には以下の機能があります:

* アプリケーションで発生する event を追加する(client 側でバッファリング)(addEvent/addEventWithCallback)
  * バッファリングされたデータを任意の共通キーで自動的に暗号化/復号化する(initializeEncryptionKey、デフォルト:無効)
* バッファリングされた event を TD にアップロードする(データ損失を避けるため、バッファリングされたデータはアップロードが成功した場合のみクリアされます)(uploadEvents/uploadEventsWithCallback)
  * アップロード失敗時に一定回数アップロードを再試行する(Exponential backoff)(enableRetryUploading/disableRetryUploading、デフォルト:有効)
    * アップロードされるデータは自動的に元のサイズの8分の1に圧縮されます(enableEventCompression/diableEventCompression、デフォルト:有効)
* 操作(Event の追加またはアップロード)の成功または失敗に応じて呼び出す Callback を登録する(addEventWithCallback/uploadEventsWithCallback)
* SDK は各デバイスに対して一意の ID を生成します。この ID は各 event に自動的に追加されるため、各デバイスのデータの集計が容易になります。(enableAutoAppendUniqId/disableAutoAppendUniqId、デフォルト:無効)
* OS version またはデバイスモデル情報を各 event に自動的に追加する。(enableAutoAppendModelInformation/disableAutoAppendModelInformation、デフォルト:無効)
* SDK は各 session の開始/終了時に session id を生成します。session id は各 event に自動的に追加されるため、アプリケーション内で発生した一連の event ごとに集計できます。(startSession/endSession)
* アプリケーションが実行されていたかどうかを SDK が監視するため、アプリケーションの初回実行を検出します。(isFirstRun/clearFirstRun)
* server 側で重複排除を実行することで、複数回更新した場合でもデータの重複を防ぎます。(現在、毎日重複排除を実行しています)


各機能の末尾に記載されている文字列は、SDK API 名(具体的には TreasureData class のメソッド名)です。SDK で event を登録するための database と table を設定する必要があります。これらは Treasure Data の宛先 database および宛先 table と連携します。

例えば、以下の図は、enableAutoAppendUniqId と enableAutoAppendModelInformation を有効にして startSession と endSession を使用した場合の Treasure Data のサンプルデータの一部を示しています。

![](/assets/image-20191021-202312.4b9ee784cfac565f5d3e44300859346f591723aa2ad95729ad1da5064ec9e66d.ad50cbca.png)

# Mobile SDK のアカウント管理

Treasure Data では、データのインポートやクエリの発行時に authentication のための API Key が必要です。mobile SDK(JavaScript SDK も含む)を使用する場合は、以下の手順を推奨します。

* SDK からのインポート用に Treasure Data 上に database を作成します。
* 上記の database へのアクセス権限を持つユーザーを、Treasure Data ユーザーと関連付けます。
  * https://console.treasuredata.com/app/users から「Add Team Member」を使用して、ユーザーを Treasure Data ユーザーと関連付けることができます。
* 上記のユーザーに対して `Write-only` API key を生成します。
* 生成した `Write-only` API key を SDK で使用します。


Treasure コンソール で **My Profile** を選択します。

API Keys パネルでパスワードを入力します。

Write-only API key を生成します。

![](/assets/image-20191021-202320.a0f121ae50d1cf0b63550eb57a20d0a8842eabd7df7af63fb310954699c8fd63.ad50cbca.png)

# Mobile SDK の詳細

* [Android SDK](/products/customer-data-platform/integration-hub/streaming/mobile/android)
* [iOS SDK](/products/customer-data-platform/integration-hub/streaming/mobile/ios)
* [Unity SDK](/int/unity-sdk)
* [Unreal SDK Import Integration](https://docs.treasuredata.com/smart/project-integrations/unreal-engine-sdk-import-integration)