RORK LABEN
TOOLING — Rorkの開発者向けリポジトリが動き続けています。rork-xcodeが7月16日、rork-deviceが7月15日、rork-plistが7月13日に更新されましたOPUS46 — RorkでClaude Opus 4.6が稼働しています。Rork MaxはClaude Codeを土台にアプリを組み立てる設計ですSIM — ブラウザ上で動くクラウドのiOSシミュレータを備え、実機へのインストールは1クリック、App Storeへの提出は2クリックと案内されていますMAX — Rork MaxはReact Nativeではなく純粋なSwiftを出力します。iPhone・iPad・Apple Watch・Apple TV・Vision Pro、そしてiMessageまでが射程ですNATIVE — HealthKit、ARKitとLiDAR、NFC、Dynamic Island、Live Activities、Metalによる3D、Core MLのオンデバイス推論まで扱えますSEED — RorkはLeft Lane Capitalが主導する1,500万ドルのシードラウンドを実施し、Peak XVとa16z Speedrunが参加しましたTOOLING — Rorkの開発者向けリポジトリが動き続けています。rork-xcodeが7月16日、rork-deviceが7月15日、rork-plistが7月13日に更新されましたOPUS46 — RorkでClaude Opus 4.6が稼働しています。Rork MaxはClaude Codeを土台にアプリを組み立てる設計ですSIM — ブラウザ上で動くクラウドのiOSシミュレータを備え、実機へのインストールは1クリック、App Storeへの提出は2クリックと案内されていますMAX — Rork MaxはReact Nativeではなく純粋なSwiftを出力します。iPhone・iPad・Apple Watch・Apple TV・Vision Pro、そしてiMessageまでが射程ですNATIVE — HealthKit、ARKitとLiDAR、NFC、Dynamic Island、Live Activities、Metalによる3D、Core MLのオンデバイス推論まで扱えますSEED — RorkはLeft Lane Capitalが主導する1,500万ドルのシードラウンドを実施し、Peak XVとa16z Speedrunが参加しました
記事一覧/開発ツール
開発ツール/2026-05-25中級

Rork で作る iOS アプリに StoreKit 2 で買い切り課金を実装するノート

Rork が生成する Swift / SwiftUI コードに StoreKit 2 で買い切り課金を後付け実装する手順メモ。累計 5,000 万 DL の壁紙アプリで StoreKit 1 から 2 へ移行した経験を踏まえて、ProductID 設計・Transaction 検証・Paywall UI・本番ハマりどころまで実装サンプル込みで共有します。

rork58rork-max41storekit-2アプリ内課金9ios12swiftui11個人開発187

プレミアム記事

Rork で iOS アプリを生成すると、起動から画面遷移までは綺麗に動くのに、肝心の課金部分は「ここは自分で書いてください」というコメントだけが置かれていることがあります。実際に App Store に出すなら必ず通る部分なので、ここで手が止まってお蔵入りする方を時々見かけます。

廣川政樹です。2014 年から個人開発で iOS / Android アプリを続けていて、累計 5,000 万 DL の壁紙アプリ群(綺麗な壁紙・浮世絵壁紙・クールな壁紙・イラスト壁紙・Dolice 壁紙)と Lab 4 サイト・Blog 2 サイトを一人で運営しています。5 アプリすべてを 2025 年に StoreKit 1 から StoreKit 2 に移行した直後だったので、Rork で生成したコードに StoreKit 2 を後付けで組み込むのは比較的スムーズに進みました。

このノートはその実装メモです。「Rork で動くものは作れたけれど、課金で詰まっている」「StoreKit 2 の実装例を探しているが iOS 公式サンプルが Rork のコード構成と合わない」という方の参考になればと思います。

なぜ Rork コードに StoreKit 2 を後付けすることになるか

Rork は要件から SwiftUI アプリの骨格を生成してくれますが、IAP(In-App Purchase)の実装は基本的に「ここでアンロックする」というプレースホルダだけ置かれます。理由は単純で、IAP は App Store Connect 側の設定(ProductID 作成、Tax フォーム提出、銀行口座登録、契約承認)が完了していないと動作確認できず、Rork 側でテストできないからです。

Rork が生成するアプリは、おおよそ以下のような構造になります。

MyApp/
├── MyAppApp.swift           ← @main エントリポイント
├── ContentView.swift        ← トップ画面
├── Views/
│   ├── WallpaperView.swift  ← 機能画面
│   └── PremiumGateView.swift ← 「ここで課金」と書かれた仮実装
├── Models/
│   ├── WallpaperItem.swift
│   └── PurchaseManager.swift ← 中身は TODO だけ
└── Resources/
    └── Assets.xcassets

PurchaseManager.swift が空っぽなので、ここに StoreKit 2 のロジックを書き込むのが課金実装の本体です。SwiftUI ベースなので StoreKit 2 と相性が良く、StoreKit 1 時代のように SKProductsRequestDelegate を SwiftUI のライフサイクルに無理やり押し込む必要がありません。

私自身、壁紙アプリ群を StoreKit 1 → 2 に移行した直後だったので、Rork コードへの後付けは「移行作業を 1 から繰り返す」感覚で進められました。逆に言えば、StoreKit 2 を初めて触る方には少し学習コストがあります。本稿は「初めて StoreKit 2 を触る人」向けにフルセットで書いています。

App Store Connect 側の準備 — 課金実装よりこっちが鬼門

実装の前に App Store Connect 側で済ませる作業があります。私の経験上、ここで詰まる方が多いです。

第一に、App Store Connect で課金契約と各種フォームを完了 させます。これが未完了だとサンドボックスでも本番でも IAP が動きません。Apple の「Tax, Banking, and Trade Representative Contact Information」のセクションを全て埋める必要があります。

第二に、ProductID の命名規則を決めて作成 します。私は以下のような命名規則で統一しています。

{bundle_id}.{type}.{label}

例:
- com.dolice.wallpaper.consumable.pack_50  (消耗品)
- com.dolice.wallpaper.nonconsumable.premium  (買い切り)
- com.dolice.wallpaper.subscription.monthly  (月額)
- com.dolice.wallpaper.subscription.yearly  (年額)

命名規則を決めずに開発すると後で困ります。1 つ目のアプリで premium_full という ID を作って、2 つ目のアプリで unlock_all という ID を作ると、共通化されたコードで分岐が必要になります。最初に統一しておくのが個人運用での実用的な判断です。

第三に、ProductID は本番と検証で同じものを使う こと。Apple のサンドボックスでテストするときと本番購入で同じ ProductID が使われるので、開発初期に作った ID を後から変更しにくい構造になっています。最初に慎重に決めてください。

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

この記事の続きを読む

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

この記事で得られること
Rork で生成された Swift / SwiftUI コードに StoreKit 2 を後付けで組み込む具体的な実装手順とフォルダ構成パターンの完全コードを取得できます
5,000 万 DL の壁紙アプリで StoreKit 1 から 2 に移行した経験を踏まえた、ProductID 設計と Transaction 検証の落とし穴対策が分かります
RevenueCat を使わずに素の StoreKit 2 で完結させる場合と、RevenueCat を入れて運用工数を下げる場合の判断軸を、個人開発者の実用範囲で比較できます
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-04-24
Rork Max で生成した SwiftUI アプリが Xcode でビルドエラー — 症状別の復旧ガイド
Rork Max で生成した SwiftUI プロジェクトを Xcode で開いてビルドしようとした際に遭遇しやすいエラー(依存解決失敗・Info.plist 不整合・Entitlements 欠落・Bundle Identifier 重複など)を、症状ごとに原因と復旧手順に分けて整理します。
開発ツール2026-05-05
Rork Max で App Store 審査を通すための実践ガイド
Rork Max で作成したアプリが App Store 審査で却下されやすい理由と、審査を通過するための具体的な対処法を解説。メタデータの最適化・プライバシーポリシー・アクセシビリティ・パフォーマンス要件まで実践的にまとめました。
開発ツール2026-04-24
Rork Max の Machine Learning 最適化 — Core ML 統合・端末別パフォーマンス調整・量子化からサイズ削減まで
Rork Max で生成した iOS アプリに Core ML を統合して、端末上で推論を動かすときの最適化手順を網羅的にまとめました。モデル変換・量子化・Neural Engine 最適化・バッテリー消費抑制まで、実アプリで詰まるポイントを実装レベルで解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →