Apple の 4.3 スパム判定は30秒のバッチ処理。22件のリジェクトがそれを証明している

要点:Apple の App Review は、私の iPhone アプリ11本を Guideline 4.3(スパム)でリジェクトしました。そしてもう一度同じことをしました。2回とも、11件のリジェクトはすべて30秒以内に届きました(10月5日は30秒、10月12日は27秒)。3秒に1通のペースで、しかも私が提出した順番とはまったく関係のない順番です。2回目は、再提出から 167.7〜167.9時間後に、すべてのアプリについて届きました。誤差12分の7日間タイマーです。10月5日に App Review Board へ3件の異議申し立てを出しましたが、14日たっても返信はゼロです。今日、Apple が見たのと同じ状態の20個のアプリのリポジトリに、自作の「スパム検出器」をかけてみました。私がこれまでに出したアプリで最も似ている2本は、どちらも公開中です。Apple は 4.3 についてアプリを審査しているのではありません。アカウントを審査していて、しかもそれを口にしていないのです。
「Guideline 4.3 spam」の意味を知りたくて Google から来た方へ。これは重複したアプリを禁じる Apple のルールです。(a) 項は「同じアプリの複数の Bundle ID」を禁止し、(b) 項は「すでに広く出回っているものと区別がつかない」アプリを禁止しています。リジェクトの文面にはたいてい、あなたのアプリがほかのアプリと「バイナリ、メタデータ、コンセプトのいずれかが似ていて」、「わずかな違いしかない」と書かれています。どのアプリなのか、どのファイルなのか、どの画面なのかは教えてくれません。手短な対策リストは最後にあります。一括提出をやめる、再提出の前に返信する、App Review との通話を予約する。この記事の残りは、その証拠です。

アプリ11本、30秒、3秒に1通
2026年9月26日、私は新しい iPhone アプリを11本提出しました。どれも以前紹介した Mac なしのパイプラインで Windows から作ったものです。Odometer(車の整備)、Parked(駐車メーター)、Rooms(家財保険用の目録)、Pricebook(食料品の価格)、Pawprint(ペットの薬)、Chores(子どもの家事分担表)、Clockout(サービス業のチップ)、Curve(成績計算)、Climbbook(ボルダリング記録)、Race Pace(ランニングのスプリット)、Cutoff(カフェインと睡眠)。提出は 15.5時間にわたっていて、最初が太平洋時間の午前7時10分、最後が午後10時42分でした。
9日後の10月5日、そのすべてに同じ「There's an issue with your submission」というメールが届きました。今朝 Gmail からタイムスタンプを取り出しました。最初の1通は米東部時間の午後5時29分32秒、最後の1通は午後5時30分02秒です。それぞれ違う問題を、違う人のために、違うデザインで解決する11本のアプリが、30秒で判定されたのです。
判定が提出順に出ているか、つまり人間がキューを上から順に処理したときのような順番になっているかも確認しました。なっていませんでした。「提出した順」と「リジェクトされた順」のスピアマンの順位相関は、1回目が -0.06、2回目が 0.06。つまりゼロです。Pawprint は4番目に提出して1番目にリジェクトされ、Odometer は1番目に提出して11番目にリジェクトされました。この判定を下したのが何であれ、アプリを1本ずつ開いていく人間ではありません。
違うアプリ11本を、30秒で判定。それは審査ではありません。
forループです。
2回目:誤差12分の7日間タイマー
ここで私は Apple の唯一のルールを破りました。それは認めます。リジェクトの文面には、同意できない場合は App Store Connect で返信し、再提出はしないように、とありました。私は11本すべてに返信し、アプリごとに App Review の9つの質問すべてに答えました。それなのに、10分以内に11本すべてを再提出してしまいました(10月5日、太平洋時間の午後3時13分〜3時23分)。
2回目のリジェクトは10月12日、米東部時間の午後6時04分46秒から6時05分13秒の間に届きました。11本で27秒。でも奇妙なのは待ち時間のほうです。どのアプリも、再提出からリジェクトまで 167.7〜167.9時間待っていました。168時間はちょうど7日です。アプリ11本、待ち時間11個、ばらつきは12分。

比較のために言うと、Apple 自身の App Review のページには「提出の少なくとも50%を24時間未満で、90%を48時間未満で審査する」と書かれています。先週末、私のアカウントの App Review の判定64件すべてを計測したところ、中央値は73時間で、すでに Apple の約束より悪い数字でした。私のアカウントで、ほかにきっかり168時間待ったものは1つもありません。
私の解釈です。リークではなく、あくまで解釈です。フラグの立ったアカウントは1週間のタイマー付きの保留キューに入れられ、タイマーが切れると、まとめて同じ定型文でリジェクトされる。ボタンを押すのは人間かもしれませんが、アプリを開いている人はいません。違うアプリ11本がそろって「7日マイナス15分」に着地したことに、もっとよい説明があるなら、ぜひ聞きたいです。
私だけではない。同じ週、同じ30秒の扱い
2026年10月にこれを受けたほかの開発者を X で探してみました。検索1回で見つかりました。以下は実在の投稿で、今日キャプチャしたもの、無編集です。
私の1回目の一括判定と同じ10月5日、@krPorsche918 さんが、Apple に自分のアプリ5本を「同じ1分の間に、同じ文面で:Guideline 4.3 Spam」とリジェクトされたと投稿しました。その記事には、この件について誰かが書いた中で最高の一文があります。「私にとって、13日で14本のアプリは生産性だった。Apple にとって、それはパターンだった。」同じ週、Apple はその人の公開中アプリの App 内イベント53件をすべて承認しています。

10月8日には、@vovalukashov さん(Luka Shaw)が、リプライ欄の誰もが考えていた疑問を投げかけました。「Apple が私の新しいアプリを承認しなくなったみたい……1つのことだけをする小さなアプリを作る人は、みんなこうなるの?」4週間で新規アプリ3本がリジェクトされ、うち1本は2回。「古いアプリのアップデートは今でも通る。」この投稿は62K回表示されました。

そして10月12日の米東部時間午後6時26分、私の2回目の11件が届いた22分後に、@martindonadieu さん(Capgo の創業者、Martin Donadieu)が自分の App Store Connect の画面を投稿しました。赤い「Rejected」バッジがずらりと並び、キャプションは「審査なしから、ほぼ全部リジェクトに変わった(笑)」。表示回数は223K です。3日後には再び投稿しています。100%ローカルで動くチケットアプリが 4.3 で2回目のリジェクト。このアプリはこの夏500人規模のイベントで使われ、すでに Google Play にも出ているものです。

私たち4人全体に共通するパターンを見てください。新規アプリは落ちる。アップデートは通る。私のアカウントでもそうです。新規アプリ11本を2回つぶしたのと同じ期間に、Apple は Chain と Minder のアップデート(10月12日)と、9月29日の6件のアップデートを承認しました。9月の6件はどれも、リジェクトされたアプリと同じペイウォールの仕組み(Pro.swift、Chain では Purchases.swift)を追加したもので、同じ朝(9月26日、米東部時間午前9時26分〜9時29分)にコミットしたものです。同じコード、同じ日。アップデートは約3日で承認。新規アプリは2回リジェクト。Luka さんはアップデートは通ると言い、Porsche さんは App 内イベント53件が承認され、Martin さんの既存アプリはまだ公開されています。
だからこそ、私は Luka さんの結論には同意しません。彼の結論は「すでに App Store にあるアプリに集中しろというサインなんだろう」でした。それこそがこのフィルターがすべての小規模開発者に覚え込ませている行動で、間違った教訓です。フィルターは、あなたの新しいアプリが悪いと言っているのではありません。あなたのアカウントが、Apple にとって落ち着かないほど速く出しすぎていると言っているのです。この2つは別の問題で、対策も違います。
Apple は正しかったのか?自分のアプリにスパム検出器をかけてみた
もっともな疑問です。私のアプリは本当にクローンなのかもしれません。私は30日で20本の iPhone アプリを、AI のコーディングエージェントを使って、すべて同じパイプラインで作った開発者1人です。4.3 を受けて当然の人がいるとすれば、それは私かもしれません。そこで今日の午後、議論するかわりに検証してみました。
実験の内容:手元にある20個のアプリのリポジトリそれぞれについて、Apple が実際に見た git のコミットを取ります(公開中の8本は最初の承認前の最後のコミット、リジェクトされた11本は10月5日の再提出前の最後のコミット)。そしてアプリのあらゆるペア、190ペアを、4.3 のフィルターが見ている可能性のある5つの観点で比較しました。
- ファイルツリーの重なり:追跡されているファイルパスの Jaccard 類似度(共通のパス数を全パス数で割ったもの)。これが「骨格」です。
- 同一ファイル:アプリ自身の名前を置き換えたあと、バイト単位で完全に一致するファイル。
- Swift の行の重なり:2本のアプリに共通する、自明でない Swift ソース行(重複を除く)の割合。
- ストアのテキストの重なり:App Store の説明文における3語フレーズの重なり。
- スクリーンショットの距離:2本のアプリのストア用スクリーンショットのうち最も近いペアを、256ビットの average hash で比べたもの(低いほど似ている)。

まずは私に不利な、正直な結果から。リジェクトされた11本は、実際に骨格を共有しています。ファイルツリーの重なりの中央値は、公開中のアプリの 0.56 に対して 0.76。ペアあたりの同一ファイル数の中央値は5に対して 14、Swift の行は約3倍(0.021に対して0.067)です。Clockout と Odometer は文字どおり同一のファイルツリーを持っていて、同じ名前の Swift ファイル7個が同じフォルダに入っています。Apple のフィルターがバイナリ内のプロジェクト構造を見ているなら、私のリジェクトされた一群は真っ赤に光ります。
ここからが Apple に説明してほしい部分です。190ペアの中で最も似ている1組は、Baseline Ledger と Fairway Ledger、私のテニス記録アプリとゴルフ記録アプリです。Swift の行の3分の1(0.333)、同一ファイル20個、ファイルツリー0.90を共有し、ストアの説明文もスクリーンショットも、すべてのペアの中で最も似ています。どちらも9月22日と24日、2日違いで承認されました。どちらも今日も公開中です。Chain と Quiver のファイルツリーは0.968。どちらも公開中です。

そして、人間の審査担当者が実際に見るもの、つまりストアページとスクリーンショットでは、2つのグループはまったく区別できません。ストアのテキストの重なりは、リジェクトされたペアが0.010、公開中のペアが0.009。スクリーンショットの距離は76対82。一覧をスクロールしている人には、リジェクトされたアプリのほうが「似ている」とはわかりません。わかるのは、バンドルの差分を取る機械だけです。

リジェクトされたアプリ全部にあった1つのファイル
2つのグループをきれいに分ける特徴は、類似度のスコアではありません。1つのファイルです。リジェクトされた11本はすべて、最初の提出に Sources/Pro.swift を含んでいました。公開中の8本は、最初の承認時にはどれも持っていませんでした。Pro.swift は StoreKit 2 のペイウォールです。アプリは無料で、$4.99 の一回払いでフルバージョンが解放されます。Apple が審査したコミット時点の、Odometer のものの冒頭を載せます。
// Sources/Pro.swift (odometer repo, commit af40d3658)
/// Odometer Pro: one non-consumable. Keeping one car on schedule is free forever; Pro is the
/// whole garage and the paperwork.
@MainActor
@Observable
final class Pro {
static let productID = "com.mattbusel.odometer.pro"
/// The first build that has Pro in it. Anything earlier had every feature.
static let firstFreemiumBuild = 2
enum Reason: String, Identifiable { case costs, garage, history, export, settings; var id: String { rawValue } }
private(set) var unlocked: Bool
private(set) var grandfathered = false
private(set) var product: Product?
var price: String { product?.displayPrice ?? "$4.99" }
func ask(_ why: Reason) { if !unlocked { paywall = why } }
...
}
ファイル同士がコピーというわけではありません(リジェクトされたアプリの中に、Pro.swift が同一のものは2本とありません。それぞれ独自の商品、独自の無料枠、独自のアップグレード理由を持っています)。でも形は同じです。非消耗型の課金アイテム1つ、Pro クラス1つ、ペイウォールのシート1つ。公開中のアプリはこれなしで承認され、あとからフリーミアムに移行しました。そのアップデートを提出したのは9月26日、新規アプリ11本と同じ日です。それらのアップデートは9月29日にすんなり通りました。
本当は何が起きているのか、私の考えを書きます。Apple がこれを公言することは決してないでしょう。$4.99 で解放する新しい無料アプリを、1日に11本出すアカウントから出す。これはテンプレート工場のシルエットそのものです。4.3 の条文と、その姉妹ルールである 4.2.6 は、「商用化されたテンプレートやアプリ生成サービス」について書かれています。どのコーディングエージェントでも1日1本アプリを吐き出せる2026年には、テンプレート工場と、Claude Code を使う個人開発者は、外から見ると同じに見えます。Apple のフィルターはシルエットで判断し、承認ボタンを押す人間はアプリを開きません。証明ではなく相関です。19本は小さなサンプルです。それでも、ガイドラインの条文にあるどんな基準よりもきれいに分かれています。
私が送り返したもの、そして返ってきたもの:何もなし
4.3 のリジェクトには9つの質問が付いてきます。アプリは何をするのか、誰のためのものか、どう違うのか、どうテストしたのか、ほかのアプリとコードを共有しているか、などです。私はアプリごとに、すべての質問に正直に答えました。おそらく不利に働いた部分も含めてです。たとえば Odometer の返信にはこう書きました。
"No shared framework or asset pack. Every screen, model, illustration and text is specific to Odometer. Two files follow a pattern I reuse: the StoreKit 2 purchase handling for its one non-consumable (the paywall's text, free/Pro split and look are specific to the app), and a test-only driver that steps through the app's screens to record the walkthrough video and is inactive in normal use."(共有フレームワークやアセットパックはありません。画面、モデル、イラスト、テキストはすべて Odometer 固有のものです。再利用しているパターンに沿ったファイルは2つだけです。1つは唯一の非消耗型アイテムのための StoreKit 2 の購入処理(ペイウォールの文言、無料版と Pro 版の線引き、見た目はアプリ固有です)、もう1つはウォークスルー動画を録画するためにアプリの画面を順に操作するテスト専用のドライバーで、通常の使用時には動作しません。)
そのうえで、Apple のフォームから App Review Board に異議申し立てを出しました。フォームは1回につき最大5本、理由は2,000文字までなので、3回(5 + 5 + 1)に分ける必要がありました。主張はシンプルです。11本すべてが1分以内に一字一句同じ文面でリジェクトされたのだから個別の審査は行われていない、各アプリを人間が開いてほしい、というものです。
それが10月5日のことです。今朝、それ以降に Apple から届いたものを受信箱で検索しました。Apple Ads の請求メール、iPhone Duo の予約広告、それに App Review ガイドラインが10月16日に改訂されたという通知はあります。10月12日の2回目の一括判定以降、App Review からも App Review Board からもメールは1通もなく、異議申し立てについては何ひとつありません。13.8日経過、まだ続いています。
その10月16日の改訂自体が、ちょっとした侮辱です。Apple はガイドラインの7か所を書き直しました(クリエイティブアセットと隠し機能に関する新ルール、支払いリンク、子どもの安全)。Guideline 4.3 はその中に入っていませんでした。4.3 の一括リジェクトの波が公に起きている最中に、このルールは一字一句そのままでした。
Apple 自身の数字が言っている:あなたは特別ではない
Apple は毎年 App Store Transparency Report を公開しています。2025年版によると、審査した提出は 9,100,620 件、リジェクトは 2,093,244 件で、約23%です。スパムや模倣アプリを含む Design のセクションが、リジェクトのうち415,532件を占めています。Apple の2026年5月のニュースルーム記事には、ほかのアプリのコピー、スパム、ユーザーを誤解させるものとして371,000件を超える提出をリジェクトしたとあります。
では、誰も引用しない行を見てみましょう。同じレポートは、アプリ削除に対する異議申し立てを26,305件、復帰を423件と数えています。1.6%です。2021年には、Apple の App Review 担当シニアディレクターが裁判所への提出書類の中で、チームには500人を超える人間の審査担当者がいて、異議申し立てされるのはリジェクトの1%未満だと述べています。計算してみてください。年間910万件(9.1 million)の提出は、1日あたり約25,000件。スパム系のリジェクト371,000件は、1日あたり約1,000件です。1日1,000本のアプリを丁寧に開いている人などいません。30秒の一括判定は、このシステムの不具合ではありません。それがシステムそのものなのです。
ホットテイク、ランキング形式で
- 4.3 は個人開発者に対する「量への課税」になった。クローンは捕まえていません。私の最も似ている2本は公開中です。捕まえているのは、1人が出すべきだと Apple が考える量を超えて出すアカウントです。AI コーディングの時代において、それは腕のいいインディー開発者全員のことです。
- 一括リジェクトに対して、App Review Board はブラックホールだ。私の予想:この11件の異議申し立てには11月までに人間からの返信は来ないし、もし来たとしても、11本すべてに同じ定型の1段落でしょう。
- Apple が 4.3 の数字を単独で公表することは決してない。透明性レポートは「4.3.0 Spam」を削除(418本)についてしか載せておらず、リジェクトについては一度も載せていません。ガイドラインごとの件数を出せば、「スパム」との戦いのどれだけが実は新しい開発者への流量制限なのかが見えてしまうからです。
- アップデートが通るのは、アップデートがすでに Apple にお金をもたらしているから。公開中アプリのアップデートは、支払い履歴のある既知の存在です。新規アプリはコストです。この記事に出てきたすべてのアカウントで、新規アプリがつぶされたのと同じ週にアップデートは承認されていました。偶然ではなく、ビジネスモデルです。
- この流れは Google が持っていく。Martin さんのアプリは、Apple に2回目のリジェクトを受ける1週間前から Google Play に出ていました。インディー開発者の最初のローンチが Android に移れば、Apple の「品質」の話はずっと静かになるでしょう。
Guideline 4.3 スパムのリジェクトを生き延びる方法
上のデータと Apple 自身のページを踏まえて、私なら次はこうします。今、私自身が従っているアドバイスです。
- 新規アプリを一括提出しない。1アカウントにつき週に1〜2本まで。Porsche さんの「13日で14本」も私の「1日で11本」も、同じ答えが返ってきました。公開中アプリのアップデートは、好きなだけ速く出してかまいません。
- 返信して、再提出しない。リジェクトの文面にそう書いてあり、私はそれを無視しました。私の再提出は7日間タイマーに乗り、27秒で落とされました。App Store Connect で9つの質問に答えて、待ちましょう。
- 新規アプリはペイウォールなしで出し、App 内課金はアップデートで追加する。承認された8本は最初の承認時にどれもペイウォールを持っておらず、リジェクトされた11本はすべて持っていました。サンプルは小さいですが、私が見つけた唯一のきれいな境界線で、フリーミアム化のアップデートは毎回通りました。
- アプリがバリエーション違いなら、統合する。4.3(a) は文字どおり、アプリを1本にしてバリエーションを App 内課金で売るよう求めています。2本のアプリを審査担当者が1文で説明できてしまうなら、実際にそうされます。
- App Review との通話を予約する。Apple は、ガイドラインについて App Review と話せる30分の Webex 面談を提供しています。これに触れる人はほとんどいません。人間があなたを見なければならない唯一の窓口です。私の次の一手はこれです。
- 具体的な根拠で、提出1件につき1件の異議申し立てを。Apple の異議申し立てページは「アプリが準拠していると考える具体的な理由」を求めています。一括リジェクトのタイムスタンプは具体的です。今のところそれだけでは足りていないので、5番と組み合わせてください。
この20本のアプリを作って出したパイプライン(Windows PC から、Mac なし)が知りたいなら、Windows での iOS 開発の完全ガイドにまとめています。お金の面は実在のアプリ20本の開発費をどうぞ。
ここまでの数字
- 4.3 で2回リジェクト:アプリ11本(リジェクト22件)、2026年10月5日と10月12日
- アプリ11本のリジェクトにかかった時間:30秒(10月5日)、27秒(10月12日)
- 提出順とリジェクト順:スピアマン -0.06 と 0.06(関係なし)
- 2回目の待ち時間:11本すべて167.7〜167.9時間(Apple によれば90%が48時間以内)
- 異議申し立て:11本をカバーするフォーム3件、10月5日。13.8日後の返信:0(10月19日午後1時10分(米東部時間)に受信箱を確認)
- 今日、米国 App Store で公開中:8本(iTunes lookup、10月19日午後1時12分(米東部時間))、10月17日から変化なし
- 190ペア中で最も似ているペア:Baseline Ledger と Fairway Ledger、Swift の行の33%を共有。どちらも公開中。
- 最初の提出時のペイウォール:リジェクトされた11本中11本、承認された8本中0本
データと再現方法
判定のタイムスタンプ:Apple の App Review の送信元から届いた「There's an issue with your submission」メール22通を、「Submitted:」の行(太平洋夏時間)とともに10月17日に Gmail から取得し、10月19日の米東部時間午後1時10分にそれ以降の新着がないか再確認しました(なし)。フィンガープリント:10月19日の米東部時間午後1時19分に、手元の20個のリポジトリに対して fingerprint.py を実行。各リポジトリは決定的な提出の前のコミット(git rev-list -1 --before=...)で、ファイルは git show で読み、ファイル比較から PNG を除外し、ハッシュ化の前にアプリ自身の名前をプレースホルダーに置き換えています。公開状況:私の開発者アカウントに対する iTunes Search API の lookup、米東部時間午後1時12分。@krPorsche918 さん、@vovalukashov さん、@martindonadieu さんの投稿は、10月19日の米東部時間午後1時15分ごろに X からキャプチャしたもので、実在・無編集です。
というわけで、@martindonadieu さん、@vovalukashov さん、@krPorsche918 さん。ご自身のリジェクトメールを確認してみてください。数秒以内に立て続けに届いていましたか。再提出はきっかり1週間待たされましたか。あと3つのアカウントで同じ168時間タイマーが確認できれば、これは私の仮説ではなくなります。ほかの皆さんへ:Apple の App Review Board が、あなたの 4.3 の異議申し立てに実際に答えたことはありますか。どれくらいかかりましたか。コメント欄に数字を書いてください。
Mac なしで iPhone アプリを作っていて、パイプライン(署名、スクリーンショット、fastlane での提出、私が今使っている審査メモ)を自分のリポジトリにセットアップしたい方へ。No-Mac iOS Pipeline は $299、最初の TestFlight ビルドまで5営業日です。
2026年10月19日に tensorust.com で初公開。dev.to にも掲載しています。関連:App Store の審査時間、Windows で iOS アプリを作る、固定価格の iPhone アプリ開発。
次に読む
- 開発 · 2026年10月18日 · 29分で読めますWindows での iOS 開発:完全ガイド(アプリ21本、Mac なし)
- 開発 · 2026年10月18日 · 13分で読めますApp Store の審査時間:実際の判定64件、中央値73時間
- 開発 · 2026年10月17日 · 12分で読めますiPhone アプリの開発費:実在のアプリ20本、手数料 $99、承認8本