Yuhan.jp

FastAPI入門1

2025年10月14日(火)

FastAPI 公式の入門とチュートリアルをやります。

https://fastapi.tiangolo.com/ja/learn/

Python は、簡単な自動化向けのコードしか書いたことがなく、FastAPI は触ったことがありません。

以下は、アウトプット用の学習メモで、コードは上記リンク先のこちらから引用したものです。

型ヒント

型ヒント = Python において、変数の型を宣言することができる構文。(Python 3.6 以降でサポート)

↓のように利用する。(first_name: str が型ヒント部分)

def get_full_name(first_name: str, last_name: str):
    full_name = first_name.title() + " " + last_name.title()
    return full_name


print(get_full_name("john", "doe"))

型の宣言

Python の標準的な型すべてが利用可能。(int, float, bool, bytes など)

ジェネリック型

dict、list、set、tuple のような他の値を含むことができるような型を宣言するには、typing を使用する。

from typing import List


def process_items(items: List[str]):
    for item in items:
        print(item)

上の例だと、List[str] の str のような内部の型を「型パラメータ」と呼ぶ。

Tuple や Set も同様に、typing を利用して行う。

from typing import Set, Tuple


def process_items(items_t: Tuple[int, int, str], items_s: Set[bytes]):
    return items_t, items_s

Dict では、カンマ区切りで2つの型パラメータを渡す。

以下の例だと、dict のキーは str 型、値は float 型となる。

from typing import Dict


def process_items(prices: Dict[str, float]):
    for item_name, item_price in prices.items():
        print(item_name)
        print(item_price)

オプションとして、 Optional を使用することで、None を許容する型を宣言できる。

from typing import Optional


def say_hi(name: Optional[str] = None):
    if name is not None:
        print(f"Hey {name}!")
    else:
        print("Hello World")

List、Tuple、Set、Dict、Optional などのように、角括弧で型パラメータを取る型を「ジェネリック型」または「ジェネリクス」と呼ぶ。

型としてのクラス

変数の型としてクラスを宣言できる。

class Person:
    def __init__(self, name: str):
        self.name = name


def get_person_name(one_person: Person):
    return one_person.name

Pydantic

Pydantic とは、データ検証を行うための Python ライブラリ。

FastAPI は、すべて Pydantic をベースにしている。

Pydantic については、以下の Qiita の記事がわかりやすい。

Pydantic入門 – Pythonでシンプルかつ強力なバリデーションを始めよう

FastAPIにおける型ヒント

FastAPI で型ヒントを使って型宣言を行うと、以下を行う。

  • 要件の定義
  • データの変換
  • データの検証
  • OpenAPIを使用したAPI

なんとなく何をしてくれそうなのか言わんとすることはわかるけど、ちょっと使ってみないとピンとこないかも。

まとめ

Python を忌避していたこともあり、復習も兼ねてめちゃくちゃ基礎的なところだけになってしまいましたが、一旦、次からは実際にFastAPIを使って何か作ろうかなと思います。

その前に、AWSの資格再認定試験がもうすぐだから、それ関連で何かしら書くかも。(多分、書かない)

技術系の記事も、こんな感じで緩く書いていきます。