テンプレート一覧に戻る

Python + FastAPI

FastAPI + SQLAlchemy + Pydantic v2 のAPIサーバー向けCLAUDE.md。型安全なPython開発のベストプラクティスを含みます。

中級pythonfastapisqlalchemypydanticapi
CLAUDE.md
# プロジェクト名

FastAPI + Python 3.12 で構築されたREST APIサーバー。

## 技術スタック

- **フレームワーク**: FastAPI 0.115+
- **言語**: Python 3.12+
- **ORM**: SQLAlchemy 2.0 (async)
- **バリデーション**: Pydantic v2
- **DB**: PostgreSQL 16
- **パッケージ管理**: uv

## コマンド

| コマンド | 用途 |
|---------|------|
| `uv run uvicorn app.main:app --reload` | 開発サーバー起動 |
| `uv run pytest` | テスト実行 |
| `uv run pytest --cov` | カバレッジ付きテスト |
| `uv run ruff check .` | Lint実行 |
| `uv run ruff format .` | フォーマット |
| `uv run alembic upgrade head` | DBマイグレーション適用 |

## ディレクトリ構造

| パス | 役割 |
|-----|------|
| `app/` | アプリケーションコード |
| `app/api/` | APIルーター |
| `app/models/` | SQLAlchemyモデル |
| `app/schemas/` | Pydanticスキーマ |
| `app/services/` | ビジネスロジック |
| `app/core/` | 設定・依存性注入 |
| `tests/` | テストコード |
| `alembic/` | マイグレーション |

## コーディング規約

- 型ヒント必須(`Any` は原則禁止)
- docstringはGoogleスタイル
- Ruffでフォーマット・Lint(Black互換)
- 非同期処理は `async/await` を優先
- 依存性注入は FastAPI の `Depends` を使用
- 環境変数は Pydantic Settings で管理

## エラーハンドリング

- カスタム例外クラスを `app/core/exceptions.py` に定義
- HTTPExceptionは直接raiseせず、カスタム例外をハンドラーで変換
- バリデーションエラーは422、ビジネスロジックエラーは400系で返す

## テスト

- pytest + pytest-asyncio
- DB依存テストは testcontainers を使用
- fixtures は `tests/conftest.py` に集約
- カバレッジ目標: 80%以上

関連ガイド

検索

ガイドやテンプレートを検索...