◉RORK LABEN
●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…
記事一覧/開発ツール
⬡ 開発ツール/2026-04-25上級

RevenueCat の固定費が気になり始めた人のための、App Store Server Notifications V2 自前運用ガイド

Rork アプリで RevenueCat を経由せず、App Store Server Notifications V2 を Cloudflare Workers で受信する構成を、JWS 検証・冪等処理・テスト戦略まで含めて実装する実践ガイド。

StoreKit 217App Store Server API4Cloudflare Workers25サブスクリプション66JWS3

✦ プレミアム記事

RevenueCat を 1 年ほど運用していて、ふと「このまま MRR が伸びると固定費が無視できなくなるな」と感じたことはないでしょうか。私自身、3 つほど Rork で出したアプリの売上が積み上がってきた頃に、同じ違和感を持ちました。RevenueCat 自体はとても優秀なサービスですし、立ち上げ期に使う価値は十分あります。一方で、ある程度規模が読めてきた段階で「この検証ロジックは自分のコードベースに置いておきたい」と思うのも、個人開発者として自然な感情だと思います。

このガイドは、その「卒業」を実装レベルで現実的に進めるためのものです。具体的には、Rork で書いた iOS アプリから StoreKit 2 で購入を完了させ、Apple から飛んでくる App Store Server Notifications V2(以下 ASSN V2)を Cloudflare Workers で受け取り、JWS を検証して KV に購読状態を保存する、という最小だけれど本番運用できる構成を作ります。執筆時点で実際に動かしている構成を元に、踏みやすい落とし穴も含めて書いていきます。

なぜ自前運用に踏み切るのか — RevenueCat を否定したいわけではない

最初にはっきり書いておきますと、私は RevenueCat を否定するつもりはありません。むしろ、最初の 1 本目のサブスクリプションアプリでは積極的に使うことをおすすめします。立ち上げ期の検証フローを内製すると、それだけで 1〜2 週間はかかりますし、サーバー通知のテストは想像以上に泥臭い作業です。

ただし、次のような状況になったら、自前運用への移行を検討する価値が出てきます。

  • 月額の MTR(Monthly Tracked Revenue)が一定額を超え、RevenueCat の課金プランがビジネス全体の利益率に影響し始めた
  • ユーザーごとに細かい課金ロジック(地域別の価格・社内向けクーポン・特定ユーザーへの個別オファー)を実装したくなったが、RevenueCat のダッシュボード経由ではフィットしない
  • 監査要件や個人情報の流通範囲を理由に、決済ステータスを自分のサーバー以外に置きたくない事情が出てきた

このいずれかが当てはまるなら、自前運用は十分に検討に値します。一方で、まだ MRR が立ち上がっていない段階で「コストが気になる」だけで自前化するのは、おすすめしません。検証バグの 1 件で 1 日売上を止めるリスクがあり、その 1 日のロスのほうが RevenueCat の月額より遥かに高くつくからです。

全体像:StoreKit 2 → ASSN V2 → Cloudflare Workers → KV のデータフロー

具体的な実装に入る前に、構成の全体像を頭に入れておきましょう。データの流れは次のようになります。

  1. ユーザーが Rork アプリ内でサブスクリプションを購入(StoreKit 2 が処理)
  2. 購入完了後、Apple のサーバーが指定の URL に JWS 署名付き の通知を送ってくる(ASSN V2)
  3. Cloudflare Workers で通知を受け取り、JWS の署名を Apple のルート証明書チェーンで検証
  4. 検証済みのペイロードから originalTransactionId と notificationType を取り出し、Cloudflare KV に冪等に書き込む
  5. アプリ起動時にユーザーが KV を参照し、現在の購読状態を取得する

ポイントは、購読状態の「真実」を Apple → Workers → KV のラインに置くことです。クライアントだけで Transaction.currentEntitlements に頼ると、レシート改ざんや時計操作で誤判定する可能性があり、また「サーバー側で誰が有効購読者か」を把握できないため、メール配信などの後続施策にも使えません。

✦

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

この記事の続きを読む

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

この記事で得られること
✦RevenueCat の月額費用が事業規模に対して重く感じ始めた個人開発者が、App Store Server Notifications V2 を Cloudflare Workers で自前受信する構成に切り替えられる
✦JWS 署名検証・ステータス遷移のリプレイ対策・購読状態の冪等更新を、Rork から呼び出せる完全なコード付きで習得できる
✦自前運用に切り替えることで月額固定費を限りなくゼロに近づけ、検証ロジックを自分で完全にコントロールできる構成に到達できる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

⬡ 開発ツール2026-04-28
Family Sharing で IAP が消える4つのトリガー — Rork で子ども向けアプリの課金を安全に設計する
Family Sharing 経由の購入で IAP 収益が突然消える原因と、Rork で実装する StoreKit 2・Server Notifications V2 を組み合わせた安全な課金設計を、実コードとテスト手順まで網羅的に解説します。
⬡ 開発ツール2026-04-26
Rork × Stripe Meter で AI アプリの使用量課金を実装する — トークン数・API 呼び出し回数で正確に課金する設計ガイド
Stripe Meter Billing で Rork アプリに使用量課金を実装します。メーター報告・冪等キー・リトライキュー・イベント集約・前払いクレジットとの使い分けまで、運用の実感を交えて解説します。
⬡ 開発ツール2026-05-09
Rork の A/B テスト基盤を GrowthBook と PostHog でゼロから組む
Firebase に頼らず、GrowthBook と PostHog をオープンソースで組み合わせて Rork アプリの A/B テスト基盤を構築する手順を、SDK 統合からベイズ統計の解釈、運用上の落とし穴までまとめました。