テンプレート一覧に戻る
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%以上