◉CLAUDE LABEN
●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/Claude Code
⟐ Claude Code/2026-04-15上級

Claude Code と作る StoreKit 2 × SwiftUI の課金実装 — 審査を通る最小構成と運用の落とし穴

Claude Code を設計パートナーにした StoreKit 2 × SwiftUI の課金実装を、PurchaseManager・サーバー検証・ペイウォールUIまで通しで組み立てます。Ask to Buy や Transaction.updates の遅延など、公式ドキュメントが触れない運用の詰まりどころも扱います。

Claude Code265SwiftUI7StoreKit 2iOS26アプリ内課金サブスクリプション8Swift5App Store9

✦ プレミアム記事

StoreKit 2 が難しい本当の理由

個人開発者がアプリ内課金の実装でつまずくのは、APIの難しさよりも「正しい実装がどれか分からない」という問題が大きいです。Stack Overflowで見つけた答えは StoreKit 1 の旧APIを使っていることが多く、Apple の公式ドキュメントは概念の説明に力を入れすぎてコードの全体像が見えにくいのです。そして、サンドボックス環境と本番環境の挙動の違いが予期せぬバグを生みます。

2022年に登場した StoreKit 2 は、async/await を全面採用したモダンなAPIに刷新されました。しかしその分、StoreKit 1 の知識がある人にとってはむしろ混乱の原因になっています。SKPaymentQueue や SKProductsRequest は廃止され、Transaction や Product という新しい型が中心に据えられています。

私自身、StoreKit 1 の時代から課金コードを書き直し続けてきましたが、StoreKit 2 で本当に時間を取られるのは購入処理そのものではなく、購入が「いつ、どの経路で」アプリに届くかの扱いです。本稿で扱うのは、Claude Code を設計パートナーとして活用しながら、StoreKit 2 × SwiftUI での課金実装を一から構築する流れです。消耗型アイテム(One-time purchase)からサブスクリプションまで、App Store 審査を通過できる品質のコードと、後半では公式ドキュメントには書かれていない運用上の落とし穴と判断軸まで踏み込みます。

なお、Claude Code の Swift/iOS 開発環境の構築については Claude Code × Swift/iOS 本番アプリ開発の設計と運用 を先にご覧ください。


Claude Code が StoreKit 2 実装のパートナーになれる理由

StoreKit 2 の実装で Claude Code が特に力を発揮するのは、以下の3つの場面です。

① プロジェクト全体のコンテキストを持った設計提案

Claude Code はプロジェクト全体のファイルを読み込みながら作業します。「この ViewModel でサブスクリプション状態を管理したい」と伝えると、既存のアーキテクチャ(MVVM・Clean Architecture 等)に合わせた設計を提案してくれます。孤立したサンプルコードではなく、自分のプロジェクトに馴染む実装が得られます。

② エラーハンドリングの網羅的な実装

StoreKit 2 の StoreKit.AppStore.sync() や Transaction.updates のエラーケースは多岐にわたります。Claude Code に「StoreKit 2 のエラーを全ケース網羅してください」と指示すると、StoreKitError・Product.PurchaseError・VerificationResult.VerificationError のすべてを処理するコードを一度に生成できます。

③ Sandbox とのデバッグ支援

「Sandbox で購入後に entitlements が更新されない」「Transaction.currentEntitlements が空を返す」といった典型的な問題を Claude Code に相談すると、状況の診断と修正コードを即座に提示してくれます。


✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦Apple 公式に書かれていない Transaction.updates のタイミング揺らぎとペイウォール一瞬表示を防ぐキャッシュ設計
✦JWS の署名検証を省いたサーバー実装が改ざんトークンと alg:none を含む3件すべてを受理した実測比較と、環境判定を NODE_ENV ではなくエラー 4040010 で行う理由
✦Ask to Buy の承認待ちをエラー扱いして審査で詰まる典型パターンと、Sandbox での再現手順
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

⟐ Claude Code2026-10-12
SPM に移したら、起動した瞬間にアプリが落ちるようになりました — dyld の一行を Claude Code と読み解いた記録
CocoaPods から Swift Package Manager へ移した直後、ビルドは通るのに起動した瞬間に落ちました。dyld の一行から原因を切り分け、直し方と確認コマンドまでをまとめます。
⟐ Claude Code2026-09-04
Claude Code に project.pbxproj だけは直接触らせていません
Xcode のプロジェクトファイルは、開けなくなる壊れ方より開けてしまう壊れ方のほうが高くつきました。直接編集をやめてスクリプト経由に寄せるまでに測ったことと、いま引いている線を書き残します。
⟐ Claude Code2026-08-12
課金ユーザーに広告が出る不具合を、判定の一元化で止めるまで
広告除去を購入した方に広告が出てしまう不具合の原因は、フラグの不足ではなく判定の分散でした。Claude Codeで広告SDKの呼び出し口を棚卸しし、単一の純粋な判定関数へ畳み込むまでの実装記録です。期限判定を端末時計に預けない工夫や、消し忘れを構造で防ぐ設計も紹介します。