Skip to content

FastAPI開発でのClaude Code活用法

FastAPIはPythonで最も勢いのあるWebフレームワークのひとつです。型ヒントと自動ドキュメント生成が強力ですが、依存注入・非同期処理・Pydanticスキーマ設計など、覚えることも多い。Claude Codeを使えば、ベストプラクティスに沿った実装を対話しながら素早く仕上げられます。

エンドポイントの骨格をまず生成する

Section titled “エンドポイントの骨格をまず生成する”

プロジェクトの要件をそのまま渡すのが一番早いです。

FastAPIでユーザー管理APIを作ります。
- エンドポイント:GET /users, POST /users, GET /users/{id}, PATCH /users/{id}
- DBはSQLAlchemy + PostgreSQL
- 認証はJWT Bearer トークン
- Pydanticでリクエスト/レスポンスのスキーマを分ける
ファイル構成とルーター・スキーマ・モデルのひな形をください。

ClaudeはFastAPIの推奨ディレクトリ構成(routers/, schemas/, models/, dependencies/)を踏まえた上で、各ファイルのひな形を一括生成してくれます。APIRouter の分割や Depends による依存注入の書き方も含まれるため、そのまま開発を始められます。

エンドポイント: APIにアクセスするためのURL。例: `/api/users` や `/api/posts/123` など。トークン: AIがテキストを処理する最小単位。日本語は1文字あたり約1〜2トークン。使用量に応じてAPIコストが変わる。スキーマ: データベースのテーブル構造や型定義のこと。API: Application Programming Interface の略。外部サービスとプログラム間でデータをやりとりするための接続口。JWT: JSON Web Token の略。ユーザー認証情報をJSON形式でエンコードしたトークン。ヘッダーに付けてAPIを呼び出す際に使う。

非同期処理とDBセッション管理を正しく書く

Section titled “非同期処理とDBセッション管理を正しく書く”

FastAPIで詰まりやすいのが非同期SQLAlchemyとセッション管理のパターンです。

async def でSQLAlchemyのクエリを書くとき、セッションをどう渡すか迷っています。
現在のコードを確認して、非同期セッションのDependsパターンで書き直してください。

Claudeは AsyncSessionasync_sessionmakerget_db の依存関数をセットで示し、コネクションプールの設定まで説明してくれます。「なぜ yield を使うのか」も教えてくれるので、理解しながら進められます。

非同期処理: 時間のかかる処理(API呼び出し・ファイル読み込みなど)を待機中でも他の処理を続ける方式。JavaScriptでは `async/await` や `Promise` を使う。

Pydanticバリデーションエラーをデバッグする

Section titled “Pydanticバリデーションエラーをデバッグする”

リクエストボディのバリデーションが通らないとき、422エラーのレスポンスボディをそのままClaudeに渡しましょう。

Terminal window
# テストリクエストを実行してエラーをClaudeに渡す
curl -s -X POST http://localhost:8000/users \
-H "Content-Type: application/json" \
-d '{"email": "invalid", "age": -1}' | claude "このバリデーションエラーを読んで、スキーマの修正案を教えてください"

自動テストコードをまとめて生成する

Section titled “自動テストコードをまとめて生成する”

FastAPIには TestClienthttpx.AsyncClient を使ったテストが書きやすい仕組みがあります。

routers/users.py の各エンドポイントに対してpytestのテストを書いてください。
- 正常系・異常系・境界値を網羅
- DBはSQLiteのインメモリで代替
- フィクスチャでテスト用セッションを注入する

エンドポイントの実装を読み込んだClaudeが、テストケースを網羅的に列挙した上でコードを生成します。conftest.py の書き方からアサーションの粒度まで、Claudeに任せることで初期テストコードをゼロから書く手間を大幅に削減できます。