engage-sdk-integration について
Android開発者向けのPlay Engage SDK統合スキルです。アプリの分野に応じたエンティティの対応付け、公開コードの生成、設定、ビルド検証を案内します。
主な機能
- 01分野ごとのエンティティとクライアントの特定
- 02公開処理用の構造化コード生成
- 03ローカルモデルとEngageエンティティの対応付け
- 04Gradleとマニフェストの設定
- 05コンパイルと統合の検証
活用シーン
- 01アプリからEngageコンテンツクラスターを公開
- 02ローカルデータをEngageエンティティに変換
- 03レシーバー登録とビルド設定の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ android/ skills --skill engage-sdk-integrationインストール後、Claude Code で/engage-sdk-integrationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/clusters.mdcommon.mdpatterns.mdrequests.mdtroubleshooting.mdreferences/android/guide/playcore/engage/faq.mdfood.mdhealthandfitness.mdlisten.mdotherverticals.mdread.mdshopping.mdsocial.mdtravel.mdwatch.mdreferences/android/guide/playcore/engage/tv/entitlements.mdgetting-started.mdrecommendations.mdreferences/android/guide/playcore/engage/tv/continue-watching/index.mdreferences/schemas/food.mdlisten.mdother.mdread.mdshopping.mdsocial.mdtravel.mdtv.mdwatch.md詳細
このスキルでは、Play Engage SDK を Android アプリに統合する手順を説明します。コードが必須の構造に従い、各バーティカルに必要な Engage エンティティを使用するようにします。
ワークフロー
開発者を支援するには、次の手順に従います。
-
バーティカルとクラスターを特定します。
- アプリがどのバーティカルに属するか、references/schemas/ に基づいて開発者に尋ねます。
- 統合対象が TV 向けかモバイル向けかを確認します。TV 向けの場合は、patterns.md の TV 固有のセクションも読みます。
- references/schemas/ ディレクトリ内の
{VERTICAL}.mdを使用して、対応する Engage エンティティとclientクラス名を特定します。JSON のclientフィールドには完全修飾クラス名が記載されています。例:com.google.android.engage.food.service.AppEngageFoodClient。 - 注: クライアントクラスの初期化には
Contextパラメーターが必要です。例:AppEngageFoodClient(context)。 - 共通エンティティについては、必ず common.md を参照します。
- そのバーティカルでサポートされているクラスタータイプのうち、どのタイプを公開したいか開発者に尋ねます。
- 指定されたクラスターについて、references/schemas/ ディレクトリ内の
{VERTICAL}.mdから呼び出すメソッドを確認します。各メソッドには、必要なリクエストが記載されています。 - requests.md からリクエストの構造を、clusters.md からクラスターを取得します。そのうえで、必要なエンティティとクラスターとともに、リクエストの各フィールドを正しく埋めるための情報源を提案し、使用します。
-
構造化されたボイラープレートコードを生成します。
- Engage 関連コードをすべて格納する新しいディレクトリを作成します。既存のコードベースの命名規則に合わせてディレクトリ名を付けます。
- patterns.md のテンプレートを使用して、次のクラスを生成します。
Constants:試行回数や公開タイプなどの定数値を保持します。ItemToEntityConverter:アプリのローカルモデルを Engage の Entity モデルに変換します。ClusterRequestFactory:公開リクエストを構築します。EngageWorker:WorkManager を使用して、実際の公開処理と公開エラーを処理します。EngagePublisher:定期ジョブと単発ジョブを調整します。EngageBroadcastReceiver:AppEngageService インテントを監視し、EngagePublisherから単発の公開ジョブを開始します。重要:EngageBroadcastReceiverクラス内にコンパニオンオブジェクトのregisterメソッドを含め、静的登録と動的登録の両方のパターンを実装します。
-
エンティティのマッピングを提案します。
- 開発者に、ローカルモデルのスキーマ(データクラスや JSON スニペットなど)を提示してもらいます。
- 提示されていない場合は、ガイドとして references/schemas/ ディレクトリ内の
{VERTICAL}.mdにあるエンティティを共有します。 - ローカルモデルを特定したら、対応する Engage エンティティへのマッピングを提案します。
- patterns.md の
ItemToEntityConverterパターンを使用して変換ロジックを生成し、生成した{ENGAGE_CODE_DIR}/ItemToEntityConverterに追加します。
-
データソースを提案します。
- 公開する実データのソースを開発者に提示してもらいます。
- データソースを特定したら、それを使用してアプリのローカルモデルスキーマに沿ったデータを取得します。
{ENGAGE_CODE_DIR}/ItemToEntityConverterを使用して、このデータを Engage エンティティに変換します。- 取得した Engage エンティティモデルのデータを
{ENGAGE_CODE_DIR}/ ClusterRequestFactoryで使用して、クラスターリクエストを取得します。 - 前の手順で取得したリクエストを使い、references/schemas/ ディレクトリ内の
{VERTICAL}.mdで確認した対応するクラスター公開メソッドを{ENGAGE_CODE_DIR}/EngageWorker内で呼び出します。
-
Gradle とマニフェストを更新します。
build.gradleとAndroidManifest.xmlへの更新を提案します。- モバイルアプリの場合は、patterns.md を使用してください。
- TV アプリの場合は、patterns.md 内の TV 固有のセクションを使用してください。
- patterns.md から、
build.gradleまたはbuild.gradle.ktsに必要なimplementation依存関係を提供します。 AndroidManifest.xmlに<receiver>および<service>の宣言を提供します。- 注: TV を除き、業種固有のインポートはありません。その他のすべての業種では、
com.google.android.engage:engage-core:1.6.0で十分です。
-
デバッグと検証:
- 自己検証チェックリスト: 作業が完了したと見なす前に、以下をすべて実装したことを検証する必要があります:
- [ ]
AndroidManifest.xml内で(<application>タグ内に)EngageBroadcastReceiverを静的に登録した。 - [ ]
ApplicationクラスまたはメインのActivityクラスでEngageBroadcastReceiver.register(context)を呼び出すことにより、EngageBroadcastReceiverを動的に登録した。 - [ ] 動的登録を処理するために、
EngageBroadcastReceiverのcompanion objectにregisterメソッドを実装した。 - [ ]
EngageWorkerで空のデータリストを処理した(たとえば、空のデータを公開する代わりにクラスターを削除するなど)。 - [ ] すべての Gradle コンパイルで
--no-daemonを使用した。
- [ ]
- Gradle 同期を実行します。
- エラーが発生した場合(インポートの失敗、名前空間の競合、コンパイルエラーなど)は、references/troubleshooting.md を読んで解決してください。
- Gradle コンパイルを実行します。
./gradlew compileDebugUnitTestSources --no-daemonまたは./gradlew assembleDebug --no-daemonを実行する必要があります。コンパイルのルールと高速コンパイルのショートカットに関する警告については、references/troubleshooting.md を参照してください。コンパイルが成功するまで、このステップを繰り返してください。
- 自己検証チェックリスト: 作業が完了したと見なす前に、以下をすべて実装したことを検証する必要があります:
-
ユーザーチェックリスト: コード生成の最後に、統合が完了し意図どおりであることを確認するために、このチェックリストを確認するようユーザーに通知します:
- [ ] すべての Engage 関連ファイルが
{ENGAGE_CODE_DIR}/に作成されていることを確認する:ConstantsItemToEntityConverterClusterRequestFactoryEngageWorker{cluster_type}PublisherEngageBroadcastReceiver
- [ ]
{ENGAGE_CODE_DIR}/ItemToEntityConverter内のモデルのフィールドを正しく設定することにより、アプリのローカルモデルが Engage エンティティに変換されることを確認する。 - [ ]
ItemToEntityConverter内のすべての画像 URI が、業種の厳格なアスペクト比要件(たとえば、16:9、1:1、2:3)に一致する画像を指していることを確認する。 - [ ]
{ENGAGE_CODE_DIR}/EngageWorkerがステップ 4 で特定したデータソースを使用していることを確認する。 - [ ] レシーバーを動的に登録するために、
EngageBroadcastReceiver.register(context)がApplicationクラスまたはMainActivity内で呼び出されていることを確認する。 - [ ]
AndroidManifest.xmlに、必要な intent アクションを伴うEngageBroadcastReceiverの静的な<receiver>宣言が含まれていることを確認する。 - 重要: レシーバーを動的に登録するために、開発者独自の
ApplicationクラスのonCreate()(またはメインアクティビティのonCreate())内でEngageBroadcastReceiver.register(context)を呼び出すよう明示的に指示してください。統合が機能するには、静的登録と動的登録の両方が必要であることを強調してください。
- [ ] すべての Engage 関連ファイルが
参考資料
-
FAQ: Engage FAQ - 開発者からよく寄せられる質問への回答については、このドキュメントを参照してください。
-
分野別ガイド:
-
分野別スキーマ:
コメント
Markdown 対応