PC・コンソール ゲーム連携ガイド
Singular で PC およびコンソールゲームのアトリビューションを実装するための総合ガイドです。デスクトップおよびゲームプラットフォーム全体で正確なキャンペーン測定と分析を実現できます。
エンタープライズ機能: PC およびコンソールゲームのアトリビューションはエンタープライズ機能です。詳細については、 PC およびコンソールゲームアトリビューション FAQ をお読みいただくか、担当のカスタマーサクセスマネージャーにお問い合わせください。
共通の S2S リファレンス: 本ガイドでは PC およびコンソール固有の内容を扱います。共通のサーバー間(S2S)の構成要素(エンドポイント、認証、共通パラメータ)については、 S2S 基礎ハブ をご覧ください。 セッションおよびイベントパラメータの完全なリファレンスについては、 PC・コンソール API エンドポイントリファレンス をご覧ください。
概要
連携オプション
Singular は PC およびコンソールゲームのアトリビューションに 2 つのアプローチを提供しています。実装要件とアトリビューションのニーズに最も適した方法を選択してください。
| 方法 | 説明 | ユースケース |
|---|---|---|
| PC/コンソール Singular Links |
推奨: 確率的アトリビューションのために Singular のトラッキングリンクを使用する簡素化された連携方法です。Web SDK は不要です。 アトリビューション方法: 確率的(IP ベースのマッチング) |
連携の手間が少なく、最も迅速に実装できます。ユーザーをサードパーティストア(Steam、Epic など)に誘導するキャンペーンや、Web SDK の連携が難しい場合に最適です。 |
| Web SDK + Match ID |
高度: ランディングページ上の Singular Web SDK を使用し、Match ID による決定論的マッチングで強化されたアトリビューションです。 アトリビューション方法: 確率的(IP ベース)および決定論的(Match ID) |
ユーザーがランディングページで認証する場合に最も高いアトリビューション精度が得られます。Singular Web Attribution 機能および決定論的アトリビューションには必須です。 |
実装に関する注意: どちらの方法でも、ゲームセッションとイベントを報告するために PC/コンソール サーバー間(S2S)API 連携の実装が必要です。違いは、Web キャンペーンのクリックがどのようにトラッキングされ、ゲームインストールとマッチングされるかにあります。
アトリビューションフローの比較
PC/コンソール Singular Links のフロー:
- ユーザーが Singular Link をクリック: ユーザーがマーケティングキャンペーン内の Singular トラッキングリンクをクリックします
- ランディングページへのリダイレクト: ユーザーがランディングページまたはストアへリダイレクトされます(Web SDK は不要)
- ダウンロードとインストール: ユーザーがゲームをダウンロードしてインストールします
- 初回起動: ユーザーがゲームを初めて起動します
- S2S 報告: ゲームが S2S API 経由でセッションを報告します
- 確率的アトリビューション: Singular が IP アドレスに基づいてゲームインストールを Singular Link のクリックとマッチングします
Web SDK + Match ID のフロー:
- ユーザーがキャンペーンリンクをクリック: ユーザーがマーケティングキャンペーンの広告またはリンクをクリックします
- Web SDK を実装したランディングページ: ユーザーが Singular Web SDK を実装したランディングページに到達します
- クリックのキャプチャ: Web SDK がクリックデータをキャプチャし、Match ID を生成します
- ユーザー認証(任意): ユーザーがログインすると、決定論的アトリビューションのために Match ID をゲームに渡すことができます
- ダウンロードとインストール: ユーザーがゲームをダウンロードしてインストールします
- 初回起動: ユーザーがゲームを起動し、任意で Match ID を取得します
- Match ID を含む S2S 報告: ゲームが Match ID の有無にかかわらず S2S API 経由でセッションを報告します
- アトリビューションのマッチング: Singular が決定論的マッチング(Match ID が提供されている場合)または確率的マッチング(IP ベース)を実行します
サーバー間連携
選択したアトリビューション方法にかかわらず、すべての PC およびコンソールゲームアトリビューションには S2S API 連携の実装が必要です。
連携機能:
- ゲームセッションのトラッキング: ゲーム起動全体でユーザーセッションとアクティビティを報告します
- インストールアトリビューション: 新規のゲームインストールをマーケティングキャンペーンにアトリビュートします
- イベント分析: ファネル分析のためにゲーム内イベントとユーザーインタラクションをトラッキングします
- 収益測定: ゲーム内購入とマネタイズのパフォーマンスを測定します
- クロスプラットフォーム対応: PC、Xbox、PlayStation、Nintendo、Meta Quest 全体で統一されたトラッキングを行います
前提条件
PC・コンソール連携を実装する前に、以下の要件が満たされていることを確認してください。
| コンポーネント | 要件 |
|---|---|
| SDK Key |
Singular SDK Key を Dashboard → Developer Tools → SDK Integration → SDK Keys から取得します |
| アプリ設定 |
PC またはコンソールゲームを Singular App Page に追加します。同一タイトルの複数プラットフォームについては、すべて同じ Singular の「App」に追加してください。 |
| アトリビューション方法の選択 |
実装要件に基づいてアトリビューションのアプローチを選択します:
|
ドキュメントリソース
PC・コンソール連携のための完全な API リファレンスと実装ガイドです。
連携ドキュメント:
- S2S API リファレンス: PC・コンソール S2S エンドポイントリファレンス
- アトリビューション FAQ: PC およびコンソールゲームアトリビューション FAQ
- Web SDK(任意): Web SDK の概要とはじめに
- Singular Links: Singular Links の概要
方法 1: PC/コンソール Singular Links(推奨)
ランディングページに Web SDK を実装することなく、確率的アトリビューションのために Singular のトラッキングリンクを使用する簡素化された連携アプローチです。
推奨される実装: この方法は、最小限の連携の手間で PC/コンソールアトリビューションを最も迅速に実装できます。ほとんどのユースケースに最適です。
概要
仕組み
PC/コンソール Singular Links は、トラッキングリンク内で直接クリックデータをキャプチャすることでアトリビューションを可能にし、ランディングページでの Web SDK の実装を不要にします。
主なメリット:
- Web SDK 不要: サードパーティストア(Steam、Epic など)を含む任意のランディングページにユーザーをリダイレクトできます
- 簡素化された連携: ゲーム側での S2S API の実装のみが必要です
- 迅速な展開: ランディングページを変更することなく、キャンペーンを素早く作成して開始できます
- 柔軟なリダイレクト先: 任意のリダイレクト先 URL への単一リダイレクトに対応します
アトリビューション方法:
- 確率的(IP ベース): Singular が IP アドレスとデバイスの特性に基づいてゲームインストールを Singular Link のクリックとマッチングします
実装手順
ステップ 1: 前提条件
PC/コンソール Singular Links を作成する前に、以下の要件が満たされていることを確認してください。
必須: PC/コンソールのアプリサイトが Singular の Apps 画面で設定されている必要があり、アプリサイトが PC/コンソール Singular Link の作成対象となるには、少なくとも 1 件のゲームセッションが S2S API 経由で送信されている必要があります。
ステップ 2: PC/コンソール Singular Link を作成する
Singular ダッシュボードで PC/コンソール Singular Links を作成し、キャンペーンのクリックをトラッキングしてアトリビューションを有効にします。
設定手順:
- Manage Links に移動: Singular ダッシュボードで Attribution → Manage Links に移動します
- App を選択: PC/コンソールのアプリサイトが設定されている App を選択します
- 新規リンクを作成: Create New Link ボタンをクリックします
- プラットフォームタイプを選択: Platform Tracking Type フィールドで「PC/Console」を選択します
- ターゲットを設定: 特定の PC/コンソールのアプリサイトを選択するか、「Track all app sites under this app」オプションを選択します
- リダイレクト先 URL を設定: リダイレクト URL(ランディングページ、ストアページなど)を設定します
- アトリビューション設定を構成: 必要に応じてアトリビューションウィンドウとトラッキングパラメータを設定します
- リンクを生成: Singular トラッキングリンクを保存して生成します
リンクの種類: PC/コンソール Links は Custom Sources および一部の Partner Integrations に対応しています。クリックリンクとインプレッションリンクの両方に対応しています。
ステップ 3: S2S 連携を実装する
サーバー間 API 連携を実装して、ゲームセッションとイベントを報告します。S2S 実装の詳細については、以下の 連携の概念 セクションをご覧ください。
必要な実装:
- セッション通知: Session Notification Endpoint を使用してゲームの起動を報告します
- イベントトラッキング: Event Notification Endpoint を使用してゲーム内イベントと収益を報告します
- デバイス識別: 一意のデバイス識別子(SDID)を生成して保持します
ステップ 4: キャンペーンを開始する
生成した PC/コンソール Singular Links をマーケティングキャンペーンで使用し、アトリビューショントラッキングを有効にします。
キャンペーンの設定:
- トラッキングリンクをコピー: Manage Links から生成した Singular Link をコピーします
- キャンペーンを設定: Singular Link をキャンペーンのリンク先 URL として使用します
- キャンペーンを開始: Singular Link を用いてキャンペーンを有効化します
- アトリビューションを監視: ユーザーがリンクをクリックしてゲームを起動するのに応じて、Singular レポートでアトリビューションデータを確認します
アトリビューションのマッチング
アトリビューションの仕組み
PC/コンソール Singular Links を使用する場合、Singular は IP アドレスとタイミングに基づいて確率的アトリビューションのマッチングを実行します。
アトリビューションのプロセス:
- ユーザーが Singular Link をクリック: IP アドレスとタイムスタンプを含むクリックデータが Singular によってキャプチャされます
- ユーザーがゲームをダウンロード: ユーザーがゲームのダウンロードとインストールに進みます
- ゲームの起動: ユーザーがゲームを初めて起動します
- S2S 報告: ゲームがユーザーの IP アドレスを含めて S2S API 経由でセッションを Singular に報告します
- 確率的マッチング: Singular がアトリビューションウィンドウ内で IP アドレスに基づいてゲームインストールを Singular Link のクリックとマッチングします
- アトリビューション完了: インストールがキャンペーンソースにアトリビュートされます
アトリビューション精度: 確率的アトリビューションは、ほとんどのユースケースで信頼性の高いマッチングを提供します。決定論的マッチングによるアトリビューション精度の向上をお求めの場合は、Web SDK + Match ID 方式の実装をご検討ください。
方法 2: Web SDK + Match ID(高度)
ランディングページで Singular Web SDK を使用し、ユーザーが認証する際に任意で Match ID を用いて決定論的アトリビューションを行う高度な連携アプローチです。
高度な機能: この方法にはランディングページでの Web SDK の実装と追加の連携作業が必要です。Singular Web Attribution 機能または Match ID による決定論的アトリビューションが必要な場合は、このアプローチをご検討ください。
概要
この方法を使用する場合
基本的な確率的マッチングを超える強化されたアトリビューション機能がユースケースで必要な場合に、Web SDK + Match ID アプローチを実装します。
ユースケース:
- Web Attribution: Singular Web Attribution 機能と Web 分析が必要な場合
- 決定論的アトリビューション: ユーザーがランディングページで認証を行い、最も高いアトリビューション精度が必要な場合
- クロスデバイストラッキング: ユーザーがランディングページを訪問したデバイスとは別のデバイスでゲームをダウンロードする可能性がある場合
- 高度な分析: ゲームインストール前の詳細な Web エンゲージメント指標が必要な場合
アトリビューション方法:
- 確率的(IP ベース): IP アドレスに基づく自動マッチング(PC/コンソール Singular Links と同じ)
- 決定論的(Match ID): ユーザーが認証する際にランディングページからゲームに渡される一意の識別子を使用した高精度のマッチング
実装手順
ステップ 1: Web SDK を実装する
マーケティングのランディングページに Singular Web SDK を実装し、クリックデータをキャプチャしてアトリビューションを有効にします。
Web SDK 要件: この方法による PC・コンソールアトリビューションには、マーケティングのランディングページへの Singular Web SDK の実装が必要です。Web SDK はクリックデータをキャプチャし、ユーザーがゲームをインストールして起動する際にアトリビューションのマッチングを可能にします。
Web SDK の実装:
- Web SDK ガイドに従う: Web SDK の概要とはじめに
-
Product ID の設定:
Web SDK の Product ID は、S2S 連携で使用するゲーム識別子(
iパラメータ)と一致している必要があります - ランディングページへの展開: すべてのマーケティングのランディングページに Web SDK を展開します
設定の整合: アトリビューションが機能するには、Web SDK の Product ID が S2S 連携のゲーム識別子と完全に一致している必要があります。この整合により、Singular は Web クリックとゲームインストールを結び付けることができます。
ステップ 2: S2S 連携を実装する
サーバー間 API 連携を実装して、ゲームセッションとイベントを報告します。S2S 実装の詳細については、以下の 連携の概念 セクションをご覧ください。
必要な実装:
- セッション通知: Session Notification Endpoint を使用してゲームの起動を報告します
- イベントトラッキング: Event Notification Endpoint を使用してゲーム内イベントと収益を報告します
- デバイス識別: 一意のデバイス識別子(SDID)を生成して保持します
ステップ 3: Match ID を実装する(任意)
決定論的アトリビューションのために、ユーザーが認証する際にランディングページからゲームへ一意の識別子を渡す Match ID を実装します。
任意の機能: Match ID の実装は、決定論的アトリビューションを行いたい場合にのみ必要です。Web SDK 単体でも、Match ID なしで確率的アトリビューションが提供されます。
Match ID の実装:
-
Match ID を取得:
ユーザー認証後に Web SDK の
getMatchID()メソッドを使用します - ゲームに渡す: Web からゲームへ Match ID を渡す仕組み(クエリパラメータ、API など)を実装します
-
初回セッションに含める:
最初のゲームセッションで
match_idパラメータを介して Match ID を報告します
Match ID 連携の詳細な手順については、以下の Match ID の実装 セクションをご覧ください。
アトリビューションのマッチング
アトリビューションの仕組み
Web SDK を使用する場合、Singular は Match ID が提供されているかどうかに応じて、確率的または決定論的のいずれかの方法でアトリビューションのマッチングを実行します。
確率的アトリビューション(Match ID なし):
- ユーザーがキャンペーンをクリック: ユーザーがマーケティングキャンペーンのリンクをクリックします
- ランディングページの訪問: Web SDK が IP アドレスを含むクリックデータをキャプチャします
- ユーザーがゲームをダウンロード: ユーザーがゲームをダウンロードしてインストールします
- ゲームの起動: ユーザーがゲームを初めて起動します
- S2S 報告: ゲームが S2S API 経由でセッションを Singular に報告します
- IP マッチング: Singular が IP アドレスに基づいてゲームインストールを Web クリックとマッチングします
決定論的アトリビューション(Match ID あり):
- ユーザーがキャンペーンをクリック: ユーザーがマーケティングキャンペーンのリンクをクリックします
- ランディングページの訪問: Web SDK が一意の Match ID を生成します
- ユーザーが認証: ユーザーがランディングページでログインします
- Match ID を取得: 実装が Web SDK から Match ID を取得します
- Match ID をゲームに渡す: Match ID がクエリパラメータ、API、その他の仕組みを介してゲームに渡されます
- ユーザーがゲームをダウンロード: ユーザーがゲームをダウンロードしてインストールします
- Match ID を含むゲームの起動: ユーザーがゲームを起動し、保存された Match ID を取得します
-
Match ID を含む S2S 報告:
ゲームが
match_idパラメータを含めて最初のセッションを報告します - 決定論的マッチング: Singular が Match ID を使用してゲームインストールを Web クリックとマッチングし、高精度のアトリビューションを行います
連携の概念
Singular で PC・コンソール S2S 連携を実装するための中核となる概念と要件です。これらの概念は両方のアトリビューション方法に適用されます。
認証
Singular の PC・コンソール S2S API へのすべてのリクエストには、
a
パラメータでの SDK key 認証が必要です。共通の認証の仕組み(SDK Key の場所と渡し方)については、
S2S 基礎の「認証」
をご覧ください。
ユーザープライバシー
Singular は、エンドユーザーがトラッキングをオプトインまたはオプトアウトできるようにすることを推奨しています。
data_sharing_options
や Limit Data Sharing を含む共通のプライバシーパラメータについては、
S2S 基礎の「プライバシーパラメータ」
をご覧ください。
対応プラットフォーム
プラットフォームの定義
プラットフォームはユーザーがゲームをプレイする場所を表し、すべての S2S API リクエストで
p
パラメータに渡す必要があります。
対応プラットフォーム値:
-
pc- パーソナルコンピューターのプラットフォーム -
xbox- Microsoft Xbox ゲームコンソール -
playstation- Sony PlayStation ゲームコンソール -
nintendo- Nintendo ゲームコンソール -
metaquest- Meta Quest VR ヘッドセット
オペレーティングシステムとストア
プラットフォームに加えて、
os
パラメータでオペレーティング/ゲームシステムを、
install_source
パラメータで配信ストアを指定します。
|
プラットフォーム
(
p
)
|
オペレーティング/ゲームシステム
(
os
)
|
ストア
(
install_source
)
|
|---|---|---|
| pc |
|
|
| xbox |
|
|
| playstation |
|
|
| nintendo |
|
|
| metaquest |
|
|
カスタム値: オペレーティングシステムとストアのパラメータにはカスタム値を使用できますが、Singular では一貫性とレポートの明確さのために上記の標準値の使用を推奨しています。
ゲーム識別子
アプリケーションの識別
ゲーム識別子はゲームイベントを特定のゲームに関連付けるもので、すべてのリクエストで
i
パラメータに渡す必要があります。
識別子の要件:
-
形式:
任意の値を使用できますが、Singular では逆引き DNS 表記(例:
com.singular.game)を推奨しています - クロスプラットフォームの一貫性: すべての対応プラットフォームで同じゲームに対して同じゲーム識別子を使用する必要があります
- Web SDK との整合(方法 2 のみ): Web SDK + Match ID 方式を使用する場合、アトリビューションが機能するには、ゲーム識別子がランディングページに設定した Web SDK の Product ID と一致している必要があります
Web SDK との整合: Web SDK + Match ID アトリビューション方式を使用する場合、S2S 連携で使用するゲーム識別子は、 Singular Web SDK の実装で設定した Product ID と 完全に一致 している必要があります。この整合は、Singular がゲームインストールを Web キャンペーンのクリックにアトリビュートするために不可欠です。この要件は PC/コンソール Singular Links 方式には適用されません。
設定例:
| 実装 | 設定 |
|---|---|
| Web SDK(方法 2) |
|
| S2S API(PC) |
|
| S2S API(Xbox) |
|
| S2S API(PlayStation) |
|
デバイス識別
一意のゲームインストールトラッキング
インストール/デバイス識別子は、同じゲームインストールの複数のゲームセッションを通じてゲームイベントを関連付けるもので、すべてのリクエストで
sdid
パラメータに渡す必要があります。
識別子の仕様:
- 形式: UUID バージョン 4 形式を推奨
- 生成: 初回のゲーム起動時(インストール)にゲーム/サーバーによって生成される値
- 永続性: ゲームインストールの存続期間全体を通じて保持する必要があります
- 一意性: 各ゲームインストールには一意の識別子が必要です
例:
sdid=40009df0-d618-4d81-9da1-cbb3337b8dec
Match ID の実装
Match ID は、Web SDK からゲームインストールへ一意の識別子を渡すことで、Web キャンペーンの決定論的アトリビューションを可能にします。この機能は Web SDK + Match ID アトリビューション方式を使用する場合にのみ利用できます。
任意の高度な機能: Match ID の実装は、Web SDK + Match ID アトリビューション方式を使用しており、決定論的アトリビューションを行いたい場合にのみ必要です。PC/コンソール Singular Links 方式は Match ID に対応していません。
Match ID の仕組み:
- Web SDK が Match ID を生成: Singular Web SDK が、ユーザーがランディングページを訪問した際に一意の Match ID を作成します
- Match ID を取得: Web SDK のメソッドを使用して、ユーザー認証後にランディングページから Match ID を取得します
- ゲームに渡す: 実装がダウンロード/インストールプロセス中に Web ページからゲームへ Match ID を渡します(例: クエリパラメータ、ディープリンク、Cookie)
-
初回起動時に報告:
ゲームが
match_idパラメータを介して最初のセッション通知に Match ID を含めて Singular に送信します - 決定論的マッチング: Singular が Match ID を使用して高精度のアトリビューションマッチングを行います
Web SDK の Match ID メソッド
ネイティブ実装
Singular Web SDK は、ランディングページで Match ID 値を取得、設定、クリアするためのネイティブメソッドを提供します。
利用可能なメソッド:
| パラメータ | 詳細 |
|---|---|
getMatchID()
|
現在の Web セッションに対して Singular Web SDK が生成した一意の Match ID を取得します。 戻り値: Match ID 値を含む文字列 |
setMatchID(matchId)
|
Singular が生成した値の代わりに、現在の Web セッションにカスタムの Match ID を設定します。
パラメータ:
|
clearMatchID()
|
|
実装例
ネイティブ Web SDK 実装
Singular Web SDK の初期化後に、これらのメソッドを直接使用して Match ID 値を取得および管理します。
Match ID を取得する
// Get the Singular-generated Match ID
const matchId = window.singularSdk.getMatchID();
console.log('Match ID:', matchId);
// Store Match ID for passing to game
localStorage.setItem('singular_match_id', matchId);
カスタム Match ID を設定する
// Set your own Match ID value
const customMatchId = 'your-custom-match-id-123';
window.singularSdk.setMatchID(customMatchId);
console.log('Custom Match ID set:', customMatchId);
Match ID をクリアする
// Clear custom Match ID and revert to default
window.singularSdk.clearMatchID();
// Get the new default Match ID
const defaultMatchId = window.singularSdk.getMatchID();
console.log('Default Match ID restored:', defaultMatchId);
ダウンロードボタンを含む完全な例
// Initialize Web SDK
const config = new SingularConfig(sdkKey, sdkSecret, productId)
.withInitFinishedCallback(() => {
console.log('Singular SDK initialized');
});
singularSdk.init(config);
// Handle download button click
document.getElementById('download-button').addEventListener('click', function() {
// Get Match ID before redirecting to download
const matchId = window.singularSdk.getMatchID();
// Pass Match ID to download page via query parameter
const downloadUrl = `https://example.com/download?match_id=${matchId}`;
// Redirect to download page
window.location.href = downloadUrl;
});
Google Tag Manager での実装
Google Tag Manager で Singular の公式 Singular Web Tracking タグテンプレートを使用して Match ID を取得します。SDK を直接呼び出すカスタム HTML タグを手書きしないでください。テンプレートが Web SDK の読み込みと初期化を代行し、Track Type を通じて Match ID を公開します。
- GTM で新しいタグを作成し、Tag Type として Singular Web Tracking テンプレート(Singular Labs 提供)を選択します。まだコンテナに追加されていない場合は、Community Template Gallery から追加します。
- Track Type を Get Match ID に設定します。
-
Data Layer Key
を任意の名前(例:
getMatchIDValue)に設定します。テンプレートは現在の Match ID をこの dataLayer キーに書き込みます。 -
getMatchIDValueを読み取る GTM Data Layer Variable を作成します。 -
その変数の値をゲームに渡します。例えば、ユーザーをゲームに引き渡すために使用するストアまたはダウンロード URL に
match_idとして付加します。
ゲームへの引き渡しの直前に実行されるトリガー(例: ダウンロードボタンまたは「Play on PC」ボタンのクリック)で Get Match ID タグを発火させ、リダイレクト前に Match ID が設定されるようにしてください。
ご自身のコンテナで配線を検証してください。リダイレクトが発火する前に、Data Layer Variable が空でない Match ID を返すことを確認します。値が空の場合は、Singular Web Tracking のベースタグがまだページ上で初期化されていないことを意味します。
Match ID をゲームに渡す
実装戦略
Web SDK から Match ID を取得した後、ランディングページからゲームインストールへ値を渡す仕組みを実装します。
一般的なアプローチ:
| 方法 | 実装 | ユースケース |
|---|---|---|
| クエリパラメータ |
Match ID をクエリパラメータとしてダウンロード URL に付加します。
|
ダウンロードページがパラメータを抽出してゲームインストーラーに渡せる直接ダウンロードの場合 |
| Cookie ストレージ |
ゲームのダウンロードページからアクセスできるファーストパーティ Cookie に Match ID を保存します。
|
Match ID をページ遷移をまたいで保持する必要があるマルチページフローの場合 |
| ローカルストレージ |
Match ID をブラウザのローカルストレージに保存します。
|
ランディングページとダウンロードページがストレージを共有する同一ドメインのシナリオの場合 |
| ディープリンク |
直接のゲーム起動のために、カスタムディープリンクスキームに Match ID を埋め込みます。
|
カスタムプロトコルハンドラーを備えた高度な実装の場合 |
| サーバーサイド API |
Match ID をサーバー API に送信し、ゲームが認証済みリクエストで取得します。 |
サーバーサイドの検証とユーザー認証を必要とするセキュアな実装の場合 |
S2S API の実装
Match ID の報告
ゲームが Web 実装から Match ID を取得したら、アトリビューションのマッチングのために最初のセッション通知に含めて Singular に送信します。
重要なタイミング: アトリビューションが機能するには、Match ID を最初のゲームセッション(インストール)通知に含める必要があります。以降のセッションで Match ID を送信しても、アトリビューションのマッチングは有効になりません。
Match ID を含むセッションリクエスト:
import requests
def report_first_session_with_match_id(sdk_key, game_id, device_id, platform, match_id):
"""
Report first game session with Match ID for attribution
"""
session_url = "https://s2s.singular.net/api/v1/launch"
params = {
'a': sdk_key,
'i': game_id,
'sdid': device_id,
'p': platform,
'os': 'windows',
'install_source': 'steam',
'ip': get_user_ip(),
'match_id': match_id # Include Match ID for attribution
}
response = requests.get(session_url, params=params)
return response.json()
# Example: First launch with Match ID
report_first_session_with_match_id(
sdk_key='your_sdk_key_here',
game_id='com.singular.game',
device_id='40009df0-d618-4d81-9da1-cbb3337b8dec',
platform='pc',
match_id='abc123def456' # Retrieved from landing page
)
curl -G "https://s2s.singular.net/api/v1/launch" \
--data-urlencode "a=your_sdk_key_here" \
--data-urlencode "i=com.singular.game" \
--data-urlencode "sdid=40009df0-d618-4d81-9da1-cbb3337b8dec" \
--data-urlencode "p=pc" \
--data-urlencode "os=windows" \
--data-urlencode "install_source=steam" \
--data-urlencode "ip=172.58.29.235" \
--data-urlencode "match_id=abc123def456"
async function reportFirstSessionWithMatchId(config) {
const sessionUrl = 'https://s2s.singular.net/api/v1/launch';
const params = new URLSearchParams({
'a': config.sdkKey,
'i': config.gameId,
'sdid': config.deviceId,
'p': config.platform,
'os': config.osVersion,
'install_source': config.store,
'ip': await getUserIP(),
'match_id': config.matchId // Include Match ID
});
const response = await fetch(`${sessionUrl}?${params.toString()}`);
return await response.json();
}
// Example: First launch with Match ID
reportFirstSessionWithMatchId({
sdkKey: 'your_sdk_key_here',
gameId: 'com.singular.game',
deviceId: '40009df0-d618-4d81-9da1-cbb3337b8dec',
platform: 'pc',
osVersion: 'windows',
store: 'steam',
matchId: 'abc123def456' // Retrieved from landing page
});
Match ID のベストプラクティス
実装チェックリスト
完全な実装要件:
- Web SDK 連携: 一致する Product ID を用いて、ランディングページに Singular Web SDK を実装します
-
Match ID の取得:
ユーザー認証後に
getMatchID()を使用して値を取得します - 値の送信: Web からゲームへ Match ID を渡すセキュアな仕組みを実装します
- ゲームでの保存: 初回起動/セッション報告まで、ゲーム内に Match ID を保存します
-
初回セッションのみ:
match_idパラメータは最初のセッション通知にのみ含めます - 値の検証: Match ID 値が Web とゲームの実装間で一致していることを確認します
- テスト: ランディングページのクリックからゲームのインストール、アトリビューションまでのフロー全体をテストします
アトリビューション手法の詳細とトラブルシューティングについては、 PC およびコンソールゲームアトリビューション FAQ をご覧ください。
ゲームセッションのトラッキング
Singular にゲームセッションを報告することは PC・コンソール連携で必須であり、インストールアトリビューション、リエンゲージメントトラッキング、ユーザーリテンション分析を可能にします。
セッション通知エンドポイント
実装要件
ゲームが起動するたびに Session Notification Endpoint を呼び出し、ゲームセッションについて Singular に通知します。
API リファレンス: 完全なエンドポイント仕様については、 Session Notification Endpoint のドキュメントをご覧ください。
セッション処理
アトリビューションワークフロー
セッション通知により、Singular はセッションのコンテキストに基づいて複数のアトリビューションおよび分析機能を実行できます。
処理ロジック:
- 初回セッション(インストール): 一意のインストール後の最初のゲームセッションである場合、Singular は新規インストールを認識し、インストールアトリビューションのプロセスをトリガーします
- リエンゲージメントセッション: セッションがリエンゲージメント(近日提供予定)に該当する場合、Singular はリエンゲージメントアトリビューションのプロセスをトリガーします( リエンゲージメント FAQ を参照)
- 通常のセッション: それ以外の場合は、ユーザーアクティビティとリテンションのトラッキングのためのゲームセッションとしてマークされます
実装のベストプラクティス
非同期データ収集
ゲームセッションを報告するためのデータを収集する際は、セッション通知を送信する前に、非同期関数が返るのを待ち、さまざまな機能を処理してください。
重要なタイミングに関する考慮事項:
- Match ID アトリビューション(方法 2): Web SDK + Match ID 方式を使用する場合、Match ID が利用可能になる可能性があった後にのみ、最初のゲームセッションを報告します
- ユーザー同意: ゲームが Singular のマーケティングと分析へのオプトインを提供している場合、同意が取得されるまでゲームセッションの報告を待ちます
- デバイス識別子: 最初のセッション通知の前に SDID が生成され保存されていることを確認します
セッションリクエストの例
サンプル実装
import requests
def report_game_session(sdk_key, game_id, device_id, platform, os_version, store):
"""
Report game session to Singular
"""
session_url = "https://s2s.singular.net/api/v1/launch"
params = {
'a': sdk_key,
'i': game_id,
'sdid': device_id,
'p': platform,
'os': os_version,
'install_source': store,
'ip': get_user_ip()
}
try:
response = requests.get(session_url, params=params, timeout=10)
if response.status_code == 200:
data = response.json()
if data.get('status') == 'ok':
print("Session reported successfully")
return True
else:
print(f"Session error: {data.get('reason')}")
return False
else:
print(f"HTTP error: {response.status_code}")
return False
except Exception as e:
print(f"Exception reporting session: {e}")
return False
# Example usage
report_game_session(
sdk_key='your_sdk_key_here',
game_id='com.singular.game',
device_id='40009df0-d618-4d81-9da1-cbb3337b8dec',
platform='pc',
os_version='windows',
store='steam'
)
curl -G "https://s2s.singular.net/api/v1/launch" \
--data-urlencode "a=your_sdk_key_here" \
--data-urlencode "i=com.singular.game" \
--data-urlencode "sdid=40009df0-d618-4d81-9da1-cbb3337b8dec" \
--data-urlencode "p=pc" \
--data-urlencode "os=windows" \
--data-urlencode "install_source=steam" \
--data-urlencode "ip=172.58.29.235"
async function reportGameSession(config) {
const sessionUrl = 'https://s2s.singular.net/api/v1/launch';
const params = new URLSearchParams({
'a': config.sdkKey,
'i': config.gameId,
'sdid': config.deviceId,
'p': config.platform,
'os': config.osVersion,
'install_source': config.store,
'ip': await getUserIP()
});
try {
const response = await fetch(`${sessionUrl}?${params.toString()}`);
const data = await response.json();
if (data.status === 'ok') {
console.log('Session reported successfully');
return true;
} else {
console.error('Session error:', data.reason);
return false;
}
} catch (error) {
console.error('Exception reporting session:', error);
return false;
}
}
// Example usage
reportGameSession({
sdkKey: 'your_sdk_key_here',
gameId: 'com.singular.game',
deviceId: '40009df0-d618-4d81-9da1-cbb3337b8dec',
platform: 'pc',
osVersion: 'windows',
store: 'steam'
});
ゲーム内イベントのトラッキング
パートナー Conversion API のサポート: SingularのConversion API連携を通じてこれらのイベントを広告ネットワークパートナーに転送するには、標準のオプションイベント属性(eventIdやehashなどのハッシュ化されたファーストパーティデータ)を含めてください。Conversion API連携のための標準イベント属性を参照してください。
ゲーム内イベントとユーザーインタラクションをトラッキングして、マーケティングキャンペーンのパフォーマンスを分析し、ユーザーファネルを最適化し、プレイヤージャーニー全体のエンゲージメントを測定します。
イベント設計
イベントの定義
S2S 連携を実装する前に、キャンペーン分析とユーザー行動測定のために組織がトラッキングしたいイベントを定義します。
イベント設計ガイド: ゲーム内イベントの定義
イベント通知エンドポイント
イベントの報告
ゲーム内でイベントが発生したときに Event Notification Endpoint を呼び出し、アトリビューション分析とキャンペーン最適化のために Singular に通知します。
API リファレンス: 完全なエンドポイント仕様については、 Event Notification Endpoint のドキュメントをご覧ください。
API 呼び出しに含めるイベント名によって、そのイベントが Singular のレポート、エクスポート、ポストバックでどのように識別されるかが決まります。
イベント命名のベストプラクティス
標準イベント
Singular では、パートナー連携の効率化と分析の互換性のために、標準のイベントおよび属性の命名規則の使用を推奨しています。
実装ガイドライン:
- 標準イベント: 自動的なパートナーマッピングと連携の効率化のために、 Singular の標準イベント命名規則 を使用します
- 英語: サードパーティパートナーおよび分析ソリューションとの互換性のために、カスタムイベント名と属性は英語で渡します
- 文字数制限: イベント名は 32 ASCII 文字に制限されます(UTF-8 変換で 32 バイト)
- 属性の制限: イベント属性と値は 500 ASCII 文字に制限されます
収益イベントのトラッキング
収益測定
ゲーム内購入からの収益をトラッキングしてキャンペーンのパフォーマンスと ROI を分析します。データはレポート、ログエクスポート、ポストバックで利用できます。
収益イベントの実装: Event Notification Endpoint を追加の収益パラメータとともに使用して、収益イベントとして指定します。
必須の収益パラメータ:
-
is_revenue_event=true- イベントを収益イベントとしてマークします(イベント名が__iap__の場合、または金額がゼロより大きい場合は任意) -
amt=1.99- 収益額 -
cur=USD- ISO 4217 通貨コード
イベントリクエストの例
サンプル実装
標準イベント
import requests
def report_game_event(sdk_key, game_id, device_id, platform, event_name, event_attributes=None):
"""
Report in-game event to Singular
"""
event_url = "https://s2s.singular.net/api/v1/evt"
params = {
'a': sdk_key,
'i': game_id,
'sdid': device_id,
'p': platform,
'n': event_name,
'ip': get_user_ip()
}
if event_attributes:
import json
params['e'] = json.dumps(event_attributes)
response = requests.get(event_url, params=params)
return response.json()
# Example: Level complete event
report_game_event(
sdk_key='your_sdk_key_here',
game_id='com.singular.game',
device_id='40009df0-d618-4d81-9da1-cbb3337b8dec',
platform='pc',
event_name='sng_level_achieved',
event_attributes={
'level': '5',
'score': '1250'
}
)
収益イベント
def report_revenue_event(sdk_key, game_id, device_id, platform, amount, currency):
"""
Report revenue event to Singular
"""
event_url = "https://s2s.singular.net/api/v1/evt"
params = {
'a': sdk_key,
'i': game_id,
'sdid': device_id,
'p': platform,
'n': '__iap__',
'is_revenue_event': 'true',
'amt': amount,
'cur': currency,
'ip': get_user_ip()
}
response = requests.get(event_url, params=params)
return response.json()
# Example: $9.99 purchase
report_revenue_event(
sdk_key='your_sdk_key_here',
game_id='com.singular.game',
device_id='40009df0-d618-4d81-9da1-cbb3337b8dec',
platform='pc',
amount=9.99,
currency='USD'
)
標準イベント
curl -G "https://s2s.singular.net/api/v1/evt" \
--data-urlencode "a=your_sdk_key_here" \
--data-urlencode "i=com.singular.game" \
--data-urlencode "sdid=40009df0-d618-4d81-9da1-cbb3337b8dec" \
--data-urlencode "p=pc" \
--data-urlencode "n=sng_level_achieved" \
--data-urlencode 'e={"level":"5","score":"1250"}' \
--data-urlencode "ip=172.58.29.235"
収益イベント
curl -G "https://s2s.singular.net/api/v1/evt" \
--data-urlencode "a=your_sdk_key_here" \
--data-urlencode "i=com.singular.game" \
--data-urlencode "sdid=40009df0-d618-4d81-9da1-cbb3337b8dec" \
--data-urlencode "p=pc" \
--data-urlencode "n=__iap__" \
--data-urlencode "is_revenue_event=true" \
--data-urlencode "amt=9.99" \
--data-urlencode "cur=USD" \
--data-urlencode "ip=172.58.29.235"
標準イベント
async function reportGameEvent(config) {
const eventUrl = 'https://s2s.singular.net/api/v1/evt';
const params = new URLSearchParams({
'a': config.sdkKey,
'i': config.gameId,
'sdid': config.deviceId,
'p': config.platform,
'n': config.eventName,
'ip': await getUserIP()
});
if (config.attributes) {
params.append('e', JSON.stringify(config.attributes));
}
const response = await fetch(`${eventUrl}?${params.toString()}`);
return await response.json();
}
// Example: Level complete
reportGameEvent({
sdkKey: 'your_sdk_key_here',
gameId: 'com.singular.game',
deviceId: '40009df0-d618-4d81-9da1-cbb3337b8dec',
platform: 'pc',
eventName: 'sng_level_achieved',
attributes: {
level: '5',
score: '1250'
}
});
収益イベント
async function reportRevenueEvent(config) {
const eventUrl = 'https://s2s.singular.net/api/v1/evt';
const params = new URLSearchParams({
'a': config.sdkKey,
'i': config.gameId,
'sdid': config.deviceId,
'p': config.platform,
'n': '__iap__',
'is_revenue_event': 'true',
'amt': config.amount,
'cur': config.currency,
'ip': await getUserIP()
});
const response = await fetch(`${eventUrl}?${params.toString()}`);
return await response.json();
}
// Example: $9.99 purchase
reportRevenueEvent({
sdkKey: 'your_sdk_key_here',
gameId: 'com.singular.game',
deviceId: '40009df0-d618-4d81-9da1-cbb3337b8dec',
platform: 'pc',
amount: 9.99,
currency: 'USD'
});
次のステップ
追加のリソースとサポートを活用して、PC・コンソール連携を完成させましょう。
追加リソース
ドキュメントとサポート
- API リファレンス: PC・コンソール S2S エンドポイントリファレンス
- アトリビューション FAQ: PC およびコンソールゲームアトリビューション FAQ
- Web SDK(任意): Web SDK の概要とはじめに
- イベント設計: ゲーム内イベントの定義
- 標準イベント: Singular 標準イベントリファレンス
- レスポンスコード: S2S レスポンスコードとエラーハンドリング
サポートチャネル
ヘルプの入手
実装のサポートと技術支援については、Singular チームにお問い合わせください。
- ソリューションエンジニア: 高度な機能や連携計画については、Singular のソリューションエンジニアにご相談ください
- カスタマーサクセスマネージャー: エンタープライズ機能の有効化とアカウント設定については、CSM にお問い合わせください
- サポートチーム: 技術的な問題やトラブルシューティングの支援については、サポートチケットを送信してください