2022年5月25日水曜日

WEBプログラミング言語PythonのFastAPIフレームワークとは?Go言語のGinフレームワーク並みに高速で御座います。高速APIを利用するためのメリットとデメリット

https://shimi-dai.com/what-fastapi-merit-demerit/

FastAPI は、PythonのでAPI を構築するためのモダンで高速(高パフォーマンス)なWebフレームワークです。

DjangoやFlaskよりも格段に高速で、GolangのGinと同等の速度を出すことができます。

またFlaskと同じような書き方のためFlaskを使用している企業や理解できる人は容易に導入することができます。

FastAPIとは?Pythonの高速APIの正体は?

  • FastAPIとはPythonで書かれている比較的新しいWebAPIのフレームワークです。
  • Pythonは遅い!という常識を覆すようにGo言語やNode.jsと言われています。
  • 高速化の要因はStarlette(ASGI Framework)と Pydantic(型のチェックとシリアライズ)です。
  • 書き方はシンプルでFlaskのように書くこと(またはDjangoのファンクションベース)ができます。
  • フロントエンド+APIの方式でWebアプリやネイティブアプリをシンプルな開発が期待できます。

FastAPIのメリット

FastAPIのメリットは以下があります。

・他のPythonのWebフレームワークより高速
・開発が比較的に容易
・型付けを行うためバグが少なく開発可能
・公式ドキュメントに日本語
・APIのdocumente generatorが機能がある

では詳細を紹介していきたいと思います。

他のPythonのWebフレームワークより高速

FastAPIはDjango、Flask、Bottleと比較しても圧倒的に高速です。以下の図では数値が高いほど高速という図になリます。

参考URL:Why did we choose FAST API over Flask and Django for our RESTFUL Micro-services

上の図を見るとFastAPIの速度が速いのがわかります。Pythonは使いやすいです言語ですが遅いと言われます。

開発が比較的に容易

FastAPIはFlaskに似たコーディングができ、シンプルにコーディングできます。Flaskを扱える人は容易に利用することができます。

以下が最もシンプルなAPIの内容です。

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

次にFlaskのWebアプリです。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

対照的にDjangoでのHelloWorldはいくつかものファイルを修正する必要があります。この記事では割愛しますがそれぞれのWebフレームワークでHello World記事は以下になります。

型付けを行うためバグが少なく開発可能

pydanticというバリデーターを使うことで返す時のデータ、データベースにデータ作成、アップデートするときのエラーを少なくすることができます。

公式ドキュメントに日本語

公式ドキュメントに日本語があります。

他のフレームワークを使いたかった時に日本語の説明がなくて難しいと感じたことはあると思います。

FastAPIの日本語マニュアル
FastAPIの日本語マニュアル

APIのdocument generatorが機能がある

FastAPIではデフォルトでAPIのドキュメント自動生成機能のdocument generator機能があります。document generatorは Swagger-UIで提供されており簡単にAPI利用をすることができます。

FastAPのdocument generator
FastAPのdocument generator

FastAPIのデメリット

FastAPIのデメリットは以下があります。

・デフォルトだと機能が少ないのでライブラリを選択する必要がある
・コミュニティーが小さいためナレッジが少ない

では詳細を紹介していきたいと思います。

デフォルトだと機能が少ないのでライブラリを選択する必要がある

FastAPIのとにかく軽量なフレームワークであるためDB接続や認証などの機能は別に容易する必要があります。

ただしDB接続にはSQLAlchemyや認証機能にはpython-joseと公式マニュアルにきちんと記載されておりますので利用することは可能です。

コミュニティーが小さいためナレッジが少ない

FastAPIは2018年にできたばかりのフレームワークなのでコミュニティー規模が小さいことが一番のデメリットです。

ドキュメントやナレッジが少ないことから自身で検証する必要があり、開発に大きく
コミュニティー層が小さいです

FastAPIのまとめ

メリット

・API速度が速い(Django・Flask比較)
・シンプルでソースコード量が少なく開発できる
・APIのオープンスタンダートに基づいてる
・オフィシャルの説明に日本語バージョンがある

デメリット

・Webページの生成はできない
・機能が少なくライブラリを導入する必要がある
・コミュニティーが小さくまだまだナレッジが少ない

0 コメント:

コメントを投稿