Protected Audience オークションは、視覚的に、または Perfetto を使用した SQL クエリによって分析できます。広告テクノロジーは、Perfetto でプロファイリングを使用して、次のような Protected Audience のオークションのパフォーマンスを測定できます。
- 入札スクリプトとスコアリング スクリプトの CPU 時間
- Key-Value サービスなどの HTTP リクエストのレイテンシ
- コールド キャッシュとホット キャッシュのパフォーマンスへの影響
- カスタム オーディエンスの増減
- シグナルセットの大小
- すべての入札に共通のスクリプトを使用する場合と、カスタム オーディエンスごとに異なる入札ロジック スクリプトを使用する場合の比較
セットアップ
- Perfetto とプライバシー サンドボックスのリポジトリのクローンを作成します。 - git clone https://android.googlesource.com/platform/external/perfetto- git clone https://github.com/android/privacy-sandbox-samples
- Android Studio で、 - privacy-sandbox-samples/Fledge/FledgeKotlinディレクトリから Protected Audience のサンプルアプリを開きます。
- テストデバイスまたはエミュレータにサンプルアプリをビルドしてインストールします。 
オークションを実行して Perfetto トレースを行う
- テスト HTTPS エンドポイントをセットアップしてデプロイします。ホストされているエンドポイントの URL は Protected Audience デモアプリの動作に必要なためメモしておきます。
- テスト エンドポイント URL を指定してデモアプリを起動します。 - <test-endpoint-url>は、前の手順でメモしておいたホストされているエンドポイントの URL に置き換えます。- adb shell am start -n com.example.adservices.samples.fledge.sampleapp/.MainActivity \ -e baseUrl "<test-endpoint-url>"
- [Shoes CA] を切り替えて、少なくとも 1 つのカスタム オーディエンスがアクティブであることを確認します。 ![デモアプリで [Shoes CA] がオンになっている。](https://privacysandbox.google.com/static/private-advertising/protected-audience/android/developer-guide/profiling/fledge-demo-app.png?hl=ja)  - Protected Audience デモアプリ。 
- Privacy Sandbox DevTools GitHub リポジトリの trace_config.textproto ファイルを使用してトレースを記録します。 - ./perfetto/tools/record_android_trace \ -c path/to/trace_config.textproto
- [Run Ad Selection] ボタンをタップして、オークションの結果を待ちます。オークションが完了すると、出力に [Would display ad from - http://example.com/bidding/render_shoes] などのメッセージが表示されます。
- ターミナルで - record_android_traceプログラムを停止(Ctrl+C)してトレースを終了します。ブラウザで Perfetto UI が開き、トレースデータが読み込まれます。
Perfetto でトレースを視覚的に探索する
- UI の上部にあるアドレスバーを使用して「RunOnDeviceAdSelection」を検索します。Enter キーを押して検索を実行し、結果を表示します。   - Perfetto での単一購入者の Protected Audience オークション。 
- トレースをクリックして詳細を確認します。実行レイテンシなどの詳細についてはここで確認できます。   - トレース セグメントの詳細を表示している。 
Protected Audience 固有のトレース セグメント
Protected Audience オークションは複雑なプロセスであり、Perfetto トレースがキャプチャするセグメントは数多くあります。次の表は各トレース セグメントの内容をまとめたものです。
| タイミング | セグメント | 説明 | 頻度 | 
|---|---|---|---|
| オークション前 | RunOnDeviceAdSelection | オークションのエンドツーエンド | オークションごと | 
| 入札(バイサイド) | FilterContextualAds | コンテキスト広告でアプリ インストールとフリークエンシー キャップのフィルタリングを実施 | オークションごと | 
| GetBuyersCustomAudience | データベースから購入者のカスタム オーディエンスを読み込む | 購入者ごと | |
| FilterCustomAudiences | カスタム オーディエンスでアプリ インストールとフリークエンシー キャップのフィルタリングを実行する | オークションごと | |
| GetTrustedBiddingSignals | 購入者の入札シグナルを読み込む | 購入者ごと | |
| RunBiddingPerCustomAudience | 単一のカスタム オーディエンスの広告入札 | カスタム オーディエンスごと | |
| GetBuyerDecisionLogic | ネットワークまたはデータベースから購入者の JavaScript を読み込む(キャッシュされている場合) | カスタム オーディエンスごと | |
| RunBidding | 購入者の JavaScript の実行 | 購入者ごと | |
| GenerateBids | カスタム オーディエンスの JavaScript の実行 | カスタム オーディエンスごと | |
| スコアリング(セルサイド) | GetTrustedScoringSignals | 販売者のスコアリング シグナルを読み込む | 販売者ごと | 
| RunAdScoring | スコアリングの JavaScript の実行 | オークションごと | |
| ScoreAd | 広告の JavaScript の実行 | 広告ごと | |
| GetAdSelectionLogic | 販売者の広告選択ロジックを読み込む | オークションごと | |
| RunAdOutcomeSelection | 最後のフィルタリング | オークションごと | |
| オークション後 | PersistOnDeviceAdSelection | オークションの結果をデータベースに書き込む | オークションごと | 
平均実行レイテンシのクエリ
Perfetto では SQL クエリを使用して、特定のトレースで何が起こっているかを正確に測定できます。
このセクションでは、JavaScript の実行における平均実行レイテンシを測定する方法について説明します。
- Perfetto で、左側のナビゲーション ペインの [Query (SQL)] に移動します。
- 次のクエリを入力します。 - SELECT AVG(dur) FROM slice WHERE slice.name GLOB 'FetchPayload';
- クエリを実行して結果を確認します。   - SQL クエリではナノ秒単位で結果が表示されます。