- PM(候補可)
- WEB開発エンジニア
- プロジェクトマネージャ
- Other occupations (1)
- Development
- Business
“FastAPI備忘録”、モダンで高性能なフレームワークを試してみました。
Photo by Christopher Burns on Unsplash
こんにちは、システムエンジニアの吉森です。
最近FastAPIの学習機会がありましたので、自身の備忘録として、またこれからFastAPIに触れようと考えている方々に向けて、その魅力を共有したいと思います。
チュートリアルを追えば、誰でも簡単にエンドポイントを作れてしまうので、今回は実装方法よりも、FastAPIの良さにフォーカスしたいと思います。(https://fastapi.tiangolo.com/ja/tutorial/)
まずFastAPIとは何か?からみていきたいと思います:
FastAPIについて簡単に説明すると、”型ヒントを駆使してAPIを構築するためのモダンで高性能なWebフレームワークです”、と公式ドキュメントで紹介されています。
- 高速: 非同期処理をサポートするため、非常に高速な性能を実現します。
- 型ヒントの利用: 型を用いることで、パラメータの型検証を自動化します。
- 自動APIドキュメント生成: リアルタイムでAPIドキュメントを自動生成し、ブラウザから直接APIをテストできます。
- 簡潔なコード: コードを書く量が少なく、早い開発を可能にします。
FastAPIは、シンプルながらも必要十分な機能を持ったフレームワークであり、Djangoのような大規模フレームワークの全機能を必要としない場合や、他のバックエンドシステムと分けて開発したい場合に最適です。
自動APIドキュメント生成
特に注目すべき機能の一つが、自動APIドキュメント生成です。
Swagger UIやReDocによるドキュメント自動生成機能は、開発者がAPIを迅速に開発し、メンテナンスする上で非常に有効です。さらに、POSTMANなどを使わずに、UIから直接エンドポイントをテストできる点も大きなメリットです。「Try it out」ボタンをクリックするだけで、APIを実際に試すことができます。たとえば、私が作成した簡単な位置情報取得のエンドポイントでは、実際にJSON形式でデータが返されることをUI上で確認できます。このドキュメントは自動生成されるため、uvicorn main:app --reload
という一行で、手軽にエンドポイントをテストすることが可能です。
- “Try it out”を押す。
- 実際にAPIを試す。
- 以上の画像のように実際にJSONで値が帰ってきているのがわかります。このドキュメントは自動生成されるので、uvicorn main:app --reload の一行で、チャチャっと開発できてしまいます。
型ヒントの利用とバリデーション
また、型ヒントの利用とバリデーションについても触れておきたい点です。Pythonは動的型付け言語であるため、従来は変数の型をあまり意識せずにコーディングされていた方も多いでしょう。しかしFastAPIでは、リクエストやレスポンスにおいて型を定義し、バリデーションを行うことができます。位置情報を取得するAPIの例では、型ヒントにバリデーションを加えることで、入力データを制限し、10文字を超える入力が自動的に拒否されるようになっています。
def geocode(address: str = Query(..., max_length=10)):
このように、型ヒントとバリデーションを組み合わせることで、FastAPIは入力データの精度を高め、エラーの可能性を減少させることができます。この機能は、開発の迅速化だけでなく、アプリケーションの信頼性と安全性の向上にも寄与します。FastAPIを用いることで、型ヒントを利用した明確なコード記述と強力なバリデーション機能を活かし、効率的かつ堅牢なAPIの開発が可能になるのです。
- 出力した位置情報をもとに、Leafletを用いて地図を表示させています。
今回はFastAPIについて、その魅力と私の学習体験を共有させていただきました。FastAPIの高速性、型ヒントの利用、自動APIドキュメント生成、そして簡潔なコードによる迅速な開発が可能な点を紹介しました。特に自動APIドキュメント生成機能は、開発者の生産性を大きく向上させ、APIのテストとメンテナンスを容易にします。また、型ヒントを活用したバリデーション機能により、より安全で信頼性の高いコードを書くことができるようになります。
FastAPIは、そのシンプルさと強力な機能により、多くの開発者に選ばれています。もしまだFastAPIを試していない方がいれば、是非この機会に挑戦してみてください。公式ドキュメントも非常に充実しており、初学者から上級者まで幅広くサポートしています。
最後に、このブログがFastAPIに興味を持つきっかけになれば幸いです。そして、開発の効率化と品質の向上に貢献できることを願っています。ありがとうございました。