Google Play:アカウント登録から審査提出まで
目標:まずクローズドテスト版を「審査中」(実測数時間で承認)にし、個人アカウントのテスト要件を満たしてからプロダクション版を「審査中」にする。
事前確認:ship-my-game のステップ 1~4(進捗ファイル、チャンネル、環境チェック、ブラウザ)が完了していることを確認する。未完了の場合は先に読む。本チャンネルの進捗は ## google-play セクションに記録する。
作業開始前にユーザーに以下の 5 つを質問し、答えを進捗ファイル [実測:問診リスト] に記録する:
- Play デベロッパーアカウントを持っているか?個人か組織か?いつ頃登録したか?
- どの国・地域に住んでいるか?これによりマーチャントアカウントが支払いを受け取れるかが決まる 公式。
- どうやって収益を得るか:広告、アプリ内課金、有料ダウンロード、収益なし?これにより公開される個人情報と取引者ステータスの宣言方法が変わる。
- プライバシーポリシーはどの公開 HTTPS サイトに置くか?ストアで公開する連絡先メールアドレスはどれか?
- AdMob アカウントを持っているか?Play デベロッパーアカウントと同じ Google アカウントを使うことを推奨。
次にユーザーに 3 つのことを伝える:
-
テスト要件:2023-11-13 以降に登録した個人アカウントは、正式公開前に少なくとも 12 名の実テスターが連続 14 日間クローズドテストに参加し、その後プロダクション版を申請する必要がある(審査は通常 7 日以内)公式。そのため、クローズドテスト承認から正式公開までは最低 2 週間以上かかる。
-
公開される情報:
- 個人アカウント:法定氏名、国、デベロッパーメールアドレスが公開される。
- Play で収益を開始(有料アプリ、アプリ内課金)すると、完全な住所が公開される。
- 「取引者」と宣言した個人アカウントは電話番号と住所も公開される。
登録前に onboarding.md のセクション 1 で説明する。
-
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 を含む) | — |
| targetSdk | 36(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 アカウント(既に持っている場合は完了基準の各項目を確認)
- https://play.google.com/console を開き、ページの内容からデベロッパーアカウントの有無、個人か組織かを判断する。
- アカウントがない場合:まず onboarding.md のセクション 1「公開される情報」を説明し、ユーザーが同意したら登録に進む。支払い、本人確認書類、確認コード、デバイス検証はユーザーが実行する 公式。
- 取引者ステータス:新規アカウント作成時に宣言する必要がある(「アカウント管理 → アカウントの詳細 → あなたについて」)。既存アカウントは遅くとも 2027-02-01 までに宣言。ユーザーが自身の状況に基づいて決定する。判断基準と結果を説明する 公式。
- 「ホーム」で検証に関する ToDo をすべてクリアし、「Android デベロッパー検証」のステータスを確認する(新しいアプリを作成すると自動的にパッケージ名が登録される)公式。
完了基準:
- ホームに未完了の検証タスクがない。
- 進捗ファイルに、アカウントタイプ、登録時期(12 人 × 14 日ルールの対象か否か)、取引者ステータスが記録されている。
P2 プロジェクト、アップロードキー、最初の AAB
- 「エンジニアリング要件」に従いプロジェクトを修正:
scripts/ShipAndroidBuild.csをAssets/Editor/にコピーし、各シーンの AudioListener を確認する。 - アップロードキーを生成:
bash scripts/make_upload_keystore.sh <パッケージ名>を実行し、ユーザーに~/.shipmygame/keys/<パッケージ名>/のバックアップを促す[実測]。 - ビルド:
../ship-my-game/scripts/unity_build.sh <プロジェクトディレクトリ> Android ShipAndroidBuild.Aab release -shipVersion 1.0.0 -shipVersionCode 1[実測]:このスクリプトで空のプロジェクトからデバッグ APK をビルドした実績あり;同じ構成のビルドスクリプトで 2 つのゲームの署名済み AAB を生成した実績あり。
- 自己チェック:bundletool を使用してマニフェスト(targetSdk 36、テスト広告 App ID)を確認し、シンボルが AAB に含まれていること、16 KB アラインであることを確認。コマンドは build.md のセクション 4 を参照。
ShipAndroidBuild.Apkでデバッグ APK をビルドし、ユーザーにスマートフォンにインストールしてもらい、音声が聞こえることを確認する[実測:エミュレータでは音声確認不可]。templates/privacy-policy.en.htmlからプライバシーポリシーを生成:すべての{{プレースホルダー}}を置き換え、ゲームで使用しない AdMob、PGS、アプリ内課金のセクションは削除する。ユーザーの同意を得た後、公開 HTTPS サイトに公開し、curlで 200 が返ることを確認する[実測]。
完了基準:
- 署名済み AAB が 1 つ存在する。versionCode と自己チェック結果が進捗ファイルに記録されている。
- ユーザーが実機で音声を確認済み。
- プライバシーポリシーの URL が 200 を返す。
P3 アプリ作成、アプリコンテンツ、ストアリスティング
- 「ホーム → アプリを作成」:名前、パッケージ名(先に「利用可能性を確認」をクリック)、デフォルト言語、ゲーム、無料または有料を入力。2 つの宣言はユーザーがチェックする。各項目の詳細は console.md のセクション 1 を参照
[実測]。 - ダッシュボードの「ゲームの設定を完了」の 11 項目を 1 つずつ完了する:プライバシーポリシー、ログインデータ、広告、コンテンツレーティング、対象年齢層と家族、データ セーフティ、政府系アプリ、金融サービスと金融商品、健康、カテゴリと連絡先情報、ストアの掲載情報。回答は console.md のセクション 2 を参照
[実測]。 - 「モニタリングと改善 → ポリシーとプログラム → アプリのコンテンツ」:すべての「宣言を開始」をクリアする。特に「広告 ID」。これは 11 項目に含まれず、入力しないと審査でブロックされる
[実測-失敗 → 修正済み]。 - 「ストアの掲載情報 → ストアの設定」:カテゴリ、最大 5 つのタグ、連絡先情報(ウェブサイトは app-ads.txt が置かれているドメインを使用)
[実測]。 - 「ストアの掲載情報 → ストアの掲載情報」:説明文、アイコン、フィーチャーグラフィック、スクリーンショット、AI リソース宣言。多言語対応には「AI を使用して翻訳をインポート」を使用し、インポート後は各言語を確認。詳細は listing.md を参照
[実測]。
完了基準:
- ダッシュボードの「ゲームの設定を完了」ブロックが表示されなくなる。
- 「アプリのコンテンツ」に未処理項目がない。
- ストアの掲載情報のステータスが「審査に送信可能」であり、素材のソースファイルがすべて
publish/google-play/にある。
P4 クローズドテスト初回リリース(レビューゲート)
-
「テストとリリース → テスト → クローズドテスト」(デフォルトトラック「クローズドテスト - Alpha」):
- 国/地域は「すべて選択」;
- テスターは Google グループ(推奨)またはメーリングリスト。どちらか一方のみ選択可能;
- フィードバック用メールアドレスを入力。
詳細は console.md のセクション 5 を参照
[実測]。 -
「新しいリリースを作成」:まずリリース名と多言語版のリリースノートを入力し、「下書きとして保存」をクリック。次にユーザーに AAB をアップロードボックスにドラッグ&ドロップしてもらい、ページをポーリングして「1 (1.0.0)」のようなエントリが表示されるのを待つ
[実測]。 -
「次へ」→「確認の詳細を展開」を読む→「保存」→「リリースの概要」で、クイックチェックが完了するのを待つ(最長約 14 分)。問題があれば先に修正する
[実測]。 -
レビューゲート に従い、内容をユーザーに提示する。ユーザーが「送信」と言ったら「N 件の変更を審査に送信」→「変更内容を審査に送信」をクリック。権限システムでブロックされた場合はユーザーにクリックしてもらう。詳細は review.md のセクション 1 を参照
[実測]。
完了基準:
- リリースの概要に「審査中の変更」と表示されている。
- 進捗ファイルに送信時間と予想所要時間(実測 10~42 分、公式では通常 7 日以内)、および結果確認先(リリースの概要)が記録されている。
P5 テスター募集、14 日間の待機(個人アカウントの場合。P6 と並行可能)
- 承認後、「テスター」タブで、コピーボタンの aria-label から 2 つの参加リンクを取得する
[実測]。 templates/testers-recruitment.mdを使って募集テキストを作成する。Google グループ作成時の CAPTCHA はユーザーが通過;コミュニティへの投稿はユーザーが行う[実測]。詳細は review.md のセクション 2 を参照。- 毎日、ダッシュボードの「プロダクション アクセス権を申請する」カードを確認:「現在 N 名のテスターが M 日間継続してテストに参加しています」
[実測:カード原文]。 - フィードバックに応じてアップデートをリリース:versionCode を 1 増やし、P4 のステップ 2~4 を実行。または automation.md の API を使用。変更はまとめて一度に送信する(再送信により進行中の審査がキャンセルされるため)
[実測]。 - 「モニタリングと改善 → 評価とレビュー → テストのフィードバック」からのフィードバックと、それに対応する修正内容を進捗ファイルに記録する。P7 のアンケートで使用する 公式。
完了基準:カード上で「少なくとも 12 名のテスター」「少なくとも 14 日間」の両方にチェックが入っている。進捗ファイルにフィードバックと修正の記録がある。
P6 プラットフォーム機能(P5 と並行)
-
Play Games Services:
- バックエンド:設定、OAuth 同意画面、認証情報(すべての署名証明書の SHA-1 を作成すること)、実績(少なくとも 10 個)、リーダーボード、テスター;
- Unity:
scripts/ShipPgsSetup.csとscripts/ShipPlayGames.cs; - 「アプリを公開」と「ゲームプロジェクトを公開」はユーザーがクリック。
詳細は capabilities.md のセクション 1 を参照
[実測:バックエンド設定]。 -
AdMob:
- アプリと広告ユニットを作成。
scripts/ShipAds.cs(UMP 同意 → 初期化 → リワード、インタースティシャル、バナー); - GDPR メッセージを公開。app-ads.txt を準備;
- テスト期間中はテスト ID を使用。正式公開後にストアを関連付ける。
詳細は capabilities.md のセクション 2 を参照
[実測:バックエンド設定]。 - アプリと広告ユニットを作成。
-
アプリ内レビュー、アプリ内アップデート:
scripts/ShipPlayReview.cs;アプリ内課金:Unity IAP。詳細は capabilities.md のセクション 3、4 を参照 [公式]。 -
機能を統合するたびに、データ セーフティ宣言とプライバシーポリシーを更新し、次のバージョンと一緒に審査に提出する(P4 のステップ 2~4)
[実測]。
完了基準:
- 統合した各機能が、ユーザーによって実機でテストトラックからインストールされ、検証済み。
- PGS 設定が公開済み。データ セーフティ宣言とプライバシーポリシーが機能と一致している。
- 本番用広告 ID は進捗ファイルにのみ記録され、テストビルドには含まれていない。
P7 プロダクションアクセス申請と正式版リリース(レビューゲート)
- カードの 3 つの条件がすべてチェックされたら、まずテンプレートにリストされているページでテストデータを確認。次に
templates/production-access-answers.mdに基づいて 3 部構成のアンケート(全 9 問、各テキスト回答は最大 300 文字)を作成し、ユーザーに 1 つずつ確認してもらう[実測]。 - レビューゲートの内容をユーザーに提示:アンケート回答、テスター数と日数、結果は 7 日以内と予想。ユーザーが「送信」と言ったら、「ダッシュボード → プロダクション アクセス権を申請する」で「プロダクション アクセス権を申請」をクリック。最初の 2 ステップで「次へ」、最後のステップで「適用」をクリック。ページに「プロダクション アクセス権の申請を受け付けました」と表示されるまでが提出完了
[実測]。送信時間を進捗ファイルに記録。結果はメールとダッシュボードカードで確認。 - 承認後(アカウント所有者にメールで通知)、review.md のセクション 6 に従いプロダクションリリースを準備:
- 本番用広告 ID と App ID に切り替え。versionCode を 1 増やす(承認待ちの間にビルドしておき、このビルドはプロダクション版のみに使用);
- まず PGS 設定を公開し、少なくとも 2 時間待ってからゲームをリリース;
- 「テストとリリース → プロダクション →「新しいリリースを作成」」。
- 再度レビューゲートを通過し、プロダクション版を審査に送信。ページが「審査中」であることを確認する。
完了基準:
- リリースの概要で、プロダクション版が「審査中の変更」に表示されている。
- 進捗ファイルに送信時間、予想所要時間、確認先(リリースの概要、メール)が記録されている。
待機期間と公開後
- クローズドテスト審査待ち(実測数十分から数時間):ストア素材、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 を参照。