実例から学ぶ型ヒントの活用手法
Pythonの型ヒントとは
Pythonは動的型付け言語ですが、型ヒントを使うことで静的型チェックやその他の機能を実現できます。型ヒントの特徴として、以下が挙げられます。
- Python自体は実行時に型ヒントを無視する
- サードパーティのツールやライブラリが型ヒントを活用できる
- 静的型チェック以外にも様々な用途で利用可能
型ヒントを活用するライブラリの実例
Pythonにおける人気の型ヒントを活用するライブラリとして、Pydantic、FastAPI、SQLAlchemyという3つを紹介します。
Pydantic
- データバリデーション
- シリアライゼーション
- JSONスキーマの生成
from enum import StrEnum
from pydantic import BaseModel, PositiveInt
class Kind(StrEnum):
DRINT = "DRINK"
FOOD = "FOOD"
class Item(BaseModel):
item_id: int
name: str
price: PositiveInt
kind: Kind = Kind.DRINK
FastAPI
- APIドキュメントの自動生成(pydanticを活用)
- リクエスト/レスポンスのバリデーションとシリアライゼーション(pydanticを活用)
- Dependency Injectionシステム
from fastapi import FastAPI
from schemas import CreateItemRequest, Item
app = FastAPI()
@app.post("/items")
async def create_item(
data: CreateItemRequest,
) -> Item:
item = {
"item_id": 0,
"name": data.name,
"price": data.price,
"kind": data.kind,
}
return Item.model_validate(item)
SQLAlchemy
- データベース内で使用するデータ型の決定や制約の付与
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
pass
class Item(Base):
__tablename__ = "items"
item_id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str] = mapped_column(index=True, unique=True)
price: Mapped[int | None]
まとめ
Pythonの型ヒントは、可読性向上や静的解析だけでなく、様々な用途で活用できる柔軟な機能です。今回紹介したライブラリの例を見ると、アイデア次第で型ヒントの活用範囲がさらに広がる可能性を感じました。また、複雑に見える実装も、時間をかけて紐解けば誰でも理解し、実装できるものだということも学びました。型ヒントを使いこなすことで、より堅牢で機能的なPythonプログラムを書けるようになりそうです。Pythonの型ヒントの可能性と、それを活用するライブラリの内部実装について深く学ぶことができました。今後のプログラミングに活かしていきたいですね。