Navigation

Pydantic v2 でデータバリデーションとシリアライゼーション

📅 7月 8, 2025
👤
1 min read

Pydantic v2 でデータバリデーションとシリアライゼーション

概要

Pydanticは、Pythonのデータバリデーションおよびシリアライゼーションのためのライブラリであり、データモデルの型ヒントを使用してデータの検証や変換を行うことができます。Pydantic v2では、Python 3.6以降に対応しており、データの構造化と整合性を保つために非常に便利です。この記事では、Pydantic v2の使用方法とその重要性について解説します。

用途と重要性

Pydanticを使用することで、入力データのバリデーションやデータモデルのシリアライゼーションを簡単に行うことができます。これにより、データの整合性を維持しながら、効率的にデータを扱うことが可能となります。

解決する問題や課題

従来、Pythonでデータバリデーションやシリアライゼーションを行う際には、手動で型チェックや変換を行う必要がありました。Pydanticを使用することで、この手間を省くことができ、コードの保守性や可読性を向上させることができます。

前提知識・必要ライブラリ

  • Pythonの基本的な知識
  • Pydanticライブラリ
  • typingモジュール

環境構築


pip install pydantic

実装コード


from pydantic import BaseModel
from typing import List

class User(BaseModel):
    id: int
    name: str

# データのバリデーション
data = {"id": 1, "name": "Alice"}
user = User(**data)
print(user)

# データのシリアライズ
user_data = user.dict()
print(user_data)

使用例


# 実際の使用例
data_list = [{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]
users = [User(**data) for data in data_list]
print(users)

テストコード


import pytest
from pydantic import ValidationError

def test_user_model():
    with pytest.raises(ValidationError):
        User(id=1, name="Alice", age=30)  # 'age' フィールドが存在しないためエラー

def test_data_validation():
    data = {"id": 1, "name": "Alice", "age": 30}  # 'age' フィールドを含む場合
    with pytest.raises(ValidationError):
        User(**data)  # 'age' フィールドが存在しないためエラー

応用・カスタマイズ

Pydanticを使用する際には、デフォルトのバリデーションルールのカスタマイズや、パフォーマンスの最適化などが可能です。さらに、エラーハンドリングや外部データソースとの連携など、より高度な使用方法も検討することができます。

関連技術

  • FastAPI:Pydanticとの組み合わせでAPI開発を行う際に便利
  • Marshmallow:データのバリデーションやシリアライゼーションを行うライブラリ
  • Pydanticドキュメント:https://pydantic-docs.helpmanual.io/

この記事では、Pydantic v2を使用したデータバリデーションとシリアライゼーションの基本的な使い方について解説しました。Pydanticを活用することで、Pythonプロジェクトにおけるデータ処理の効率性と信頼性を向上させることができます。

← Back to Python