🔍
Pydantic内部 — 型ヒントがランタイム検証になる過程
__annotations__ → Rustコア(pydantic-core)→ 検証実行
クラス定義時点で検証ロジックが作られる。
V2の核心 — pydantic-core
Pydantic v2の検証ロジックはPythonではなくRust(pydantic-core)で実装。v1比5〜50倍速い。
フロー:クラス定義→ModelMetaclass.__new__()→__annotations__読み取り→型別にcore_schema生成→SchemaValidator(Rustオブジェクト)生成→クラスに保存→User(...)でSchemaValidator.validate_python(data)をRustで実行。
自動変換(coercion)
User(name='Kim', age='25') — ageはstrだがintに自動変換。age='abc'→ValidationError。
FastAPIでの役割
FastAPIはエンドポイント引数型がPydanticモデルならリクエストbodyを自動パース/検証。型ヒント1行が入力検証+ドキュメント化+シリアライズを全て解決。
キーポイント
1
class User(BaseModel):定義時にModelMetaclassが__annotations__を読む
2
各フィールド型に合ったcore_schemaを生成(Rustレベル)
3
User(...)呼び出し時SchemaValidator.validate_python()でRustで検証
4
検証失敗時ValidationError — どのフィールドがなぜ間違ったか詳細情報
ユースケース
APIリクエスト検証 — FastAPI + Pydanticで自動入力検証
設定ファイルパース — BaseSettingsで環境変数/.env自動ロード+型検証