# 一般向けサービス：推奨構成

> 作成：2026年9月。前提：PHPは選択肢から除外。個人の既定であり、プロジェクト固有の要件・既存資産・チームの制約と食い違う場合はそちらを優先する。
> バージョン番号は書いていない。採用時は各ツールの最新安定版を確認して使う。料金も記載していないので、各サービスの最新の料金ページで確認する。

前提（既定の条件）：処理の中心＝DBの読み書き・業務ロジック、実行環境＝指定なし（PaaS可）、開発者の人数＝1〜2人、段階＝試作・MVP、外部の制約＝なし
案件の条件が前提と違う場合は、下の「条件が違うとき」で該当する行を確認する。

## 推奨：TypeScript
- フロントと同じ言語に揃えられ、API呼び出し中心の処理に向くTypeScript（§2-10 手順2）

## 構成

### 構成（§19-7 をもとに作成）
| レイヤー | 採用 |
|---|---|
| Web | Next.js |
| モバイル | React Native＋Expo（Expo Router、NativeWind） |
| バックエンド | Hono（またはGo） |
| DB・認証・ストレージ | Supabase（小〜中規模）／ RDS＋Clerk＋S3（中規模以上） |
| プッシュ通知 | FCM（Expo Notifications） |
| 画像・動画 | Cloudflare Images／Cloudflare Stream |
| 分析 | PostHog |
| 配信 | EAS Build／Submit／Update |

## 運用の内訳
- 自分で書く：Next.js、React Native、Expo、Expo Router、NativeWind、Hono
- マネージドに任せる：Supabase、RDS、Clerk、S3、FCM、Expo Notifications、Cloudflare Images、Cloudflare Stream、PostHog、EAS Build、EAS Submit、EAS Update

## 条件が違うとき（既定との差分）
- 処理の中心＝CPU負荷の高い計算：重い処理＝Rustで切り出し（ワーカー、またはnapi-rs／PyO3でネイティブ拡張）
- 実行環境＝AWS：インフラ＝ECS on Fargate＋ALB＋RDS／認証（AWSに集約する場合）＝Amazon Cognito
- 実行環境＝オンプレ・VPS：インフラ＝Kamal（Dockerコンテナをゼロダウンタイムでデプロイ）
- 実行環境＝エッジ：インフラ＝Cloudflare Workers
- 外部の制約＝機械学習ライブラリが必須：推奨が「Python」になる／バックエンド＝FastAPI
- 外部の制約＝既存のJava資産と連携：推奨が「Kotlin」になる／バックエンド＝Spring Boot
- 外部の制約＝Unityとコード共有：推奨が「C#」になる／バックエンド＝ASP.NET Core（Minimal API）
- 外部の制約＝Microsoft／Azure中心：推奨が「C#」になる／バックエンド＝ASP.NET Core（Minimal API）

## §19-7 toCサービス（Web＋モバイル）

```mermaid

flowchart TB
  WEB["Next.js"] --> API["Hono／Go API"]
  APP["Expo アプリ"] --> API
  API --> SB[("Supabase<br/>DB・Auth・Storage")]
  API --> FCM["FCM"] -. "プッシュ通知" .-> APP
  API --> CFI["Cloudflare Images／Stream"]

```

## §26-1 共通の準備

```bash
# 言語・ツールのバージョン固定（使う言語だけ）
mise use node@lts pnpm@latest
mise use go@latest
mise use ruby@latest
mise use python@latest uv@latest

# Gitフックと依存更新
pnpm add -D lefthook && pnpm exec lefthook install
# renovate.json を置き、GitHubでRenovateアプリを有効化する
```

## §26-7 toCサービス（§19-7）

```bash
npx create-expo-app@latest mobile
pnpm create next-app@latest web
npx supabase init
```

## 次に読む
- §2-10: https://stackbook.kom3da.dev/s/2.md（「### 2-10.」の節）
- §2-1: https://stackbook.kom3da.dev/s/2.md（「### 2-1.」の節）
- §23: https://stackbook.kom3da.dev/s/23.md
- §24: https://stackbook.kom3da.dev/s/24.md
- §25: https://stackbook.kom3da.dev/s/25.md
