コンテンツへスキップ
すべての記事
約 5 分で読めます

出荷し続けられる SaaS スタックの選び方

フレームワークは決定の一部にすぎません。認証とデータからバックグラウンド処理、デプロイ、日々の保守まで全経路を評価する。

supastack チーム

製品要件を軸に選ぶ

フレームワーク名を比較する前に、製品が必要とするものを書き出します。Web ダッシュボード、オフラインモバイルツール、長いリサーチフローはそれぞれ異なる要件を持ちます。どのクライアントに提供するか、どのデータが各顧客に属するか、タブを閉じた後も続くべき操作は何かを決めます。

機能リストと並んでチームの経験を重みづけします。明確な境界を持つ馴染みのスタックは、認証・デプロイ・永続化の規約を同時に学ぶ必要がある新しい組み合わせより維持しやすいかもしれません。最初のインストールだけでなく、更新とデバッグの継続的な作業を数えてください。

  • 初日に必要なクライアント面 — Web のみか、モバイルとデスクトップもか。
  • どのデータが各顧客に属するか、チームがワークスペースを共有するか。
  • ブラウザタブを超えて存続しなければならない操作:キューされたジョブ、スケジュール処理、長時間実行タスク。
  • 何に課金するか — サブスクリプション、シート、使用量 — そして誰が支払うか。
  • チームが現実的に運用できる面の広さ:データベース、キュー、プロバイダー。

フレームワークの下の層を評価する

フレームワーク名が説明するのは表面です。その下の層が、製品が一体として保てるかを決めます。一つずつ見ていき、それぞれに同じ質問をします:この決定を所有しているのは誰か、どこで強制されているか?

スタックが空白にしている層は、あなたが引き受ける作業として扱います。「認証は持ち込み」は立派な設計ですが、セッションの意味論・プロバイダー統合・それに続くすべての失敗ケースを自分で所有することを意味するだけです。空白の層は選択ですが、見えない層は負債です。所有されている層が実際どう見えるかは、キットのモジュールドキュメントが良い参照になります。

層答えるべき質問
認証すべての面で、誰がセッションを発行し検証するか?
データ各レコードはどうやって所有顧客にスコープされるか?
課金支払いイベントはどこでアクセス権になり、誰が取り消すか?
バックグラウンド処理ジョブが失敗・再試行・二重実行したとき何が起きるか?
AI とプロバイダーキー・モデル選択・支出上限は誰が所有するか?
運用秘密情報・ログ・バックアップ・アップグレードは実際どう動くか?

ツール間の接合部を検査する

スタックとは統合の決定の集合です。誰がセッションを所有するか、レコードがどうスコープされるか、支払いイベントがどこで権限になるか、UI がバックグラウンド処理の結果をどう取り出すかを特定します。これらの接続が、リクエストが失敗したり重複到着したりしたときにハッピーパスが正しいままかを決めます。

supastack は Web 面に Next.js、モバイルに Expo、その下に共有 TypeScript パッケージを使います。Better Auth が認証を所有し、Postgres と Drizzle がレコードを永続化し、Trigger.dev が明示的なワークフロー動作を所有します。これらはリポジトリの選択であり、すべての製品が同じツールを使うべきという主張ではありません — 技術スタックガイドが各選択とその理由を記録しており、違うツールを選んでも質問はそのまま使えます。

どんなツールでも、テストは同じです:レコードを 1 つ選び、インターフェースからサーバー境界を通り、永続化まで、そして戻るまで追跡します。どこかの区間が強制されたルールではなく慣習なら、将来の貢献者がいつかそれを壊します。

動かし続けるコストを数える

スタックの決定は運用の決定でもあります。Postgres にはバックアップとマイグレーションの規律が必要です。ジョブランナーには誰かが実際に開くダッシュボードが必要です。すべてのプロバイダーキーにはローテーションとクライアントバンドル外の居場所が必要です。機能チェックリストに心を奪われる前に、これらの項目を比較に加えてください。

選択肢があるうちにアップグレード経路を確認します。依存が固定され、文書化された更新プロセスを持つモノレポ — キットはまさにそのための更新ガイドを整備しています — は、それぞれ異なるバージョンを前提としたチュートリアルから組み立てたスタックより、年月を経ても健全です。

  • 依存関係とセキュリティの更新:どの頻度で届き、誰が適用するか。
  • プロバイダー認証情報:どこに置かれ、誰がローテーションできるか。
  • データ:バックアップ計画、復元訓練、保持ポリシー。
  • 可観測性:何が大きく壊れ、何が顧客の報告まで静かに失敗するか。

小さな垂直スライスを構築する

スタックにコミットする前に、ユーザーをログインさせ、所有レコードを書き、処理を開始し、結果を取り出すスライスを実行します。次に意図的に間違ったワークスペース、期限切れセッション、失敗したジョブを試します。これらの通常の条件がどれだけのカスタムグルーを要するかを評価します。

短い決定記録を残します:スタックがサポートすること、後回しにすること、再検討のトリガー。ネイティブ購入、実プロバイダー受け入れ、デプロイ運用は、成功したローカルビルドの背後に隠れた仮定ではなく明示的な項目であるべきです。正しいスタックは、チームに製品作業へ十分な注意力を残します。

スライスがスターターのリポジトリ内でうまくいったら、次の問いはそれを採用するかどうかです — スターターキットかゼロからかがその決定を順にたどります。

  • ログインし、リロード後にセッションを復元する。
  • 1 つのワークスペースにスコープされたレコードを書き、読み戻す。
  • バックグラウンドタスクを開始し、後で結果を取り出す。
  • 間違ったワークスペースと期限切れセッションから同じ呼び出しを繰り返す。

スタック選びについてよくある質問

スタックの決定には自信満々の助言が集まりがちです。代わりに、自分の製品について答える価値のある質問はこれらです。

  • すでに知っているスタックを選ぶべきですか? — 製品の要件を表現できるなら、たいていはイエスです。境界の明確な馴染みのスタックは、何ヶ月もかけて学ぶ流行のスタックに勝ります — ただし製品がネイティブモバイルのような欠けたものを本当に必要とする場合を除きます。
  • フロントエンドフレームワークが最重要ですか? — その周囲の層ほどではありません。フレームワークは UI を形作りますが、認証・スコープ・課金・バックグラウンド処理が製品が正しくあり続けるかを決めます。
  • スタック評価にはどのくらいかけるべきですか? — 数週間ではなく数日です:要件を書き、継ぎ目を検査し、垂直スライスを 1 つ実行する。普通の失敗にカスタムグルーが必要なら、探し続けてください。
  • 後からスタックを乗り換えるのが正当化されるのはいつですか? — 必須プラットフォームやスケールの閾値といった中核の制約が変わったときであって、新しいリリースが良く見えるときではありません。乗り換えコストはコンポーネントではなく認証とデータにあります。

よくある質問

14 件の質問

supastack とは何ですか?

supastack は AI SaaS 製品を構築するためのモジュラー基盤です。共通インフラをまとめて提供するので、製品固有の機能に集中できます。

Web とモバイルに対応していますか?

はい。supastack には Web とモバイル体験の出発点として Next.js アプリと Expo アプリが含まれています。

どの認証が含まれていますか?

Better Auth がメール/パスワード、OTP、ソーシャルログインをカバーします。個人ワークスペースはアカウントと一緒にプロビジョニングされ、初日からレコードが境界内に収まります。

AI はどうサポートされていますか?

supastack には設定可能なマルチプロバイダー AI、使用量追跡、予算、暗号化された自前キー(BYOK)サポートが含まれています。

サブスクリプションはどう管理されますか?

このキット上に構築された製品では、Stripe 課金・サブスクリプション・権限が有料アクセスの基盤になります。プロバイダーの秘密はサーバー側に留まります。

製品固有のコードはどこに置きますか?

製品固有の機能は別のコードベースに置き、製品側が supastack の基本モジュールを設定・統合します。

supastack の価格は?

キットは生涯アップデート付きの一回払いです:単一フレームワーク 249 ドル(期間限定のローンチ価格 — 通常価格 349 ドルから 100 ドル割引)、または全フレームワーク(Next.js・iOS・Android)499 ドル(期間限定のローンチ価格 — 通常価格 599 ドルから 100 ドル割引)、追加開発者シート 1 席 75 ドル。キットのサブスクリプションはありません。このサイトのチェックアウトはライセンスキーをメールで配信し、GitHub 招待でリポジトリアクセスを提供します。

ワークスペースはどうデータを囲いますか?

ユーザーレコードは workspaceId でスコープされます。認証、権限、AI 使用量、課金イベント、監査エントリは個人ワークスペースの境界内に留まります。

バックグラウンドジョブはどう機能しますか?

Trigger.dev が明示的なジョブランタイムです。JobRunner コントラクトは enqueue・status・cancel のみを約束し、ワークフロー意味論は Trigger.dev 固有で明示的です。

メールとアウトリーチの違いは?

トランザクションメールはタスク完了通知などの製品ワークフローをカバーします。コールドアウトリーチやキャンペーンは製品自身に属し、このキットのメールモジュールの外です。

モバイルの購入はどのように機能しますか?

モバイルでは RevenueCat によるネイティブ購入と復元に対応し、アクセス権をサーバーで検証します。公開前にストアアカウントを設定し、実機テストを完了してください。Web 課金は別に管理します。

AI プロバイダーのキーはどこにありますか?

BYOK 認証情報は暗号化され、サーバー側に留まります。キーはログでサニタイズされ、使用量と予算はワークスペースレベルで可視です。

チェックアウトで使える支払い方法は?

Stripe ホストのチェックアウトはカードを受け付け、Stripe アカウントでウォレットを有効にすれば Alipay と WeChat Pay も提供できます——中国の購入者に便利です。ウォレット認可は非同期で確定するため、決済完了と同時にライセンスページが更新されます。

返金を受けることはできますか?

リポジトリへのアクセス権を取得した後は、supastack は永久にあなたのものとなるため、返金はできません。ですがご安心ください。生涯アップデートを含む完全なソースコードを入手し、ご自身やクライアントのために無制限にプロダクトを構築・公開できます。コードの転売や、リポジトリをスターターキットやテンプレートとして再配布することのみ禁止されています。

JA