Google Play の審査に3回落ちて、公開まで84日かかった話
8月1日の朝4時1分。メールが1通届いていました。
「あなたのアップデートは公開中です」
素っ気ない一文です。原文は「Your update is live」。
5月7日に最初のクローズドテストを提出してから、86日目でした。その間に、製品版の申請は3回落ちています。
同じところで止まっている個人開発者の方は、たぶん日本中にいます。何が起きて、最後に何が効いたのか。記録が残っている範囲で、正確に書きます。

出そうとしていたもの
ブラウザで遊べるボードゲームを、Androidアプリにしようとしていました。
リバースターゴという、リバーシと囲碁を組み合わせた星型37マスのゲームです。40年前に紙で作ったものを、AI時代になってからアプリとして完成させました。その経緯は前の記事に書いています。
作り方はいわゆるTWA(Trusted Web Activity)です。すでに動いているWebアプリを、PWABuilder というツールでAndroidアプリの形に包む。中身はブラウザで動いているものと同じで、外側だけAndroidアプリになります。
コードを一から書き直す必要がないので、この方法自体は簡単です。難しかったのは、そこから先でした。
86日の記録
残っているメールとPlay Consoleの送信履歴から、時系列を起こしました。
5月7日・5月12日 クローズドテストを提出
5月下旬 製品版アクセスを申請 → 却下
6月中旬 製品版アクセスを申請 → 却下
7月9日 製品版アクセスを申請 → 却下
7月22日 クローズドテストを提出し直す
7月下旬 製品版アクセスを申請(4回目)
7月30日 23:26 製品版アクセス承認
7月31日 07:35 製品版としてリリース提出(177か国)
8月1日 04:01 Google Play で公開
最初の提出から承認まで84日。公開までは86日でした。
テスターは14人。家族や知り合いに頭を下げて、インストールしてもらいました。
却下メールに書いてあったこと
3回とも、返ってきたのはほぼ同じ文面でした。
Google Play の製品版にアクセスするには、さらにテストを行う必要があります
理由として挙げられていたのは、次の2点です。
クローズドテストにテスターが関与しなかった
フィードバックを収集し、アップデートで対応するというベストプラクティスを実践しなかった
最初に読んだときは、正直、意味が分かりませんでした。人数は集めたし、期間も待った。それなのに「テスターが関与しなかった」と言われる。
あとから理解したのは、Googleが見ているのはインストールした人数そのものではなく、テスターが実際にアプリを起動して使い続けた形跡と、それを受けて開発者がアプリを更新した形跡だということです。
インストールして終わっている人が多ければ、人数を満たしていても「テストが行われた」とは見なされない。ここが最初の壁でした。
やったことは地味です。テスターに「入れるだけでなく、何回か遊んでみてほしい」と改めてお願いし直し、もらった感想を反映したアップデートをテスト版に出す。それを記録が残る形で繰り返しました。
つまずき その1:assetlinks.json の指紋が違っていた
ここからは技術的な話です。同じ作り方をしている方には、たぶんそのまま使えます。
TWAには、「このアプリと、このWebサイトは同じ持ち主です」と証明する仕組みがあります。サイト側に assetlinks.json というファイルを置き、そこにアプリの署名の指紋(SHA-256)を書いておく。これが一致しないと、アプリを開いたときに上部にブラウザのアドレスバーが残ってしまい、アプリらしく見えません。
PWABuilder が出力するzipには、この assetlinks.json が最初から同梱されています。だから私は、それをそのままサイトに置いていました。
これが効きませんでした。
理由は、書かれている指紋が「アップロード鍵」のものだからです。
Google Play には、開発者がアップロードした後、Google側が別の鍵(アプリ署名鍵)で署名し直してから配信する仕組みがあります。つまり利用者の端末に届くアプリの指紋は、手元でzipに入っていた指紋とは別物です。
正解は、Play Console の「アプリの整合性」から確認できる、アプリ署名鍵証明書のSHA-256を書くこと。アップロード鍵とアプリ署名鍵の両方を並べて登録しておくのが、いちばん安全です。
同梱されているファイルは、あくまで雛形でした。
つまずき その2:GitHub Pages は .well-known を配信しない
そしてもうひとつ、これと重なっていた問題があります。
assetlinks.json は、サイトの .well-known/ というフォルダに置く決まりです。私のサイトは GitHub Pages で公開していました。
置いても、404が返ってきました。
GitHub Pages は内部で Jekyll という仕組みを通してサイトを組み立てるのですが、これはドットから始まるフォルダを「公開しないもの」として最初から除外します。.well-known/ はまさにドットから始まります。置いたのに、そもそも配信されていなかったわけです。
解決は一行です。サイトのルートに .nojekyll という空のファイルを置く。これでJekyllの処理が止まり、.well-known がそのまま配信されるようになります。
厄介だったのは、この2つが同時に起きていたことでした。
指紋を直しても、ファイルが配信されていないから効かない。配信を直しても、指紋が違うから効かない。片方だけ直しても症状が変わらないので、「直したのに効かない → じゃあ原因は別だ」と、何度も見当違いの方向に進みました。
うまくいったか確かめるには、自分のドメインの後ろに /.well-known/assetlinks.json を付けて、ブラウザで直接開いてみるのが早いです。中身がそのまま表示されれば配信はできています。
私の場合はこうなります。実際に開けます。
https://play.reverstargo.com/.well-known/assetlinks.json
署名キーは3か所に置いた
途中で知って青くなったことがあります。
アプリの署名キーを失うと、そのアプリは二度と更新できません。同じアプリとして出し直すこともできない。作り直しになります。
パソコンの中に1つだけ、という状態で数週間過ごしていました。今はローカル、OneDrive、Googleドライブの3か所に置いてあります。
まだの方は、この記事を閉じる前に済ませてしまってください。数分で終わります。
そして公開
4回目の申請の結果が届いたのは、7月30日の23時26分でした。承認。
翌朝すぐ製品版として提出し、8月1日の午前4時1分に公開。177か国で配信されています。

公開から3日たった今の数字も書いておきます。ダウンロードは10件台、Play Console 上のアクティブユーザーは12。
華々しくはありません。ただ、84日間ずっと「まだ出せません」だった数字が、ようやく動き始めたところです。
記憶は「4回」、記録は「3回」だった
この記事を書くにあたって、メールと送信履歴を全部たどり直しました。
書き始めるまで、私は「4回落ちた」と記憶していました。実際は3回でした。
体感としては4回落ちている。それくらい長く感じた、というだけの話ですが、書くときに記録を確認してよかったと思います。落ちた回数を1回多く書いても誰も困りませんが、こういう小さな盛りが積み重なると、書いたもの全体が信用されなくなります。
同じ壁の前にいる方へ
私がつまずいた順に並べます。
テスターには、インストールだけでなく実際に何度か起動してもらう。人数を満たすことがゴールではありません
もらった感想を反映したアップデートを、テスト期間中に出しておく
assetlinks.json の指紋は、PWABuilder 同梱のものではなく、Play Console のアプリ署名鍵証明書のSHA-256を使う(アップロード鍵と両方書くのが安全)
GitHub Pages を使っているなら、ルートに .nojekyll を置く
自分のドメインの後ろに /.well-known/assetlinks.json を付けてブラウザで直接開き、中身が見えることを確認する(私の例:https://play.reverstargo.com/.well-known/assetlinks.json)
署名キーを、今すぐ3か所にバックアップする
3と4は、どちらか片方だけ直しても症状が変わりません。両方いっぺんに直してください。私はここで一番時間を溶かしました。
最後に
60歳になってから、40年前に構想したゲームをアプリにしています。プログラミングは専門ではありません。
84日は長かったですが、止まっていた原因は結局、空のファイル1つと、コピーする文字列の取り違えでした。誰かの84日が1日でも短くなればと思って書いています。
Google Play → https://play.google.com/store/apps/details?id=com.yumekichi.reverstargo
ブラウザで遊ぶ(無料) → https://play.reverstargo.com
公式サイト → https://reverstargo.com
ゲームそのものの話は、こちらに書いています。
第1回:40年前に構想したボードゲームをAI時代に完成させたら、作者がAIに勝てなくなった話
https://note.com/reverstargo/n/n1d5e6bb2f39a
第2回:オセロが打てる人なら3分で始められる、リバースターゴのルール解説
https://note.com/reverstargo/n/ndccdc64d93cf
第4回:盤を半分に縮めたら、ゲームは浅くなるのか。AI30万局で確かめた
https://note.com/reverstargo/n/n2313efb31a5b
第5回:読者にコメントをもらってから10日で、その人に追い抜かれた話
https://note.com/reverstargo/n/na900cb184e82
