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

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

9回落とされる頃には、何かに気づくしかなくなる。

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

NFC SNS CARD MAKERの画面

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

NFC SNS CARD MAKERの4コマ漫画

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ラウンド(概要)

#理由カテゴリ対策
1Guideline 2.1 クラッシュ[weak self] 漏れ修正
2Guideline 2.3.7 スクショと実画面の不一致全スクショ作り直し
3Guideline 4.0 UIが薄い(雛形量産時代の名残)UI密度upに全画面リファイン
4Guideline 5.1.1 プライバシーポリシー不足ポリシー全面書き直し
5Guideline 3.1.1 IAP外決済への誘導外部リンク削除/ガード強化
6Guideline 4.5.4 プッシュ広告の扱い通知メッセージ全部見直し
7Sign in with Apple 必須(他SNSログイン併設のため)SIWA実装
8ペイウォールUXのコピー曖昧プラン明示+解約導線追加
9edit_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 は「機能が動いていない」と判定してリジェクトする。それだけの話だ。

NFCーTOOL/2026-04-22 修正記録

「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ラウンド」

NFCTool審査落ち9ラウンドの絶望と、戦略転換の瞬間
NFCTool審査落ち9ラウンドの絶望と、戦略転換の瞬間
  1. 1コマ目1ラウンド目「[weak self]忘れ。直そう」
  2. 2コマ目5ラウンド目「またリジェクト... もう疲れた」
  3. 3コマ目9ラウンド目「edit_token...?Supabase Edge Function...?」
  4. 4コマ目「これ1本に賭けてるから絶望してるんだ。100本作ろう」

次回、第2章後編は「100本に分散する戦略」。NFCToolで得た教訓を、registry.json と CLAUDE.md にどう翻訳したか、具体的なルールベースで書く。

この記事が役に立ったらシェアしてください