はじめに
こんにちは、山本です。業務でFastAPIを使うかも、とのことなので調査しました。Fastという名前から、早く開発ができそうだが、Pythonは動的型付け言語であるため型がわからず、開発がしづらそうというのが第一印象でした。この印象は公式ドキュメントが読むことでよい意味でガラリと変わりました。 本記事では私がFastAPIを調査して学んだことをまとめます。
FastAPIとは
FastAPIはPythonを用いたWebフレームワークで、2018年に初リリースがありました。 コンセプトは高性能で簡単に学べて、早くコードが書けるというものです。
特徴
FastAPIの特徴を3つ挙げます。
ドキュメントの自動生成
FastAPIはOpenAPIに基づいて作られているため、初期設定でSwagger UIというAPIドキュメントが自動生成され利用することができます。このドキュメントは「Try it out」からGetやPostなどで、ブラウザからアプリケーションと通信ができます。デバッグや動作確認にかなり便利です。
型安全
FastAPIはPydanticを使うことでPythonに疑似的に型を付けて型安全に開発ができます。 例えば、下記のFastAPIのコードのUserクラスはidにint型を指定しています。
from fastapi import FastAPI from pydantic import BaseModel class User(BaseModel): id: int #int型を指定 name: str app = FastAPI() @app.get("/user") def read_root(): user: User = User(id=1, name="str") return user
このコードは問題なく実行できます。 指定した型以外の値を入れるとどうなるのか試してみます。 idにstr型を入れるために
user: User = User(id="str", name="str")
と書き換えると、/user
にアクセス時にidはint型でないといけないというエラーが発生します。
pydantic.error_wrappers.ValidationError: 1 validation error for User id value is not a valid integer (type=type_error.integer)
このようにpythonに型を付けることで想定外の型が入力されたときにエラーを発生させることができ、開発時には型を意識して開発できます。 型がわからず、開発がしづらいということはなさそうです。
自動リロード
FastAPIは開発時にコードを変更したときに自動で再起動します。コードを変更するたびに再ビルドボタンを押すという手間が省けます。この機能は他のフレームワークにもありますが、FastAPIには初期設定でこの機能が備わっています。
おわりに
いろいろな特徴を紹介しましたが、私が一番良いと思ったポイントはAPIドキュメントの自動生成が初期設定で備わっている点です。正直、他の特徴は他のフレームワークにも備わっており強みとは言えないと思います。
ただし、Pythonは機械学習のライブラリが豊富にあるため、機械学習を用いたAPIを作成するときはFastAPIは有力な選択肢の一つだと思います。