第2章 ― 1本当てる時代の終わり(前編): NFCToolの審査落ち9ラウンド

“9回落とされる頃には、何かに気づくしかなくなる。”
NFC SNS CARD MAKER というアプリがある。NFC タグにかざすと SNS リンク集や Google 口コミ誘導が開く、デジタル名刺系のiOSアプリだ。今は v1.0 Build 33 が公開中、v1.1 Build 37 が審査待ち。表面上は普通の現役アプリだ。

が、ここに辿り着くまで、Apple の審査に **9回**落とされた。

4コマ漫画で見る開発ストーリー
NFCToolという原点
NFCToolは僕の個人アプリの中で唯一、3年運用してきた本気の1本だ。狙いは明確で、Tokyo の Bizcardみたいな「紙の名刺をデジタル化」じゃなくて、「NFCカードを物理的にかざすと、SNS全部・Google口コミ誘導・短縮URLがワンタップで開く」という、店舗オーナー向けの実用ツール。
実装は本気で詰めた。Bundle ID `ltd.nextcode.NFCTool`、Team ID `94NU6K8NYQ`。ドメインは当初 `card.nextcode.ltd` だったが、2026年4月19日に `nfc.bz` に一本化した(NFCーTOOL/HANDOFF.md に記録あり)。Vercel Wildcard `*.nfc.bz` を nfctool-cards プロジェクトに割当、`api.nfc.bz` を API 専用サブドメインに、middleware でサブドメイン → `/[username]` リライト、`card.nextcode.ltd/*` → `nfc.bz/*` の 301 を入れた。
審査落ち、9ラウンドの内訳
9回落とされた内訳を、可能な範囲で開示する(具体的な Apple ガイドライン番号と、対策コードまで含めて)。
NFC SNS CARD MAKER 審査落ち9ラウンド(概要)
| # | 理由カテゴリ | 対策 |
|---|---|---|
| 1 | Guideline 2.1 クラッシュ | [weak self] 漏れ修正 |
| 2 | Guideline 2.3.7 スクショと実画面の不一致 | 全スクショ作り直し |
| 3 | Guideline 4.0 UIが薄い(雛形量産時代の名残) | UI密度upに全画面リファイン |
| 4 | Guideline 5.1.1 プライバシーポリシー不足 | ポリシー全面書き直し |
| 5 | Guideline 3.1.1 IAP外決済への誘導 | 外部リンク削除/ガード強化 |
| 6 | Guideline 4.5.4 プッシュ広告の扱い | 通知メッセージ全部見直し |
| 7 | Sign in with Apple 必須(他SNSログイン併設のため) | SIWA実装 |
| 8 | ペイウォールUXのコピー曖昧 | プラン明示+解約導線追加 |
| 9 | edit_token復元フローのバグ(API 401) | Supabase Edge Function fallbackに切替 |
9つ全部書き出してみると、意外と平凡だ。「個別にはどれもよくある話」なんだが、「9つ連続で当てに来られる」のがキツかった。1つ修正するたびに2週間。9回で約4ヶ月半が消えた。
9ラウンド目に発見した致命傷 — Vercel Deployment Protection
9つの中で一番厄介だったのは最後のやつだ。`api.nfc.bz/cards/token` を Vercel に置いていたんだが、Vercel の Deployment Protection が API 経由のtoken取得を 401 でブロックしていた。これが「ブラウザで編集」ボタンを押しても何も起きないUXバグの原因だった。
解決策は、エンドポイントを Vercel API ルートから Supabase Edge Function `card-claim` に切り替えること。GETを廃止し、`POST https://krbkqkqpxxjdboqxfhyj.supabase.co/functions/v1/card-claim` に username を JSON ボディで送る形式に変えた。Supabase は Vercel の保護対象外なので確実に疎通する。
“「ブラウザで編集」ボタンが効かないなら、Apple は「機能が動いていない」と判定してリジェクトする。それだけの話だ。”
「1本に賭ける」戦略の限界
9ラウンド目を抜けて v1.0 Build 33 が公開されたとき、僕は既に体力的にも精神的にも限界だった。3年4ヶ月の集大成が、ようやく App Store の検索に出た。月のMRRは数万円。これがダウンロード数で言うとどのくらいか、書くのも辛い数字だ。
でも、ここで気づいた。**1本に賭けすぎたから、9ラウンドの度に絶望してた**。もし NFCTool が 100本のうちの 1本だったら、9ラウンド目に絶望しない。「100本のうちの1本が手こずってるな、他の99本進めとこう」で済む。賭け方を変えれば、メンタルの消耗が変わる。
戦略を変える理由は、Apple がより厳しくなったとか、競合が増えたとかじゃない。**自分のメンタル耐久度の問題**だ。1本に4ヶ月半賭けると、4ヶ月半分の絶望が来る。100本に4ヶ月半賭けると、絶望が100分の1に分散される。
4コマ漫画 ― 「9ラウンド」

- 1コマ目1ラウンド目「[weak self]忘れ。直そう」
- 2コマ目5ラウンド目「またリジェクト... もう疲れた」
- 3コマ目9ラウンド目「edit_token...?Supabase Edge Function...?」
- 4コマ目「これ1本に賭けてるから絶望してるんだ。100本作ろう」
次回、第2章後編は「100本に分散する戦略」。NFCToolで得た教訓を、registry.json と CLAUDE.md にどう翻訳したか、具体的なルールベースで書く。
関連プロダクト
NFC SNS CARD MAKERの詳細を見る