53本のアプリ更新で28本リジェクト ─ Guideline 4.3(a) Design - Spam 対応記録

■経緯
 2026年8月、53本のアプリのバージョン更新をアップルに提出したところ、28本が Guideline 4.3(a) - Design - Spam でリジェクトされた。理由は「他のアプリとバイナリ・メタデータ・コンセプトが似すぎている」。

これら53本のアプリは、すべて1つのUnityプロジェクトで開発し、共通の学習エンジンを使い、試験ごとに異なる問題データを収録(ダウンロード)している。

アップルが言うにはこういったアプリは、アプリの冒頭で試験を選ぶようにすればよいということであり、以前にも同じ理由でリジェクトされたことがあり、「またか…」という感じ。

しかし、そういった修正を行えばユーザーにとって不便になることは確かなのでResolution Center(App Review)に返信することにした。

■原因の推測
・今回の更新で、機能追加に伴いスクリーンショットと説明文を一括差し替えした。
・スクショ1枚目は全アプリ共通のタイトル画面、説明文の冒頭も全アプリ同一のテンプレ文だった。

バイナリが同一プロジェクトなのは以前から同じだが、メタデータの類似度まで同時に上がったことで、Appleの自動解析に引っかかったと思われる。

53本中28本という中途半端な数から見ても、閾値付近のゆらぎで機械的に判定されたものだろう。

■対応
 1本を選び、スクショ1枚目を問題文表示画面に差し替え、説明文の冒頭3行を試験固有の内容に修正した上で、Resolution Center(App Review)に返信した。再提出ではなく返信。再提出するとスレッドが閉じ、App Review Boardへのappealの道が塞がるため。

返信では、Appleが挙げた要因を1つずつ否定した。
・ソースコードは100%自社所有で第三者テンプレートではないこと
・各アプリは法令上別個に定められた異なる試験を対象としていること
・対象試験名・実施団体名・収録問題数を明記して内容の違いを示した。
・コンテナ化が困難な理由として、既存の課金(Bundle ID単位)が引き継げないこと
・学習データがローカル保存であること
・試験名で検索するユーザーにとって発見性が下がることを挙げた。

■最大の失敗
 最初の返信を日本語で送った。98時間(約4日間)無反応。英語で再送したところ返答が来て承認された。日本語が原因だったかは証明できないが、英語で送っていれば遅れなかったのは確か。Resolution Centerへの返信は英語で書くべき

■時系列
 8/22(土)53本一括提出 
 8/23(日)28本が4.3(a)でリジェクト 
 8/23(日)1本を選んで日本語で返信 
 8/27(木)98時間無反応。英語で催促+返信内容を再送 
 8/27(木)Apple「We will continue the review」→ 承認

■再発防止
・スクショ1枚目をタイトル画面から問題文表示画面に変更する。
・バージョン番号の焼き込みは削除(App Storeページに標準表示される)。
・説明文の冒頭3行を試験固有にする(試験名・出題科目・実施団体)。
・4行目以降の機能紹介は共通のままでよい。

App Review情報のメモ欄に、アプリの性質を説明する文を常時記載する。
審査担当者は毎回別人で引き継ぎがないため、これが最も再発防止に効く。

やってはいけないこととして、
・承認済みのアプリを引き合いに出さない(再審査対象になりうる)
・問題データの重複率を実際と異なる数値で書かない
・試験の正式名称を間違えない、催促を複数回送らない。

■追記
 日本語でも大丈夫というAIの言葉を信じたために5日を無駄にした。