# AI・LLMプロダクト：推奨構成

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

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

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

## 構成

### 構成（§19-8 をもとに作成）
| レイヤー | 採用 |
|---|---|
| フロント | Next.js（ストリーミング表示） |
| AIバックエンド | LLM API呼び出し中心ならHono（TS）、埋め込み・ML処理があるならFastAPI（uv、Ruff、Pydantic） |
| DB・ベクトル | PostgreSQL＋pgvector |
| 長時間処理 | Temporal、またはInngest |
| 評価・トレース | Langfuse |
| 監視 | Sentry＋OpenTelemetry |

## 運用の内訳
- 自分で書く：Next.js、uv、Ruff、Pydantic、OpenTelemetry
- 自分で運用する：PostgreSQL、pgvector、Temporal
- マネージドに任せる：Inngest、Langfuse、Sentry

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

## §19-8 AI／LLMプロダクト

```mermaid

flowchart TB
  U["ユーザー"] --> FE["Next.js<br/>ストリーミング表示"]
  FE --> API["Hono または FastAPI"]
  API --> LLM["LLM API"]
  API --> DB[("PostgreSQL＋pgvector")]
  API --> WF["Temporal／Inngest<br/>長時間処理"]
  API --> LF["Langfuse<br/>評価・トレース"]

```

利用規約・データ取り扱い（学習への利用有無、保存リージョン）を利用者に説明できる状態にしておく。

## §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-5 業務システム・TypeScript構成（§19-5）

```bash
pnpm dlx create-turbo@latest app
cd app/apps
pnpm create vite@latest web --template react-ts
pnpm create hono@latest api
# api側
pnpm add drizzle-orm pg better-auth zod
pnpm add -D drizzle-kit @types/pg
# web側
pnpm dlx shadcn@latest init
pnpm add @tanstack/react-query @tanstack/react-router react-hook-form
# 共通
pnpm add -D -E @biomejs/biome && pnpm exec biome init
pnpm add -D vitest && pnpm create playwright
```

## 次に読む
- §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
