◾️はじめに
Python の Pydantic (パイダンティック) についてメモる
目次
【1】Pydantic 1)インストール 【2】主な特徴と機能 【3】メリット・デメリット 1)メリット 2)デメリット 【4】サンプル
【1】Pydantic
Pythonの型ヒントを利用して以下を行うライブラリ [1] データの検証(バリデーション) [2] 型変換を自動
1)インストール
pip install pydantic
【2】主な特徴と機能
データ検証と自動変換
BaseModelを継承したクラスを定義し、 辞書やJSONデータを流し込むだけで、 指定した型への変換やバリデーションが自動で行う
エラーの集約
バリデーションに失敗した場合、どこが間違っているかを まとめた ValidationError が発生
FastAPI等との連携
Webフレームワークの FastAPI などでリクエストやレスポンスの スキーマ定義として標準的に利用
Pydantic V2
ゼロから書き直されたバージョン2では、 高速なパフォーマンスとV1との後方互換性が提供
【3】メリット・デメリット
* Web開発・新規開発であれば、導入した方が良さそう
1)メリット
パフォーマンスと実装
* 高速な動作(V2はRustで再実装) * 型変換(型強制)が強力('123'を自動で132に変換) * 可読性が高い(Python標準の型ヒント構文をそのまま利用)
エコシステムと信頼性
* FastAPIなどで標準採用(Web開発のデファクトスタンダード) * JSON Schemaの自動生成(OpenAPIドキュメントとの相性が抜群) * IDEの強力なサポート(型補完や静的解析が効く)
機能面
* ネストした構造のバリデーション(複雑なデータ構造も一発で検証) * エラーメッセージが親切(どのフィールドがどう間違っているか詳細に返る)
2)デメリット
学習コスト
* 設定オプションや高度なバリデーションの習得が必要
大規模なバージョン移行
* V1からV2へのアップデートで破壊的変更が多かった
標準ライブラリ(dataclasses)より重い
* 機能が豊富な分、シンプルな用途にはオーバーヘッドがある
【4】サンプル
from pydantic import BaseModel class User(BaseModel): id: int name: str email: str # 文字列の '123' が自動的に int の 123 に変換される data = {"id": "123", "name": "Alice", "email": "alice@example.com"} user = User(**data) print(user.id) # 123 (int型)
関連記事
Python ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2014/08/07/231242