1
/
5

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

このストーリーが気になったら、遊びに来てみませんか?
業績好調のため増員募集|経験豊富な代表直下で成長できるIT法人営業
ITEEK株式会社では一緒に働く仲間を募集しています
1 いいね!
1 いいね!

同じタグの記事

今週のランキング

上川 諒也さんにいいねを伝えよう
上川 諒也さんや会社があなたに興味を持つかも