FastAPI

Webアプリケーションやモバイルアプリは、サーバとデータをやり取りするために「API」(Application Programming Interface)という仕組みを利用する。FastAPIはそのAPIを効率よく開発するためのツールであり、Pythonのコードを書くだけでAPIエンドポイント(URLと処理の対応)を定義できる。内部的には「Starlette」というWebフレームワークと「Pydantic」というデータ検証ライブラリを組み合わせて構成されている。
FastAPIの処理速度は、従来からよく使われてきた「Django」や「Flask」といったPython製フレームワークと比べて高速であるとされる。これはPython 3.5以降で導入された非同期処理(async/await)を用いた「ASGI」(Asynchronous Server Gateway Interface)というWebサーバ仕様に対応しているためである。複数のリクエストを効率的に処理でき、Node.jsなど他言語やフレームワークに近い性能を発揮するとされる。
コードからAPIの仕様書(ドキュメント)を自動生成する機能も備わっており、エンドポイントの定義と型情報をもとに、OpenAPI(旧Swagger)形式の仕様書が自動的に生成される。Webブラウザ上で動作する対話型のAPIドキュメントが同時に提供される。開発中にエンドポイントの追加や変更を行うと、ドキュメントも即座に更新されるため、仕様管理と実装の整合性を保ちやすい環境が構築される。
「型ヒント」(Type Hints)と呼ばれるPythonの機能を積極的に活用しており、引数や戻り値にデータ型を明示することで、誤ったデータが送られた際に自動で検証(バリデーション)が行われる。これにより、JSONなどで送信されたデータの形式チェックや必須項目の確認を個別に実装する必要が少なくなる。エラー時には検証結果が整形された形式で返されるため、API利用者と開発者の双方にとって挙動を把握しやすい構成となっている。