FastAPIとは?PythonのWebフレームワークでWebAPIを開発しよう!

FastAPIとは

FastAPI(読み方:ファストえーぴーあい)とは、Python3.6以降でAPIを構築するためのWebフレームワークです。PythonでWebアプリ開発やAPI開発をする際に利用することになります。Pythonの人気なWebフレームワークにはFlaskやDjangoなどが挙げられますが、近年ではFastAPIが非常に使いやすい事からも注目されています。日本語のドキュメントが充実しているため、公式の日本語ドキュメントを一通り読み込むことである程度使えてしまいます。

https://fastapi.tiangolo.com/ja/

FastAPIの特徴

FastAPIの特徴はいくつか挙げられますが、直感的に理解しやすく、3つに絞るとしたら以下3つを挙げる事が出来ます。 

①公式ドキュメンテーション(日本語)が充実している

②ドキュメントを自動で生成する機能が備わっている

③直感的にコードが書け、簡単に利用できる

FastAPIインストール

pipコマンドでfastapiとuvicornをインストールします。uvicorn(ユーブイアイコーン)とは、ASGI(Asynchronous Server Gateway Interface)と呼ばれるPythonのWebサーバとWebアプリケーションが通信するためのWSGI(Web Server Gateway Interface)の後継のインターフェース定義の事です。今の段階では詳細を理解する必要がありません。気になった方のみ、各々調べてみてください。

pip install fastapi uvicorn

FastAPIのプログラムを作成する

fastapiとuvicornのインストールが終わったら、早速FastAPIのプログラムを作成してみましょう。お使いのエディタを開いて、下記のプログラムを記述し、「main.py」というファイル名で保存してください。

from fastapi import FastAPI
app = FastAPI()

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

1行目ではFastAPIを読み込んでいます。2行目では読み込んだFastAPIのインスタンスを作成しています。ここで作成したappオブジェクトを用いて、get()などのメソッドを呼び出していきます。4行目では@appという記述を用いて、get()メソッドを呼び出しています。@デコレーターと呼ばれ、関数を受け取り、関数を戻り値とする関数のことです。FastAPIやFlaskでは@を記述したプログラムを書きますため、慣れるようにしておくと良いでしょう。5行目・6行目ではhello()を定義しています。関数の先頭に記述されているasyncは、非同期処理を実現するための記述です。非同期処理とは、あるタスクを実行している最中に、実行中のタスクを止める事なく、他の新しいタスクが実行できる処理のことを指します。returnで返却された辞書型はJSON(JavaScript Object Notation)形式で返されます。

FastAPIを起動する

main.py」を保存したら、FastAPIを起動してみましょう。下記のコマンドをターミナル等から実行します。この時、「main.py」が保存されている同じパス(PATH)に移動していることを確認してください。※PATH(パス)とはコンピュータ内で特定のファイル等が存在することを表す文字列のことOSモジュールによるファイルの操作

uvicorn main:app --reload

問題を報告する上記コマンドは、先ほど作成した「main.py」のappを起動するという意味のコマンドになります。 – uvicorn main:appは以下を示します。- mainmain.pyファイル- appmain.py内部で作られるオブジェクトです。(app = FastAPI()のように記述されます)- -reload: コードの変更時にサーバーを再起動させます。(※開発用) その後、Webブラウザに「http://127.0.0.1:8000」と入力すると、以下のような画面になればうまく実行出来ています。

Python・Web開発スキルを効率よく身につけるには

Python・Web開発スキルを効率よく身につけるには質問し放題の環境で学ぶことが大切です。

AI Academy Bootcampなら、6ヶ月35,000円にてチャットで質問し放題の環境で、機械学習やデータ分析が学べるサービスを提供しております。
数十名在籍しているデータサイエンティストや機械学習エンジニアに質問し放題の環境でデータ分析、統計、機械学習、SQL等が学べます。AI人材に必要なスキルを効率よく体系的に身に付けたい方は是非ご検討ください!

オススメ記事