【完全理解】FastAPIはPythonの型ヒントをどう活用している?

☁️ はじめに
FastAPIの特徴のひとつは、
「Pythonの型ヒントを最大限に活用している」 という点です。
型ヒントは、もともとコードの読みやすさや補完を助ける“注釈”のようなものですが、
FastAPIではそれをアプリケーションの動作・設計そのものに利用しています。
この記事では、
- 型ヒントとは何か
- FastAPIがどう活かしているか
- そして型チェックが自動で行われる仕組み
を、初学者でも理解できるように解説します。
では、本題に入ります!
💡そもそも「型ヒント」とは?
Pythonは 「動的型付け言語」 です。
つまり、変数や関数の型を明示しなくても動くのが特徴です。
def add(a, b):
return a + b
print(add(1, 2)) # → 3
print(add("A", "B")) # → "AB"
この柔軟さの一方で、「この関数はどんな型の値を扱うか?」が曖昧になりがちです。
ここで登場するのが、 「型ヒント」。
型ヒントとは、変数や関数がどんな型(str, int など)を扱うのかを明示するための仕組みです。
def add(a: int, b: int) -> int:
return a + b
このように書くと、
- a と b は 整数型(int)
- 戻り値 も 整数型(int)
ということを示しています。
注意点として、型ヒントはあくまで「ヒント」なので、実行時に型チェックはされません。
型チェックは、静的解析ツールやIDEで行うことができます。
🧩 よく使う型ヒント例
ここで、型ヒント例をいくつか紹介しておきます。
・整数型
# 引数: 整数型
# 戻り値: 文字列型
def add(num1: int, num2: int) -> str:
return str(num1 + num2)
・文字列型
# 引数: 文字列型
# 戻り値: 文字列型
def greet(name: str) -> str:
return f"おはよう!{name}!"
・浮動小数点型
# 引数: 浮動小数点型
# 戻り値: 浮動小数点型
def divide(dividend: float, divisor: float) -> float:
return dividend / divisor
・リスト
# 引数: リスト「文字列型」
# 戻り値: なし
def process_items(items: list[str]) -> None:
for item in items:
print(item)
・辞書
# 引数: リスト「文字列型」
# 戻り値: 辞書「文字列型、整数型」
def count_characters(word_list: list[str]) -> dict[str, int]:
# 変数に型ヒント
count_map: dict[str, int] = {}
for word in word_list:
# キー: 文字列
# 値: 文字列に対応する文字数
count_map[word] = len(word)
return count_map
⚙️ FastAPIは型ヒントをどう有効活用している?
本題ですね。
FastAPIでは、この「型ヒント」をAPIのリクエスト・レスポンスの定義に活用しています。
つまり、型ヒントがそのままAPIの仕様書やバリデーションのルールになるのです。
from fastapi import FastAPI
app = FastAPI()
@app.get("/hello")
def greet(name: str, age: int):
return {"message": f"Hello {name}, you are {age} years old!"}
ここで name: str と age: int と書くだけで、FastAPIは以下を自動的に行います。
- リクエストの型チェックを自動化
- OpenAPI仕様書を自動生成
- Swagger UIを自動で構築
🔍 リクエストの型チェックが自動化されるとは?
たとえば、上記APIに次のようなリクエストを送るとします。
✅ 正しい例
GET /hello?name=Alice&age=20
→ これはOK。{"message": "Hello Alice, you are 20 years old!"} が返ります。
❌ 間違った例
GET /hello?name=Alice&age=twenty
この場合、age に文字列 "twenty" が送られています。
FastAPIは内部で型ヒントをもとに、
「age は int 型であるべき」と判断し、リクエストを検証します。
つまり、型ヒントを書く=FastAPIがバリデーションを自動でしてくれる ということです!
📘 OpenAPIとSwagger UIについて
FastAPIは型ヒントをもとにAPIドキュメントを自動生成します。
ただしこの仕組み(OpenAPIとSwagger UI)については、
別の記事で詳しく解説します。
✅まとめ
FastAPIでの、型ヒントは""ただの注釈""ではなく、APIのルールそのもの。
FastAPIは、型ヒントを最大限に活用して、コードの信頼性と可読性を向上させています。
- 型ヒントとは: 変数や関数の型を明示するためのPythonの標準の仕組み。(FastAPIの独自の機能ではない)
- FastAPIがどう活かしているか: 型ヒントをもとにAPIの動作・検証・ドキュメント生成を自動化
- 型チェックの自動化とは: リクエストを受け取った時点で、型に沿ってFastAPIが自動でバリデーションする
Discussion