🏗️
FastAPIアーキテクチャ — Starlette + Pydantic + Uvicornの組み合わせ
FastAPIが「速い」と言う理由の実体
FastAPIが速い理由を聞くと大抵「async対応」と答える。正しいが、それは半分だ。
3層構造
Uvicorn — ASGIサーバー。uvloop(libuvベース)+ httptools(Cパーサー)でHTTPをパース。Python純粋実装比2〜3倍速い。「速い」のかなりの部分がこれ。
Starlette — ASGIフレームワーク。ルーティング、ミドルウェア、WebSocket、静的ファイル。FastAPIはStarletteを継承したクラス。FastAPI()はStarlette()のサブクラス。
Pydantic — データ検証。v2からコアがRust(pydantic-core)。JSONパース+検証がC/Rust速度で動く。
FastAPI自体のコードはこの3層を型ヒントで繋ぐ接着剤。@app.getデコレータがStarletteルートを登録しながら、関数シグニチャの型ヒントを読んでPydanticモデルでリクエスト検証を自動生成。
開発速度も「Fast」の一部
型ヒントを書くだけで自動的に:リクエストパース、検証、OpenAPIドキュメント、JSONシリアライズ。手動実装ならコード量3〜5倍。
キーポイント
1
Uvicorn(ASGIサーバー)がHTTPをCレベルでパース
2
Starletteがルーティング/ミドルウェア処理
3
FastAPIが型ヒントを読んでPydantic検証を自動生成
4
レスポンスもPydanticモデル→JSON自動シリアライズ
ユースケース
REST API — 型ヒントだけで自動ドキュメント化+検証
MLモデルサービング — asyncで推論リクエストを同時処理