Re:ゼロから始める文系プログラマ

未経験がプログラミングを通して人生を変える

PythonのWEBフレームワーク「FastAPI」を初心者向けに簡単に解説


スポンサードリンク
 

f:id:ShotaNukumizu_1000:20210924094721p:plain

おはようございます。Shotaです。

「FastAPIって何?」

「FastAPIは具体的にどのような場面で使われているかわからない....」

本記事にたどり着いた人の中には、このような疑問や悩みを感じている人が少なくないと思います。

そこで、今回はPythonのWEBフレームワークの一つであるFAST APIについて詳細に解説していきます。



FastAPIとは

f:id:ShotaNukumizu_1000:20211129152933p:plain

FastAPIはFlaskやDjangoと同じように、PythonのWebフレームワークの一つです。

学習コストが低く、Pythonで書かれているので少ないコード量で様々な機能を実装できるのが最大の強みです。

FastAPIは、Pythonを使った機械学習サービスの提供のためによく利用されることがたくさんあります。機械学習の処理は、比較的時間や負荷のかかる処理が多いので、非同期処理による高速性を活かせるでしょう。

FastAPIは処理が高速で、GoやNode.jsに匹敵するパフォーマンスを発揮できるので大規模なサービスに十分耐えられるWeb APIを作成できます。


FastAPIとFlaskの比較

Flaskは2010年から開発されている、Pythonで作られた軽量のWEBフレームワークです。FastAPIはFlaskの影響を受けて開発されています。

Flaskも簡単にAPIを実装する上では非常に便利なフレームワークです。しかし、FastAPIはFlaskよりも高速で動作するAPIを開発できますので、Flaskにはない特徴を持っています。

両方とも軽量で学習コストが低いですが、高速なAPIを開発したいならFastAPIを利用したほうがいいでしょう。しかし、FastAPIはFlaskに比べて日本語の情報量が少ないのが欠点ですので、わからないことやエラーがある際に解決できないことがあるでしょう。


環境構築

まずは以下のコマンドを入力してください。

pip install fastapi uvicorn

VSCodeがインストールされていれば環境構築はこれで終了です。

環境構築がコマンド一つで済むのはFastAPIの魅力の一つですね。


Hello world」の表示

環境構築が終了したら、次にmain.pyを作成し、以下のコードを作成してください。

from fastapi import FastAPI

app = FastAPI()

@app.get('/')
def read_root():
    return {'Hello': 'World'}

@app.get('/items/{item_id}')
def read_item(item_id: int, q: str = None):
    return {'item_id': item_id, 'q': q}

これを作成したら、あとは以下のコマンドを入力するだけです。

uvicorn main:app --reload

これを実行し、以下の画面が表示されたら成功です。

INFO:     Will watch for changes in these directories: ['PATH']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [16180] using statreload
INFO:     Started server process [4420]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

http://127.0.0.1:8000/docsにアクセスすると、自動対話型のAPIドキュメントを呼び出せます。

これで簡単にAPIを作成できるのです。たった10行で簡単なアプリを実装できるのがすごいですよね。


まとめ

今回はPythonのWEBフレームワークの一つ「FastAPI」について簡単に解説してみました。

今回の記事をきっかけに、FastAPIについて興味を持ってくれたら幸いです。

今回の記事はこれで終了です。

【参考サイト】

zenn.dev

outputable.com

fastapi.tiangolo.com