Communityコーディング&開発github.com

BaronCyrus/ship-google-play

Unity ゲームを署名済み AAB にビルドし、Google Play アカウント登録からアプリ作成、コンテンツ入力、クローズドテスト申請、12 名以上のテスターによる 14 日間テストを経て、正式版リリースと審査提出まで自動化するスキルです。

ship-google-play とは?

このスキルは、Google Play への Unity ゲーム公開プロセス全体を、開発者の代わりに実行・管理します。最初に Play コンソールでのアカウント登録(個人/組織)、取引者ステータスの宣言、デベロッパー検証などの事前設定を行います。次に、プロジェクトのビルド環境(Unity バージョン、ターゲット SDK、IL2CPP、署名キー)を確認し、Android App Bundle(AAB)を生成、アップロードします。その後、ストアリスティング(説明文、スクリーンショット、プライバシーポリシー)を準備し、クローズドテスト版を審査提出。12 名以上のテスターが 14 日間連続でテストに参加するという個人アカウントの条件を満たすよう、募集と更新を補助します。テスト期間中は、Play Games Services(ログイン、実績、リーダーボード、クラウドセーブ)、AdMob(広告)、アプリ内レビュー/アップデート、アプリ内課金(Unity IAP)といったプラットフォーム機能の統合も並行して行います。最終的に、正式版リリース申請(約 7 日間の審査)を行い、公開後は収益化(AdMob / Play の支払い設定)やクラッシュ監視のフォローも行います。審査拒否やテスト人数不足などの問題が発生した場合のトラブルシューティングもカバーしており、Claude Code や Cursor などの AI エージェントが開発者のガイド役として一貫して利用できるよう設計されています。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/BaronCyrus/ShipMyGame/tree/HEAD/skills/ship-google-play

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Google Play:アカウント登録から審査提出まで

目標:まずクローズドテスト版を「審査中」(実測数時間で承認)にし、個人アカウントのテスト要件を満たしてからプロダクション版を「審査中」にする。

事前確認:ship-my-game のステップ 1~4(進捗ファイル、チャンネル、環境チェック、ブラウザ)が完了していることを確認する。未完了の場合は先に読む。本チャンネルの進捗は ## google-play セクションに記録する。

作業開始前にユーザーに以下の 5 つを質問し、答えを進捗ファイル [実測:問診リスト] に記録する:

  1. Play デベロッパーアカウントを持っているか?個人か組織か?いつ頃登録したか?
  2. どの国・地域に住んでいるか?これによりマーチャントアカウントが支払いを受け取れるかが決まる 公式。
  3. どうやって収益を得るか:広告、アプリ内課金、有料ダウンロード、収益なし?これにより公開される個人情報と取引者ステータスの宣言方法が変わる。
  4. プライバシーポリシーはどの公開 HTTPS サイトに置くか?ストアで公開する連絡先メールアドレスはどれか?
  5. AdMob アカウントを持っているか?Play デベロッパーアカウントと同じ Google アカウントを使うことを推奨。

次にユーザーに 3 つのことを伝える:

  1. テスト要件:2023-11-13 以降に登録した個人アカウントは、正式公開前に少なくとも 12 名の実テスターが連続 14 日間クローズドテストに参加し、その後プロダクション版を申請する必要がある(審査は通常 7 日以内)公式。そのため、クローズドテスト承認から正式公開までは最低 2 週間以上かかる。

  2. 公開される情報:

    • 個人アカウント:法定氏名、国、デベロッパーメールアドレスが公開される。
    • Play で収益を開始(有料アプリ、アプリ内課金)すると、完全な住所が公開される。
    • 「取引者」と宣言した個人アカウントは電話番号と住所も公開される。

    登録前に onboarding.md のセクション 1 で説明する。

  3. AAB アップロード:AAB は通常数十 MB で、ブラウザツールは 1 回 10 MB までしかアップロードできないため、最初の AAB はユーザーにページにドラッグ&ドロップしてもらう。以降は Developer API 経由で可能(本リポジトリでは未検証)。automation.md 参照。

ユーザー自身が必要な作業

作業フェーズ
登録:US$25 支払い、本人確認書類、メール&電話確認コード、Android 実機デバイス検証(Play Console モバイルアプリの QR コードを使用)、取引者ステータス宣言P1
同意の確認:《デベロッパー配布契約》;アプリ作成時の「デベロッパー プログラム ポリシー」「米国輸出法律」宣言;IARC 利用規約;PGS と Google Cloud の利用規約(使用時に同意);《Google API サービス:ユーザーデータポリシー》P1、P3、P6
AAB をページのアップロードボックスにドラッグ&ドロップP4、以降のアップデート毎(API を使わない場合)
「N 件の変更を審査に送信」:ユーザーが「送信」と言った後、あなたがクリック;権限システムでブロックされた場合はユーザーがクリックP4、P7
Google グループ作成時の CAPTCHA;Reddit などのコミュニティでの投稿、相互テスト;自分のアカウントでのテスト参加P5
実機での音声確認、PGS ログイン、全体的な操作感の確認P2、P6
OAuth 同意画面の「アプリを公開」、PGS の「ゲームプロジェクトを公開」P6
AdMob 登録:国、利用規約、CAPTCHA、お支払い&税務情報P6
プライバシーポリシーと app-ads.txt をユーザーのウェブサイトに公開することへの同意;ホスティングに費用がかかる場合はユーザーが判断P2、P6
支払い受け取り:AdMob の本人確認書類、PIN コード、お支払い方法、米国税務情報;Play のマーチャント ペイメント プロフィールと銀行口座公開後

エンジニアリング要件

ship-my-game のステップ 3 で、以下の表に基づいてギャップを確認する。詳細は references/build.md 参照。

項目要件根拠
Unityターゲット API 36 には 6000.0.46f1+ または 2022.3.62f1+ が必要;16 KB ページには 6000.0.38f1+ または 2022.3.56f1+、Burst 1.8.21+ が必要。実測では 6000.6.5f1 を使用公式;[実測]
モジュールAndroid Build Support(OpenJDK、SDK、NDK を含む)—
targetSdk36(2026-08-31 から必須;延期期限の 2026-11-01 は既に経過)。minSdk は 24 以上、実測では 26公式;[実測]
アーキテクチャとフォーマットIL2CPP、ARM64 + ARMv7、AAB;シンボルテーブルを AAB に含める[実測]、scripts/ShipAndroidBuild.cs で設定
16 KB メモリページネイティブライブラリ(Unity はすべて含む)を含むパッケージは 16 KB アライン必須。ビルド後に確認公式
署名アップロードキーは scripts/make_upload_keystore.sh で生成し、プロジェクト外に保存;アプリ署名キーは Google が管理[実測]
音声起動される各シーンに AudioListener が 1 つだけ存在すること[実測-失敗] 2 つのゲームでこれが原因で無音で公開された
広告クローズドテスト中はすべて Google テスト広告 ID を使用。広告が取得できない場合はエントリを非表示に[実測]
アプリ内課金Unity IAP ≥ 4.14.0 または 5.x(Play 請求ライブラリ ≥ 8)公式
プライバシーポリシー公開 HTTPS ページ。Play Console とゲーム内の両方にリンクを配置。テンプレート templates/privacy-policy.en.html公式;[実測]
センシティブ権限マージ後のマニフェストに使用しない写真、動画、連絡先、位置情報などの権限を含めない公式

フェーズ

コマンドとリンク内の相対パス(scripts/…、../ship-my-game/…)は、本スキルディレクトリを起点とする。バックエンドのパスは Play Console の英語表記に準拠(必要に応じて日本語表記も併記)。

P1 アカウント(既に持っている場合は完了基準の各項目を確認)

  1. https://play.google.com/console を開き、ページの内容からデベロッパーアカウントの有無、個人か組織かを判断する。
  2. アカウントがない場合:まず onboarding.md のセクション 1「公開される情報」を説明し、ユーザーが同意したら登録に進む。支払い、本人確認書類、確認コード、デバイス検証はユーザーが実行する 公式。
  3. 取引者ステータス:新規アカウント作成時に宣言する必要がある(「アカウント管理 → アカウントの詳細 → あなたについて」)。既存アカウントは遅くとも 2027-02-01 までに宣言。ユーザーが自身の状況に基づいて決定する。判断基準と結果を説明する 公式。
  4. 「ホーム」で検証に関する ToDo をすべてクリアし、「Android デベロッパー検証」のステータスを確認する(新しいアプリを作成すると自動的にパッケージ名が登録される)公式。

完了基準:

  • ホームに未完了の検証タスクがない。
  • 進捗ファイルに、アカウントタイプ、登録時期(12 人 × 14 日ルールの対象か否か)、取引者ステータスが記録されている。

P2 プロジェクト、アップロードキー、最初の AAB

  1. 「エンジニアリング要件」に従いプロジェクトを修正:scripts/ShipAndroidBuild.cs を Assets/Editor/ にコピーし、各シーンの AudioListener を確認する。
  2. アップロードキーを生成:bash scripts/make_upload_keystore.sh <パッケージ名> を実行し、ユーザーに ~/.shipmygame/keys/<パッケージ名>/ のバックアップを促す [実測]。
  3. ビルド:../ship-my-game/scripts/unity_build.sh <プロジェクトディレクトリ> Android ShipAndroidBuild.Aab release -shipVersion 1.0.0 -shipVersionCode 1
    • [実測]:このスクリプトで空のプロジェクトからデバッグ APK をビルドした実績あり;同じ構成のビルドスクリプトで 2 つのゲームの署名済み AAB を生成した実績あり。
  4. 自己チェック:bundletool を使用してマニフェスト(targetSdk 36、テスト広告 App ID)を確認し、シンボルが AAB に含まれていること、16 KB アラインであることを確認。コマンドは build.md のセクション 4 を参照。
  5. ShipAndroidBuild.Apk でデバッグ APK をビルドし、ユーザーにスマートフォンにインストールしてもらい、音声が聞こえることを確認する [実測:エミュレータでは音声確認不可]。
  6. templates/privacy-policy.en.html からプライバシーポリシーを生成:すべての {{プレースホルダー}} を置き換え、ゲームで使用しない AdMob、PGS、アプリ内課金のセクションは削除する。ユーザーの同意を得た後、公開 HTTPS サイトに公開し、curl で 200 が返ることを確認する [実測]。

完了基準:

  • 署名済み AAB が 1 つ存在する。versionCode と自己チェック結果が進捗ファイルに記録されている。
  • ユーザーが実機で音声を確認済み。
  • プライバシーポリシーの URL が 200 を返す。

P3 アプリ作成、アプリコンテンツ、ストアリスティング

  1. 「ホーム → アプリを作成」:名前、パッケージ名(先に「利用可能性を確認」をクリック)、デフォルト言語、ゲーム、無料または有料を入力。2 つの宣言はユーザーがチェックする。各項目の詳細は console.md のセクション 1 を参照 [実測]。
  2. ダッシュボードの「ゲームの設定を完了」の 11 項目を 1 つずつ完了する:プライバシーポリシー、ログインデータ、広告、コンテンツレーティング、対象年齢層と家族、データ セーフティ、政府系アプリ、金融サービスと金融商品、健康、カテゴリと連絡先情報、ストアの掲載情報。回答は console.md のセクション 2 を参照 [実測]。
  3. 「モニタリングと改善 → ポリシーとプログラム → アプリのコンテンツ」:すべての「宣言を開始」をクリアする。特に「広告 ID」。これは 11 項目に含まれず、入力しないと審査でブロックされる [実測-失敗 → 修正済み]。
  4. 「ストアの掲載情報 → ストアの設定」:カテゴリ、最大 5 つのタグ、連絡先情報(ウェブサイトは app-ads.txt が置かれているドメインを使用)[実測]。
  5. 「ストアの掲載情報 → ストアの掲載情報」:説明文、アイコン、フィーチャーグラフィック、スクリーンショット、AI リソース宣言。多言語対応には「AI を使用して翻訳をインポート」を使用し、インポート後は各言語を確認。詳細は listing.md を参照 [実測]。

完了基準:

  • ダッシュボードの「ゲームの設定を完了」ブロックが表示されなくなる。
  • 「アプリのコンテンツ」に未処理項目がない。
  • ストアの掲載情報のステータスが「審査に送信可能」であり、素材のソースファイルがすべて publish/google-play/ にある。

P4 クローズドテスト初回リリース(レビューゲート)

  1. 「テストとリリース → テスト → クローズドテスト」(デフォルトトラック「クローズドテスト - Alpha」):

    • 国/地域は「すべて選択」;
    • テスターは Google グループ(推奨)またはメーリングリスト。どちらか一方のみ選択可能;
    • フィードバック用メールアドレスを入力。

    詳細は console.md のセクション 5 を参照 [実測]。

  2. 「新しいリリースを作成」:まずリリース名と多言語版のリリースノートを入力し、「下書きとして保存」をクリック。次にユーザーに AAB をアップロードボックスにドラッグ&ドロップしてもらい、ページをポーリングして「1 (1.0.0)」のようなエントリが表示されるのを待つ [実測]。

  3. 「次へ」→「確認の詳細を展開」を読む→「保存」→「リリースの概要」で、クイックチェックが完了するのを待つ(最長約 14 分)。問題があれば先に修正する [実測]。

  4. レビューゲート に従い、内容をユーザーに提示する。ユーザーが「送信」と言ったら「N 件の変更を審査に送信」→「変更内容を審査に送信」をクリック。権限システムでブロックされた場合はユーザーにクリックしてもらう。詳細は review.md のセクション 1 を参照 [実測]。

完了基準:

  • リリースの概要に「審査中の変更」と表示されている。
  • 進捗ファイルに送信時間と予想所要時間(実測 10~42 分、公式では通常 7 日以内)、および結果確認先(リリースの概要)が記録されている。

P5 テスター募集、14 日間の待機(個人アカウントの場合。P6 と並行可能)

  1. 承認後、「テスター」タブで、コピーボタンの aria-label から 2 つの参加リンクを取得する [実測]。
  2. templates/testers-recruitment.md を使って募集テキストを作成する。Google グループ作成時の CAPTCHA はユーザーが通過;コミュニティへの投稿はユーザーが行う [実測]。詳細は review.md のセクション 2 を参照。
  3. 毎日、ダッシュボードの「プロダクション アクセス権を申請する」カードを確認:「現在 N 名のテスターが M 日間継続してテストに参加しています」[実測:カード原文]。
  4. フィードバックに応じてアップデートをリリース:versionCode を 1 増やし、P4 のステップ 2~4 を実行。または automation.md の API を使用。変更はまとめて一度に送信する(再送信により進行中の審査がキャンセルされるため)[実測]。
  5. 「モニタリングと改善 → 評価とレビュー → テストのフィードバック」からのフィードバックと、それに対応する修正内容を進捗ファイルに記録する。P7 のアンケートで使用する 公式。

完了基準:カード上で「少なくとも 12 名のテスター」「少なくとも 14 日間」の両方にチェックが入っている。進捗ファイルにフィードバックと修正の記録がある。

P6 プラットフォーム機能(P5 と並行)

  1. Play Games Services:

    • バックエンド:設定、OAuth 同意画面、認証情報(すべての署名証明書の SHA-1 を作成すること)、実績(少なくとも 10 個)、リーダーボード、テスター;
    • Unity:scripts/ShipPgsSetup.cs と scripts/ShipPlayGames.cs;
    • 「アプリを公開」と「ゲームプロジェクトを公開」はユーザーがクリック。

    詳細は capabilities.md のセクション 1 を参照 [実測:バックエンド設定]。

  2. AdMob:

    • アプリと広告ユニットを作成。scripts/ShipAds.cs(UMP 同意 → 初期化 → リワード、インタースティシャル、バナー);
    • GDPR メッセージを公開。app-ads.txt を準備;
    • テスト期間中はテスト ID を使用。正式公開後にストアを関連付ける。

    詳細は capabilities.md のセクション 2 を参照 [実測:バックエンド設定]。

  3. アプリ内レビュー、アプリ内アップデート:scripts/ShipPlayReview.cs;アプリ内課金:Unity IAP。詳細は capabilities.md のセクション 3、4 を参照 [公式]。

  4. 機能を統合するたびに、データ セーフティ宣言とプライバシーポリシーを更新し、次のバージョンと一緒に審査に提出する(P4 のステップ 2~4)[実測]。

完了基準:

  • 統合した各機能が、ユーザーによって実機でテストトラックからインストールされ、検証済み。
  • PGS 設定が公開済み。データ セーフティ宣言とプライバシーポリシーが機能と一致している。
  • 本番用広告 ID は進捗ファイルにのみ記録され、テストビルドには含まれていない。

P7 プロダクションアクセス申請と正式版リリース(レビューゲート)

  1. カードの 3 つの条件がすべてチェックされたら、まずテンプレートにリストされているページでテストデータを確認。次に templates/production-access-answers.md に基づいて 3 部構成のアンケート(全 9 問、各テキスト回答は最大 300 文字)を作成し、ユーザーに 1 つずつ確認してもらう [実測]。
  2. レビューゲートの内容をユーザーに提示:アンケート回答、テスター数と日数、結果は 7 日以内と予想。ユーザーが「送信」と言ったら、「ダッシュボード → プロダクション アクセス権を申請する」で「プロダクション アクセス権を申請」をクリック。最初の 2 ステップで「次へ」、最後のステップで「適用」をクリック。ページに「プロダクション アクセス権の申請を受け付けました」と表示されるまでが提出完了 [実測]。送信時間を進捗ファイルに記録。結果はメールとダッシュボードカードで確認。
  3. 承認後(アカウント所有者にメールで通知)、review.md のセクション 6 に従いプロダクションリリースを準備:
    • 本番用広告 ID と App ID に切り替え。versionCode を 1 増やす(承認待ちの間にビルドしておき、このビルドはプロダクション版のみに使用);
    • まず PGS 設定を公開し、少なくとも 2 時間待ってからゲームをリリース;
    • 「テストとリリース → プロダクション →「新しいリリースを作成」」。
  4. 再度レビューゲートを通過し、プロダクション版を審査に送信。ページが「審査中」であることを確認する。

完了基準:

  • リリースの概要で、プロダクション版が「審査中の変更」に表示されている。
  • 進捗ファイルに送信時間、予想所要時間、確認先(リリースの概要、メール)が記録されている。

待機期間と公開後

  • クローズドテスト審査待ち(実測数十分から数時間):ストア素材、PGS、AdMob のバックエンド設定を行う。
  • 14 日間待機:毎日カードの人数と日数を確認。フィードバックに応じて 1~2 回アップデートをリリース。この期間に機能統合を行う。
  • プロダクションアクセス権審査待ち(約 7 日間):本番用広告のビルドを作成し、チェックリスト(review.md セクション 6)を確認。ストアプロモーション用素材を準備。
  • 公開後:AdMob でストアを関連付け、app-ads.txt の確認を完了(capabilities.md セクション 2.7)。クローズドテストのテスターはプロダクション版と実際の広告を受け取る。テストトラックを停止してもこれを防げない(review.md セクション 6)。Android Vitals でクラッシュ率と ANR を監視。2027-02 からはメモリ使用量が評価対象となり、DEX が 50 MB を超えるゲームはコード最適化が必要になる(公式)。アップデートのたびに versionCode を増やし、変更をまとめて一度に審査に送信する。
  • 支払い受け取り:AdMob は残高が 10 ドルを超えると本人確認と住所確認(PIN コードは郵送、約 3 週間)が必要。100 ドルを超えると毎月 21 日前後に支払い。アプリ内課金の収益を受け取るには、まずマーチャント ペイメント プロフィールを作成し、銀行口座を追加する。毎月 15 日から前月分の収益が支払われる。詳細は payouts.md を参照。
  • 審査拒否またはブロック:review.md のセクション 4 と troubleshooting.md を参照。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

関連スキル