🏗️

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で推論リクエストを同時処理