WSLでFastAPIをちゃちゃっと構築して体感する🐤
はじめに
みなさん、こんにちは!🐤 フリーランス社会人学生(心理学)のたつのぶです!!
本記事では、「FastAPIをWSL(Ubuntu 20.04.6 LTS)」 にちゃっちゃと構築する方法を記述しています。
FastAPIは、Pythonで簡単にAPIを作れる便利なフレームワークですが、「環境構築が難しそう…」と感じる方もいるかもしれません。
この記事を読めば、WSL環境でFastAPIをスムーズに動かせるようになります。
さっそく、手順を見ていきましょう!
python製WEBフレームワークFastAPIの特徴✋
高速
StarletteとPydanticを使用しており、非常に高速(FlaskやDjangoよりもパフォーマンスが良い)。
自動ドキュメント生成
OpenAPI(Swagger)とReDocのドキュメントを自動生成。
型ヒント(型アノテーション)
Pythonの型ヒントを活用し、データのバリデーションを自動化。
非同期処理(async/await)に対応
非同期(async)に対応しており、高速なAPIが作れる。
flaskとfastAPIの比較
比較項目 | FastAPI | Flask |
---|---|---|
速度 | 高速(Starlette + Pydanticで最適化) | 比較的遅め(同期処理ベース) |
非同期処理 | 対応(async/await) | 非対応(拡張で可能だが標準ではなし) |
型ヒントの活用 | あり(Pydanticによるバリデーション) | なし(手動でバリデーションが必要) |
自動ドキュメント生成 | あり(Swagger, ReDoc) | なし(拡張が必要) |
学習コスト | 中(型ヒントに慣れが必要) | 低(シンプルで理解しやすい) |
エコシステム・拡張性 | 比較的新しい(周辺ライブラリは増加中) | 豊富な拡張機能(長い歴史がある) |
用途 | 高速API、マイクロサービス向け | 小規模アプリ、シンプルなAPI向け |
WSL(Ubuntu 20.04.6 LTS)でFastAPIの環境を構築
- WSLの導入
今回の記事では省略します。別記事等を参照ください。 - WSLの更新
まず、WSLのUbuntuを最新の状態に更新します。
sudo apt update && sudo apt upgrade -y
- Pythonのインストール
Ubuntu 20.04にはPython 3が標準でインストールされていますが、念のため確認しましょう。
python3 --version
もしインストールされていなければ、以下のコマンドでPythonをインストールします。
sudo apt install python3 python3-pip python3-venv -y
- 仮想環境の作成
FastAPIのプロジェクト用に仮想環境を作成します。
mkdir fastapi_project
cd fastapi_project
python3 -m venv venv
仮想環境を有効化:
source venv/bin/activate
※有効化されると、プロンプトの先頭に (venv) が付きます。
- FastAPIのインストール
仮想環境内にFastAPIとASGIサーバーの uvicorn をインストールします。
pip install fastapi uvicorn
- サンプルAPIの作成
main.py というファイルを作成し、以下のコードを記述します。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def test_endpoint():
return {"message": "Hello, FastAPI from WSL!"}
- APIの起動
以下のコマンドでFastAPIを起動します。
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
- Windowsのブラウザからアクセス
Windowsのブラウザで localhost:8000 にアクセスすると、{"message": "Hello, FastAPI from WSL!"} が表示されるはずです。
また、FastAPIの自動ドキュメントも確認できます。
✔ Swagger UI
http://localhost:8000/docs
さいごに☺
今回は、WSL(Ubuntu 20.04.6 LTS)上でFastAPIをセットアップし、実際にAPIを動かすところまでを解説しました。🚀
FastAPIは高速かつ簡単にAPIを作成できるので、ぜひ活用してみてください!
ゴロゴロシステムズでは、「労務・人事・業務・メンタルヘルス課題のDXを通じて、こころの労働負荷を削減」 をモットーに活動しています。
今後も技術情報を発信していくので、良かったらチェックしてくださいな🐤
Discussion