テーマを切り替える

個人開発の最小事業システム:サイト・商品・決済・データ・自動化の公開チェックリスト

Easton editorial illustration: central open laptop with a concise checked launch checklist

"Cloudflare Pages の公式制限ページには、Free プランのビルド回数、ビルド時間、ファイル数、単一ファイルサイズ、Pages Functions が Workers 枠を使用する規則が掲載されています。"

launch-checklist.md を開くと、/pricing はあるのに Stripe Product がありません。ログインはできてもサブスクリプション状態が同期されず、GA4 には page_view だけが届き、決済ボタンのクリックイベントはありません。フィードバックはメールで届いても、タスクには流れません。

個人開発では「動く」ことを公開条件にしがちです。有料ユーザーへの案内が手作業のままだったり、無料枠を超えてから初めて利用量を確認したりすると、その隙間が表面化します。

最小事業システムの価値は、ツール数が少ないことではなく、事業上の操作が最後まで完了することにあります。ユーザーが訪れ、商品を受け取り、支払い、権限を得て、データとフィードバックを残し、失敗時には対応を受けられる状態です。

最初のチェック表で途切れた受け渡しを探し、最低限実装する層と後回しにする層を決めます。

最小システム検収表:公開前に閉じるべきインターフェース

検収基準は「機能が全部ある」ではありません。各業務操作が開始から結果まで通ることです。公開前夜に Stripe webhook、Supabase RLS、GA4 イベントを追加することになるのは、早い段階で「画面が表示される」までしか確認していないためです。

公開前に確認したいインターフェースは次のとおりです。

検収領域閉じるべきインターフェースよくある抜け検収操作
サイト入口ページが開く、404 がない、静的資産が読み込まれる、ビルド回数を監視するCloudflare Free のビルド枠を超える、エラーログを誰も見ない実機でトップと料金ページを開き、Cloudflare Pages のビルド履歴を確認する
プロダクト形態コンテンツ/ツール/SaaS の形が明確で、料金ページに価格がある説明だけで価格や購入経路がない、Stripe Product がないStripe Dashboard の Products/Prices を確認し、/pricing の表示を確認する
決済フローCheckout Session、webhook、権限付与、失敗/キャンセル処理、状態同期が動くwebhook がない、支払っても権限が付かない、返金状態が同期しないStripe のテスト決済を完了し、webhook ログとサブスクリプションテーブルを確認する
ユーザーシステムログイン、RLS、サブスクリプション同期、無料/有料の権限差が動くログインボタンだけで RLS がない、全員が有料内容を読めるログイン後に subscriptions を確認し、無料アカウントで RLS を検証する
データイベントGA4/GSC、5〜8 個の業務イベント、決済/登録/試用、エラー通知が動くGA4 に page_view しかなく、決済クリックや登録完了がないGA4 DebugView で収集を確認し、GSC Performance report でクエリとページを見る
フィードバック循環送信でき、タスクに入り、サポートに対応状態があるメールだけ届き、タスクボードや追跡状態がないフィードバックを一件送り、ボードまたはメールキューへの到達を確認する
自動化境界Webhook/API/Cron に使用量の警戒線、通知、ロールバックがある失敗が通知されず、上限到達後に気づくWorkers の利用量を確認し、警戒線とエラー監視を設定する
コスト監視Cloudflare/Supabase の使用量を記録し、無料枠とアップグレード条件を把握するSupabase Free が停止する、Workers の上限超過に気づかないCloudflare 使用量と Supabase 稼働状態を確認し、移行条件を記録する

各行は、リポジトリ内の設定を見るだけでは終わりません。公開前に、決済を一度、ログインと権限確認を一度、イベント検証を一度、フィードバック送信を一度、実際に完了させます。

サイト入口:最小構成の技術スタックと境界

サイトは最初の層です。静的サイトや軽量フレームワークから始められますが、ビルド回数、ファイル数、動的関数はコスト表に入ります。Cloudflare Pages と Astro は保守負担を下げますが、無料枠は設計保証ではありません。

技術スタック選択表

プロダクト形態推奨スタックビルドコスト動的関数コスト適した用途
コンテンツサイトAstro / Hugo / HexoCloudflare Pages Free:500 builds/month、20,000 files、25 MiB assetPages Functions は Workers に計上ブログ、ドキュメント、SEO ページ、商品説明
ツールサイトAstro + API 呼び出し同上API 呼び出しは Workers に計上(100,000 requests/day)単一ページツール、検索、計算、データ可視化
SaaSAstro + Supabase同上Workers + Supabase Edge Functions複数ユーザー、サブスクリプション、権限、DB 読み書き

2026 年 7 月 26 日時点で、Cloudflare Pages 公式制限の Free プランは月 500 ビルド、20 分のビルドタイムアウト、最大 20,000 ファイル、1 資産 25 MiB です。Pages Functions のリクエストは Workers 枠を使い、Workers Freeには 1 日 100,000 リクエストと 1 回 10 ms の CPU が含まれます。

静的資産のリクエストが無料でも、システム全体が無料になるわけではありません。画像、動画、ダウンロードが多ければ、オブジェクトストレージ、CDN 処理、変換、egress も計算します。

AI 生成ページにも利用者価値が必要

Google Search の生成 AI コンテンツ指針は、調査や構成への AI 利用を認めています。一方、利用者への付加価値がないページを大量生成すると、scaled content abuse に抵触する可能性があります。入口ページには実際の商品、フィードバック、振り返りが必要で、自動生成した SEO ページの数では代替できません。

コンテンツサイトの性能は Astro 5 パフォーマンス改善も参考になります。最小システムは公開前に Lighthouse 100 を求めませんが、ページ、資産、CTA が動き、ビルド失敗を確認できる必要があります。

プロダクト層:コンテンツ、ツール、SaaS のどれを最初に作るか

プロダクト形態は、決済、ユーザー、データ、自動化の複雑さを決めます。コンテンツ、ツール、SaaS は同列の選択肢ではなく、運用責任が段階的に増える形です。最初は、最も慣れた技術、最も単純な決済、最も少ないユーザーデータを選びます。

プロダクト形態の判断表

プロダクト形態技術の複雑さ決済の複雑さユーザーデータ最初の版への適合
コンテンツサイト低:静的 + CMS + SEO低:買い切りまたは無料低:メール購読、RSS、コメント高:SEO 集客、コンテンツ収益、需要検証に向く
ツールサイト中:静的 + API + 軽量バックエンド中:買い切りまたはサブスクリプション中:軽量ユーザー機能、使用履歴中:中心機能と課金方式の検証に向く
SaaS高:認証 + DB + サブスクリプション + RLS高:継続課金、従量課金、返金高:複数ユーザー、権限、状態、データ分離低:支払需要が明確で技術に慣れた場合に向く

判断基準

最初の形は三つの要素で選びます。

  1. 技術への習熟:Astro や Hugo に慣れていれば、コンテンツサイトで需要を早く確認できます。Supabase や Postgres に慣れていれば、ツールや SaaS の実装リスクを下げられます。
  2. 決済の複雑さ:買い切りは通常サブスクリプションより単純で、サブスクリプションは従量課金より単純です。最初は買い切りまたは無料のリード獲得にし、複雑な課金は需要が出てから追加します。
  3. ユーザーデータの必要量:コンテンツはメールと RSS、ツールは使用履歴、SaaS は本人識別、権限、サブスクリプション状態、データ分離が必要です。

プロダクト形態は肩書ではありません。中心機能が安定していないなら、アカウントセンター、チームスペース、テンプレート市場を先に作る理由はありません。

決済層:最後のボタンではなく、データモデルを決める入力

決済は最小システムで最もリスクの高い層です。データベース、ユーザー、権利、管理画面、通知の設計に影響します。Checkout で課金できても、webhook が権限を付けず、返金が状態に反映されず、期限切れ後もアクセスできれば履行失敗です。

決済フローの手順表

Stripe の最小決済ループは次の手順です。

手順Stripe オブジェクト閉じるべきインターフェースよくある抜け
1. 商品を作るProductsStripe Dashboard で商品を作り、料金ページに価格を表示する/pricing に価格があるが Stripe Product がない
2. 価格を作るPrices金額、通貨、期間、買い切り/継続/従量モデルを設定するinterval がない、従量課金に meter がない
3. Checkout Session を作るCheckout Sessionline_items、mode、success_url、cancel_url を設定するsuccess_url へ移動するだけで決済状態を確認しない
4. webhook を設定するWebhook endpointcheckout.session.completed、invoice.paid、customer.subscription.deleted などを受信するwebhook がなく、支払い後に権限が付かない
5. 履行する独自ロジックDB で権限を付け、決済後に確認通知を送る追跡できない手作業に依存する
6. 返金を処理するRefunds状態更新、権限回収、返金通知を行う返金後も有料アクセスが残る
7. 状態を同期するSubscriptions更新、解約、期限切れ後に状態を更新する期限切れ後も権限が残る

料金モデル判断表

料金モデルはデータモデルを変えます。

料金モデルデータモデルへの影響権限管理適した用途
買い切りユーザーまたは購入記録に paid_at / purchase_id を追加一度だけ、永久または期限付きで付与デジタル商品、講座、テンプレート、単発ツール
サブスクリプションuser_id、stripe_subscription_id、status、current_period_end を持つ subscriptions を作る期間に応じて付与・回収し、状態同期が必要ツール、SaaS、会員コンテンツ
従量課金user_id、meter、amount、timestamp を持つ usage を作る使用量と残量を制御し、枠テーブルが必要API、クラウドストレージ、計算サービス

Stripe Products/Prices では、新しい Price を作り、lookup key を新しい Price に移せます。lookup key で価格を取得すれば、複数箇所に Price ID を直書きせずに済みますが、価格変更には公式の作成・有効化手順が必要です。

履行、返金、サブスクリプション状態は webhook とデータベースで処理します。フロントの success ページや Dashboard の手作業では不十分です。より詳しい比較は 一人会社の決済システム選定に続きます。

テスト決済の検証手順

公開前に Stripe のテスト環境で一連の決済を完了します。

  1. Stripe Dashboard のテスト環境を使う
  2. 成功、失敗、追加認証について Stripe の最新ドキュメントにあるテスト方法を使う
  3. テスト情報で Checkout を完了する
  4. Payments と Events を確認し、期待するイベントが発生したか確認する
  5. subscriptions または権限レコードを確認し、状態同期を確認する
  6. ログインして権限付与を確認し、権限のないアカウントでも再確認する

テスト完了後は、本番用の鍵、webhook endpoint、イベント署名、通知を別に確認します。

ユーザー層:本人識別、権限、サブスクリプション状態を分ける

ユーザーシステムはログインボタンだけではありません。本人識別、権限、サブスクリプション状態、データアクセス境界を区別します。ログインできても全員が有料データを読めるなら、問題はログイン部品ではなく認可です。

Supabase Auth はパスワード、magic link、OTP、ソーシャルログイン、SSO などを扱えます。認可では JWT とデータベース RLS を組み合わせます。認証が「誰か」を答え、RLS policy が「どの行を読み書きできるか」を決めます。

最小ユーザーシステム表

ユーザー能力Supabase の能力閉じるべきインターフェースよくある抜け
認証パスワード、magic link、OTP、ソーシャルログイン、SSOログインし、JWT を受け取り、自分のデータへアクセスできるログインボタンだけで認可がない
権限管理RLS(行レベルセキュリティ)自分のデータだけを読み、有料ユーザーだけが有料内容を使うRLS が無効、または policy が広すぎる
状態同期Stripe webhook → subscriptions支払い、更新、解約、期限切れ後に状態を更新するStripe 内だけに状態があり、アプリへ届かない
データ境界RLS policyユーザーは自分の行だけを扱い、管理者経路は別権限にする分離を試さず、別ユーザーのデータが見える

Supabase プロジェクトは Postgres をデータの基盤とし、Auth、Storage、Realtime、Edge Functions がその周辺で動きます。サブスクリプション状態は信頼できるバックエンドが更新し、ブラウザに有料権限を決めさせません。

公開前に少なくとも二つのアカウントで RLS を検証します。一つは権限あり、もう一つは権限なしです。service role などの高権限キーがブラウザへ出ていないことも確認します。

データ層:分析スクリプト一つではなく、5〜8 個の業務イベント

GA4 を置いただけではデータ層になりません。最初は意思決定を変える 5〜8 個のイベントで十分ですが、訪問、クリック、中心操作、登録、決済、エラー、フィードバックを含めます。

業務イベント表

業務イベントGA4 イベント名発火条件振り返り用途
ページ表示page_viewページ読み込み入口ページと SEO 流入分析
決済ボタンbegin_checkout または独自イベント購入または購読をクリック転換経路と料金ページの評価
登録完了sign_upユーザー登録完了登録転換と流入品質
試用開始独自 trial_start試用または無料体験開始試用転換と体験改善
決済完了purchaseバックエンドが成功を確認売上と決済経路の改善
エラー独自 error_occurredフロントエラー、API 失敗、中心操作の例外安定性と修正優先度
フィードバック独自 feedback_submit問題や意見を送信送信率と問題分類

GA4 は重要な業務操作を key event にできます。Realtime と DebugView で収集を検証し、本番の振り返りではパラメータ、流入元、重複除去も確認します。

データ振り返り手順

少なくとも週に一度は確認します。

  1. GA4:業務イベントを見る:DebugView で収集を検証し、訪問から登録、試用、決済までの経路を確認します。
  2. GSC:クエリとページを見る:総訪問だけでなく、クリック、表示、CTR、平均掲載順位、クエリ、ページを確認します。
  3. プロダクト分析:詳細が必要な時期を判断する:GA4 の集計で特定ユーザーの操作回数や離脱点が分からなくなったら、PostHog などでファネル、リテンション、行動を見ます。

売上前でも GSC、ログ、エラー通知は必要です。流入クエリ、料金ページの詰まり、中心操作の失敗、高頻度エラーを早く見つけられます。有料ユーザーが来てから計測しても、それ以前の失敗原因は戻せません。

自動化層:初日に行うものと、リスクを増やすもの

安全な反復を減らす自動化もあれば、失敗時の損失を拡大する自動化もあります。AI コーディングツールは開発を速めますが、決済履行、権限、セキュリティ、業務データの検収はできません。

Codex などの coding agent は、リポジトリ理解、実装、レビュー、デバッグ、テスト、移行を支援できます。これは開発協力層です。決済履行、権限境界、本番の秘密情報、使用量通知、ユーザーフィードバックには責任者が必要です。

自動化境界の判断表

自動化初日に行う価値増えるリスク使用量の警戒線
デプロイ自動化Git push 後にビルド・デプロイビルド枠を超える、失敗通知がないPages のビルド回数とタイムアウト
通知自動化決済イベント → 権限記録 → 確認通知webhook に再試行がなく、通知と権限がずれるWorkers のリクエスト、CPU、再試行量
バックアップ自動化重要データを能動的に出力し、有料プランでバックアップを有効化Free には自動バックアップがなく、出力失敗に気づかないDB サイズ、ストレージ、復元確認
振り返り自動化GA4/GSC の定期出力とレポート作成頻度が高すぎ、API 枠とデータ遅延を無視するGA4/GSC API quota
複雑な編成決済 → 権限 → メール → CRM を観測可能にする一つの失敗が全体を止め、冪等性とロールバックがない各段階の失敗、再試行、dead letter
複数システム連携Webhook、API、Cron、メール、CRM を連携遅延が異なり、失敗の統一ログがない動的リクエスト、キュー、外部 API 枠

Webhook/API/Cron の警戒線

Webhook、軽量 API、Cron は Cloudflare Workers で動かせますが、現在の上限をコスト表に入れます。

  • Workers Free:100,000 requests/day、10 ms CPU/invocation。
  • Workers Paid:1 アカウント月 5 ドルから。Standard は 10M requests/month と 30M CPU ms/month を含み、超過分は従量課金です。

静的資産と動的 Worker は課金方法が異なります。一つの「無料リクエスト数」だけでなく、リクエスト、CPU、再試行、ログ、KV、Queues、R2 などの合計を監視します。

デプロイ通知、決済確認、フィードバック振り分け、定期要約は初期に向きます。自動返金、本番データ削除、権限変更、一斉送信、価格変更は、監査、冪等性、ロールバックを検証するまで人の承認を残します。

コスト警戒線:無料枠は設計保証ではない

無料枠は開始時の予算であり、設計保証ではありません。Cloudflare と Supabase の境界は、動的リクエスト、CPU、ストレージ、egress、ビルド、ログ、利用形態で変わります。「永久無料」や固定ユーザー数は約束できません。

コストと境界の対照表

サービスFree 枠有料開始点または移行先変更リスク監視する境界
Cloudflare Pages500 builds/month、20,000 files、25 MiB asset、20 分のビルドタイムアウト対応する Cloudflare アカウントプランで Pages 上限を拡張枠とプラン境界が変わり得るビルド回数、ファイル数、タイムアウト
Cloudflare Workers100,000 requests/day、10 ms CPU/invocation、静的資産リクエストは無料Paid は $5/account/month から、10M requests と 30M CPU ms を含む価格、CPU、リクエスト、関連製品の枠が変わり得るリクエスト数、CPU、再試行、使用量通知
Supabase50,000 MAU、500 MB database、1 GB storage、5 GB egress、Free project 2 個、1 週間未使用で停止する場合があるPro は $25/month、$10 の compute credits を含むプロジェクト、計算、流量、セキュリティ境界が変わり得るMAU、DB、ストレージ、egress、稼働状態

数値は 2026 年 7 月 26 日に Cloudflare Pages limits、Workers pricing、Supabase pricingで再確認しました。枠と課金方法は変わるため、公開時にも公式ページを確認します。

Supabase Free は 1 週間未使用のプロジェクトが停止する場合があり、自動バックアップも含みません。「プロジェクトが開く」だけを正常性確認にせず、稼働状態、出力、復元、アップグレード条件を確認します。

Cloudflare の境界は Cloudflare Free 制限チェックリストと Cloudflare プラン比較にも整理しています。

まとめ

個人開発の最小事業システムは、短いツール一覧ではありません。重要な業務操作に入口、結果、失敗経路があり、訪問、商品提供、決済、権限、データ、フィードバック、障害対応まで続く状態です。

最初の版に完成度は要りませんが、検収できなければなりません。launch-checklist.md をリポジトリの横に置き、実ユーザーの経路で決済、権限、イベント、フィードバック、障害対応を通します。後からフロントエンド、バックエンド、デプロイ、データベース、決済、分析を育てても、欠けた受け渡しのために全体を作り直さずに済みます。

個人事業の最初の課金可能なシステムを検収する

実際のユーザー経路に沿って、入口、商品動作、決済履行、権限、データ、フィードバック、障害時の引き継ぎを確認します。

⏱️ 目安時間: 60 分

  1. 1

    ステップ 1: 実際の事業経路を一本描く

    ランディングページまたはコンテンツページから始め、CTA、中心機能、決済またはリード獲得、権限付与、フィードバック入口を書き出します。
  2. 2

    ステップ 2: 中心機能を一度完了させる

    実データで処理中、成功、失敗、再試行を通し、中心となる各操作に追跡可能な記録が残ることを確認します。
  3. 3

    ステップ 3: 決済と権限を検証する

    テスト環境で成功、失敗、追加認証が必要な決済を行い、webhook、注文、サブスクリプション状態、権限を照合します。
  4. 4

    ステップ 4: 最小イベントセットを確認する

    訪問、CTA、中心操作、登録、決済、フィードバック、エラーのイベントを検証し、GA4、GSC、またはプロダクト分析で重要な問いに答えられるか確認します。
  5. 5

    ステップ 5: フィードバックを送り、人の対応につなげる

    プロダクトからフィードバックを送り、一つのタスク入口に届くことと、流入元、ユーザー、ページ、時刻、対応状態が残ることを確認します。
  6. 6

    ステップ 6: コストと障害の警戒線を設定する

    動的リクエスト、CPU、データベース、ストレージ、egress、ビルド、停止条件を記録し、通知、手動照合、ロールバック手順を決めます。

FAQ

個人開発の最初の版にログインは必要ですか?
権限境界で決まります。コンテンツサイトはメール購読や問い合わせから始められます。ツールは履歴保存や利用制限が必要なときだけ軽量ログインを追加します。SaaS はサブスクリプション、権限、データ分離のために通常は本人識別が必要です。
コンテンツサイト、ツール、SaaS のどれから始めるべきですか?
最も慣れた技術、最も単純な決済、最も少ないユーザーデータで始めます。コンテンツは検索需要、ツールは一つの中心動作、SaaS は継続権限と複数ユーザーデータの需要を検証する形です。
個人開発者が決済導入前に設計すべきものは何ですか?
Product、Price、Checkout、webhook、履行、返金、サブスクリプション状態、注文テーブル、権限テーブルを先に決めます。料金モデルはデータベース項目、ユーザー状態、通知フローを変えます。
GA4 だけで十分ですか?PostHog はいつ必要ですか?
流入、ページ、主要転換を見る段階は GA4 と GSC で始められます。集計データでは誰が何を何回行い、どこで離脱したか分からなくなったら、PostHog などのプロダクト分析を追加します。
売上前から GSC、ログ、エラー通知が必要なのはなぜですか?
有料ユーザーが来る前に、検索クエリ、操作の詰まり、高頻度エラーを見つけられるからです。売上後に計測を始めても、初期離脱の原因は通常復元できません。
Cloudflare と Supabase の無料枠で初期プロダクトを運用できますか?
検証には足りる場合がありますが、ユーザー数は保証できません。動的リクエスト、CPU、データベース、ストレージ、egress、ビルド、プロジェクト稼働状況を、最新の公式上限と自分の通知で管理します。
AI コーディングツールでシステム全体を一度に作れますか?
実装、テスト、コードレビューは加速できますが、決済履行、権限境界、セキュリティ、使用量通知、ユーザーフィードバックの人による検収は代替できません。

10分で読めます · 公開日: 2026年9月24日

コメント

GitHubアカウントでログインしてコメントできます

Easton BlogEaston Blog