開発事例

NFC SNS CARD MAKER バグ取り記録 — SwiftUIアプリ開発で実際に直した5つの問題

NFC SNS CARD MAKER バグ取り記録 — SwiftUIアプリ開発で実際に直した5つの問題

クラッシュゼロへ — 実際のコードから見つけたバグ修正記録

アプリをリリースしてからが本当の戦いです。NFC SNS CARD MAKERは2025年末にApp Storeへリリースしましたが、その後も地道なバグ取りを続けています。今回はSwiftソースコードを実際に精査して見つかった問題点と修正内容をまとめました。

NFC SNS CARD MAKERの画面

1. NFCAnalyzer — [weak self] 抜け落ちによるクラッシュリスク

**ファイル:** `NFCAnalyzer.swift:182-183`

NFCタグをスキャンした後、`tag.queryNDEFStatus` のコールバック内で `self.guessTagType` と `self.guessManufacturer` を呼び出していましたが、`[weak self]` キャプチャが漏れていました。NFCAnalyzer がコールバック実行前にメモリ解放されると確実にクラッシュします。

**修正:** クロージャ先頭に `[weak self] in` を追加し、`guard let self = self else { return }` でガード。

2. NFCWriter — verifyAndFinish の非同期コールバックで self が unsafe

**ファイル:** `NFCWriter.swift:563-615`

NFC書き込み後の検証フロー(verifyAndFinish)では、ネストされた複数のコールバックが発生します。外側のクロージャには `[weak self]` がありますが、内側の `readNDEF` コールバック(line 563)は強参照のまま。書き込みが長引いてユーザーが画面を離れた場合、参照ダングリングのリスクがありました。

**修正:** 全ネストクロージャに `[weak self]` を統一。

3. HistoryManager — エンコード失敗が無音で握りつぶされる

**ファイル:** `HistoryManager.swift:180-181`

`try? JSONEncoder().encode(items)` のエラーを `print` で捨てているだけで、ユーザーへのフィードバックもリトライもありません。履歴が実は保存されていなかった、という状況が発生しえます。

**修正:** エンコード失敗時に Supabase へのフォールバック書き込みと、ローカル通知(トースト)でユーザーに通知するフローを追加。

4. PaywallView — 商品が見つからないとき購入ボタンが無音で無効になる

**ファイル:** `PaywallView.swift:373`

`store.creditProducts.first(where: { $0.id == id })` が `nil` を返すケースで、関数が何もせずに `return` するだけでした。ユーザーには「買えない」という表示すら出ず、タップしても何も起きないUXになっていました。

**修正:** `nil` 時にエラートーストを表示し、再取得ボタンを出すフローに変更。

5. StoreManager — 無料クレジット上限チェックがボタン無効化より後に走る

**ファイル:** `StoreManager.swift:364-367`

無料プランのクレジット購入上限チェックが、ユーザーが購入ボタンをタップした**後**に実行されていました。正しくは「上限に達したらボタン自体を disabled にする」べきでした。

**修正:** `PricingGate` の判定を PaywallView の `button.disabled` バインディングに接続し、事前に UI を無効化。

開発者として思うこと

iOSのNFC APIはコールバックが深くネストしやすく、`[weak self]` の書き忘れが起きやすいです。コードレビューより静的解析(SwiftLint + Periphery)のほうが確実に拾えます。

また「何も起きない」というUXバグは最も見落とされやすく、実機テストでしか気づけないものが多いです。TestFlightで複数端末・複数アカウントを使ったテストを習慣にすると、こういったサイレント失敗を早期発見できます。

NFC SNS CARD MAKERはこれらの修正を含む最新バージョンをApp Storeで公開中です。

Download on the

App Store

NFC SNS CARD MAKER — 無料ダウンロード・7日間PROトライアル付き

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