ITEEK株式会社のロゴ

ITEEK

ブログ

Blogs

Pythonの型ヒントについて考える(PyCon JP 2024)

2025-03-28

Pythonの型ヒントについて考える(PyCon JP 2024)

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の型ヒントの可能性と、それを活用するライブラリの内部実装について深く学ぶことができました。


今後のプログラミングに活かしていきたいですね。

お問い合わせ

Contact

案件のご相談やお見積りなど、お気軽にご連絡ください。