§19
ケース別の構成
最終確認:2026年9月
§1〜18の既定から、ケースごとに組み合わせたもの。記載のないレイヤーは各セクションの既定を使う。
19-1. コーポレートサイト・LP・メディア
- フロント
- Astro+Tailwind CSS
- ホスティング
- Cloudflare Pages
- フォーム
- Cloudflare Workers+Resend、スパム対策にCloudflare Turnstile
- 検索
- Pagefind
- 分析
- Cloudflare Web Analytics(取引先やマーケティング担当がGA4を求めるならGA4)
- 監視
- Better Stack(外形監視)
更新の即時反映は、CMSのWebhookからビルドを起動して行う。
19-2. EC(標準)
- 決済
- Shopify Payments+国内決済アプリ
- 追加機能
- Shopifyアプリ。独自処理が必要ならShopify Functions
19-3. EC(独自要件が多い)
- コマースエンジン
- Medusa(TypeScript)
- DB
- RDS for PostgreSQL
- インフラ
- ECS on Fargate、Cloudflare(CDN・WAF・Waiting Room)
19-4. 業務システム・社内ツール(Rails構成)
- ジョブ・キャッシュ
- Solid Queue/Solid Cache
- 認証
- Railsの認証ジェネレータ(社内ならGoogle/Entra IDのSSO)
- 認可
- Pundit
- 管理画面
- Avo
- 帳票
- Playwright(HTML→PDF)
- テスト
- Minitest+システムテスト
19-5. 業務システム・社内ツール(TypeScript構成)
- UI
- shadcn/ui+TanStack Table(編集が重いならAG Grid)
- フォーム
- React Hook Form+Zod
- API
- Hono(RPCでフロントと型共有)
- 認証
- Better Auth(社内ならSSO)
- リポジトリ
- pnpm workspaces+Turborepo(apps/web、apps/api、packages/shared)
- デプロイ
- Render(AWSならECS on Fargate、オンプレならコンテナでVM)
19-6. 自社SaaS(B2B)
- API
- OpenAPI(oapi-codegen)→ openapi-typescriptでクライアント生成
- DB
- PostgreSQL(テナントIDカラム+Row Level Security)
- ジョブ
- River
- 認証
- Clerk(SSO/SCIMが必要になったらWorkOS)
- 課金
- Stripe Billing
- 監査ログ
- 専用テーブルに追記のみで記録
- 分析・機能フラグ
- PostHog
最初に決めること:マルチテナントの分離方式、SSO対応の時期、監査ログの範囲。
19-7. toCサービス(Web+モバイル)
- Web
- Next.js
- プッシュ通知
- FCM(Expo Notifications)
- 分析
- PostHog
- 配信
- EAS Build/Submit/Update
19-8. AI/LLMプロダクト
- フロント
- Next.js(ストリーミング表示)
- DB・ベクトル
- PostgreSQL+pgvector
- 評価・トレース
- Langfuse
利用規約・データ取り扱い(学習への利用有無、保存リージョン)を利用者に説明できる状態にしておく。
19-9. リアルタイム系(チャット・通知・共同編集)
- Rails
- Action Cable+Solid Cable
- TS・マネージド
- Cloudflare Durable Objects
- 同時接続が非常に多い・プレゼンスが必要
- Elixir(Phoenix Channels+Presence)
- 共同編集
- Yjs(マネージドならLiveblocks)
- 片方向で足りる
- Server-Sent Events
19-10. インフラツール・CLI
- 配布
- GoReleaser(GitHub Releases、Homebrew tap)
19-11. 個人開発・MVP
- エッジ
- Hono+Cloudflare Workers+D1/R2
- Go単体
- Go+PostgreSQL+htmx
PaaSは必ず支出上限を設定する。
19-12. 高トラフィック(セール・チケット販売)
動的処理は「カート投入」と「決済」に絞り、それ以外はキャッシュから返す。
19-13. データ基盤・バッチ
再実行・中断再開が必要な大規模バッチやストリーム処理は、変換をKotlin(Spring Batch/Kafka Streams)にする(§2-10 手順2)。