第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 にどう翻訳したか、具体的なルールベースで書く。

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