pydantic
Pydanticを活用し、API入力の検証、JSONや環境設定の解析、Pythonでのデータモデル定義、オブジェクトのシリアライズ、型ヒントによるデータ検証などを効率的に行うSkill。
📜 元の英語説明(参考)
Validate and serialize data with Pydantic. Use when a user asks to validate API inputs, parse JSON/env config, define data models in Python, serialize objects, or implement data validation with type hints.
🇯🇵 日本人クリエイター向け解説
Pydanticを活用し、API入力の検証、JSONや環境設定の解析、Pythonでのデータモデル定義、オブジェクトのシリアライズ、型ヒントによるデータ検証などを効率的に行うSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o pydantic.zip https://jpskill.com/download/15305.zip && unzip -o pydantic.zip && rm pydantic.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/15305.zip -OutFile "$d\pydantic.zip"; Expand-Archive "$d\pydantic.zip" -DestinationPath $d -Force; ri "$d\pydantic.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
pydantic.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
pydanticフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Pydantic
概要
Pydantic は、Python の型ヒントを使用するデータ検証ライブラリです。モデルクラスを定義すると、Pydantic は入力を検証し、型を強制変換し、出力を自動的にシリアライズします。FastAPI、LangChain、およびほとんどの最新の Python フレームワークで使用されています。
手順
ステップ 1: 基本的なモデル
# schemas.py — 検証付きのデータモデル
from pydantic import BaseModel, Field, EmailStr, field_validator
from datetime import datetime
class UserCreate(BaseModel):
name: str = Field(min_length=2, max_length=100)
email: EmailStr
age: int = Field(ge=13, le=120)
role: str = Field(default="member", pattern="^(admin|member|viewer)$")
class UserResponse(BaseModel):
id: str
name: str
email: str
role: str
created_at: datetime
model_config = {"from_attributes": True} # ORM オブジェクトで動作します
# 使用例
user = UserCreate(name="Alice", email="alice@example.com", age=28)
print(user.model_dump()) # {"name": "Alice", "email": "alice@example.com", ...}
print(user.model_dump_json()) # JSON 文字列
# 検証エラー
try:
UserCreate(name="A", email="not-an-email", age=5)
except ValidationError as e:
print(e.errors())
# [{"type": "string_too_short", "loc": ["name"], ...}, ...]
ステップ 2: カスタムバリデーター
from pydantic import BaseModel, field_validator, model_validator
class ProjectCreate(BaseModel):
name: str
slug: str
start_date: datetime
end_date: datetime | None = None
@field_validator("slug")
@classmethod
def validate_slug(cls, v: str) -> str:
if not v.replace("-", "").isalnum():
raise ValueError("Slug must contain only letters, numbers, and hyphens")
return v.lower()
@model_validator(mode="after")
def validate_dates(self):
if self.end_date and self.end_date <= self.start_date:
raise ValueError("End date must be after start date")
return self
ステップ 3: 環境からの設定
# config.py — 環境変数からのアプリ設定
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
database_url: str
redis_url: str = "redis://localhost:6379"
secret_key: str
debug: bool = False
allowed_origins: list[str] = ["http://localhost:3000"]
max_upload_mb: int = 10
model_config = {
"env_file": ".env",
"env_file_encoding": "utf-8",
}
settings = Settings() # .env および環境変数から自動的に読み取ります
ステップ 4: 判別されたユニオン
# events.py — ポリモーフィックなイベント型
from pydantic import BaseModel
from typing import Literal
class TaskCreated(BaseModel):
type: Literal["task.created"] = "task.created"
task_id: str
project_id: str
title: str
class TaskCompleted(BaseModel):
type: Literal["task.completed"] = "task.completed"
task_id: str
completed_by: str
duration_hours: float
class CommentAdded(BaseModel):
type: Literal["comment.added"] = "comment.added"
comment_id: str
task_id: str
body: str
# 判別されたユニオン — Pydantic は "type" フィールドに基づいて適切な型を選択します
WebhookEvent = TaskCreated | TaskCompleted | CommentAdded
# 任意のイベントを解析します
event = WebhookEvent.model_validate({"type": "task.completed", "task_id": "123", ...})
# TaskCompleted インスタンスを返します
ガイドライン
- Pydantic v2 は v1 よりも 5〜50 倍高速です — Rust (pydantic-core) で書き直されました。
- 制約には
Field(...)を使用します:min_length、max_length、ge、le、pattern。 from_attributes = Trueは、ORM オブジェクト (SQLAlchemy、Django) の直接シリアライズを有効にします。- 環境変数からの型安全な構成には
pydantic-settingsを使用します。 - 判別されたユニオンはポリモーフィックデータを処理します — Pydantic はフィールド値に基づいて適切なモデルを選択します。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Pydantic
Overview
Pydantic is a data validation library that uses Python type hints. Define a model class, and Pydantic validates inputs, coerces types, and serializes outputs automatically. Used by FastAPI, LangChain, and most modern Python frameworks.
Instructions
Step 1: Basic Models
# schemas.py — Data models with validation
from pydantic import BaseModel, Field, EmailStr, field_validator
from datetime import datetime
class UserCreate(BaseModel):
name: str = Field(min_length=2, max_length=100)
email: EmailStr
age: int = Field(ge=13, le=120)
role: str = Field(default="member", pattern="^(admin|member|viewer)$")
class UserResponse(BaseModel):
id: str
name: str
email: str
role: str
created_at: datetime
model_config = {"from_attributes": True} # works with ORM objects
# Usage
user = UserCreate(name="Alice", email="alice@example.com", age=28)
print(user.model_dump()) # {"name": "Alice", "email": "alice@example.com", ...}
print(user.model_dump_json()) # JSON string
# Validation error
try:
UserCreate(name="A", email="not-an-email", age=5)
except ValidationError as e:
print(e.errors())
# [{"type": "string_too_short", "loc": ["name"], ...}, ...]
Step 2: Custom Validators
from pydantic import BaseModel, field_validator, model_validator
class ProjectCreate(BaseModel):
name: str
slug: str
start_date: datetime
end_date: datetime | None = None
@field_validator("slug")
@classmethod
def validate_slug(cls, v: str) -> str:
if not v.replace("-", "").isalnum():
raise ValueError("Slug must contain only letters, numbers, and hyphens")
return v.lower()
@model_validator(mode="after")
def validate_dates(self):
if self.end_date and self.end_date <= self.start_date:
raise ValueError("End date must be after start date")
return self
Step 3: Settings from Environment
# config.py — App configuration from env vars
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
database_url: str
redis_url: str = "redis://localhost:6379"
secret_key: str
debug: bool = False
allowed_origins: list[str] = ["http://localhost:3000"]
max_upload_mb: int = 10
model_config = {
"env_file": ".env",
"env_file_encoding": "utf-8",
}
settings = Settings() # auto-reads from .env and environment variables
Step 4: Discriminated Unions
# events.py — Polymorphic event types
from pydantic import BaseModel
from typing import Literal
class TaskCreated(BaseModel):
type: Literal["task.created"] = "task.created"
task_id: str
project_id: str
title: str
class TaskCompleted(BaseModel):
type: Literal["task.completed"] = "task.completed"
task_id: str
completed_by: str
duration_hours: float
class CommentAdded(BaseModel):
type: Literal["comment.added"] = "comment.added"
comment_id: str
task_id: str
body: str
# Discriminated union — Pydantic picks the right type based on "type" field
WebhookEvent = TaskCreated | TaskCompleted | CommentAdded
# Parse any event
event = WebhookEvent.model_validate({"type": "task.completed", "task_id": "123", ...})
# Returns TaskCompleted instance
Guidelines
- Pydantic v2 is 5-50x faster than v1 — rewritten in Rust (pydantic-core).
- Use
Field(...)for constraints:min_length,max_length,ge,le,pattern. from_attributes = Trueenables direct serialization of ORM objects (SQLAlchemy, Django).- Use
pydantic-settingsfor type-safe configuration from environment variables. - Discriminated unions handle polymorphic data — Pydantic picks the right model based on a field value.