録個人のアプリ開発者にとって、アプリのリリースは我が子を世に送り出すような瞬間です。しかし、その門番である「審査」において、理不尽極まりない壁にぶつかり、最終的に「アプリ停止」という最悪の結末を迎えた記録をここに残します。
同じように「実機では動くのに、Googleの審査だけ通らない」と絶望している方の助けになれば幸いです。
1、はじめに:リベンジを誓った再出発
実は、昨年末にリリースしようとした「コンサートマネージャー」というアプリで、同様のログイン不可によるリジェクトを繰り返し、一度アプリ停止を経験していました。
今回はその反省を活かし、UI、アイコン、操作性をすべて一新。さらに慎重を期して、まずはAppleのApp Storeに申請。結果は合格でした。サーバーもコードも全く同じ構成で、いよいよGoogle Playへのリベンジに挑んだのです。
2、繰り返される「SocketException」の悪夢
Googleの審査提出後、返ってきたのは非情なリジェクト通知でした。
審査員が送ってきたスクリーンショットには、見覚えのある赤いエラー画面。
接続エラー: ClientException with SocketException: Failed host lookup: ‘test-concert.sinqwell.net’ (OS Error: No address associated with hostname, errno = 7)

これは認証ミスではなく、「DNSの名前解決ができず、サーバーに辿り着けていない」ことを意味します。
しかし、私の手元のAndroid実機では問題なくログインでき、編集も投稿も可能なのです。
Appleでも審査を通り公開済。
3、実施した「エンジニアとして考えうるすべて」の対策
審査員が「繋がらない」と言うなら、繋がるようにインフラからコードまで全てを疑い、以下の対策を講じました。
サーバー設定: エックスサーバーの国外IPアクセス制限(REST API制限含む)をすべて解除し、WAFもオフに設定。
Flutterコードの改修: DNSキャッシュの問題を疑い、接続前に明示的に InternetAddress.lookup でIPv4アドレスを解決する処理を追加。さらに3回のリトライ機能を実装。
インフラの強化: Googleの審査環境がIPv6優先である可能性を考慮し、Cloudflareを導入。
全世界のDNSサーバーで AAAAレコード(IPv6)が解決できることを確認。
エビデンスの提示: 実機(Pixel 8a)で正常に動作する様子を動画に撮り、YouTubeにアップロードして審査員へ送付。
4、決定的だった「わざと失敗する」検証
4度目のリジェクトを受けた際、私はある検証を行いました。
アプリのログイン画面で「わざと間違ったパスワード」を入力してみたのです。
私の実機: 「ユーザー名またはパスワードが正しくない」と表示される(=サーバーとの通信は成功している)。

審査員の環境: 相変わらず「接続エラー(Failed host lookup)」と表示される。
これにより、原因はアプリの不備でもログイン情報のミスでもなく、Googleの審査環境のネットワークが私のドメインを遮断している(あるいは解決できていない)ことが客観的に証明されました。
5、誠実な対話の最中に下された「アプリ停止」
この事実を論理的に整理し、Googleのヘルプ宛に「Appleではパスしている」「DNSは世界中で解決できている」「審査環境のネットワークを調査してほしい」と必死のメールを送りました。
しかし、その返信を待たずして、無情にも「アプリの停止(Suspension)」という通知が届きました。対話の最中に一方的に門を閉じられたような、言いようのない絶望感に襲われました。
6、おわりに
現在、私はこの理不尽な停止に対し、すべてのエビデンスを添えて上位部署へのエスカレーション(異議申し立て)を行っています。
開発者がどれだけ技術的な正解を出し尽くしても、プラットフォーム側の「見えない壁」に阻まれることがあります。しかし、記録に残すことで、この経験は無駄ではなくなると信じています。