👻
FastAPIをVercelにデプロイする最小構成
FastAPIをVercelにデプロイする
FastAPIは高速でモダンなPythonのWebフレームワークであり、APIの構築に最適です。一方、Vercelはサーバーレスデプロイプラットフォームとして知られています。この記事では、FastAPIアプリケーションをVercelにデプロイする方法を詳しく解説します。
このチュートリアルのサンプルコードは GitHub上のリポジトリ で確認できます。
なぜFastAPIとVercelの組み合わせなのか?
- FastAPI: 高速なパフォーマンス、自動ドキュメント生成、型ヒントによる開発体験の向上
- Vercel: 無料枠がある、グローバルCDN、GitHubとの連携が簡単、サーバーレスアーキテクチャ
この組み合わせにより、高性能なAPIを簡単にデプロイし、グローバルに配信することができます。
前提条件
- Python 3.9以上のインストール
- GitとGitHubの基本知識
- Vercelアカウント(無料枠あり)
プロジェクトの構築
1. プロジェクトディレクトリの作成
mkdir fastapi-on-vercel
cd fastapi-on-vercel
2. 仮想環境の作成と依存関係のインストール
python -m venv venv
source venv/bin/activate # Windowsの場合: venv\Scripts\activate
pip install fastapi uvicorn
pip freeze > requirements.txt
3. FastAPIアプリケーションの作成
app.py
ファイルを作成して以下のコードを記述します:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {
"message": "Hello World",
}
@app.get("/test")
async def test():
return {"message": "Test"}
4. ローカルでのテスト
uvicorn app:app --reload
ブラウザで http://localhost:8000 を開き、アプリケーションが正常に動作することを確認します。また、http://localhost:8000/docs にアクセスすると、自動生成されたSwagger UIドキュメントを見ることができます。
Vercelの設定
1. vercel.jsonの作成
プロジェクトのルートディレクトリにvercel.json
ファイルを作成します:
{
"version": 2,
"builds": [
{
"src": "app.py",
"use": "@vercel/python",
"config": {
"runtime": "python3.9",
"pip_install_command": "pip install -r requirements.txt"
}
}
],
"routes": [
{
"src": "/(.*)",
"dest": "app.py"
}
]
}
このファイルは次のことを指定しています:
-
builds
: Vercelが使用するビルドパイプラインを設定-
src
: エントリーポイントファイル -
use
: 使用するVercelのビルダー -
config
: Pythonのバージョンや依存関係のインストール方法
-
-
routes
: すべてのリクエストをapp.py
にルーティング
2. .vercelignoreの作成
不要なファイルをデプロイから除外するために.vercelignore
ファイルを作成します:
.vercel
.gitignore
LICENSE
README.md
venv
__pycache__
3. GitHubリポジトリの作成(オプション)
GitHubとの連携でデプロイする場合は、リポジトリを作成します:
git init
echo "venv/" > .gitignore
echo "__pycache__/" >> .gitignore
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/yourusername/fastapi-on-vercel.git
git push -u origin main
Vercelへのデプロイ
方法1: Vercel CLIを使用する
- Vercel CLIをインストール
npm i -g vercel
- ログインしてデプロイ
vercel login
vercel
プロンプトに従って設定を進めると、デプロイが完了します。
方法2: GitHubリポジトリからデプロイ
- Vercelダッシュボードにアクセス
- 「New Project」をクリック
- GitHubリポジトリをインポート
- 設定を確認し、「Deploy」をクリック
デプロイが完了すると、VercelがURLを提供します。そのURLにアクセスして、アプリケーションが正常に動作することを確認しましょう。
デプロイ後の確認
-
https://your-project-name.vercel.app/
にアクセスして基本的な機能を確認 -
https://your-project-name.vercel.app/docs
でSwagger UIが表示されるか確認
注意点と制限事項
- コールドスタート: サーバーレス環境では、しばらく使われないとコールドスタートが発生します。
- 実行時間の制限: Vercelの無料プランでは関数の実行時間に制限があります。
- WebSocket非対応: VercelではWebSocketをサポートしていないため、リアルタイム機能の実装には向いていません。
まとめ
FastAPIとVercelの組み合わせは、特に以下のケースで有効です:
- 個人プロジェクトのAPI
- プロトタイプの開発と公開
- 小〜中規模のサービス
シンプルなAPIから複雑なアプリケーションまで、この組み合わせでサーバーレスデプロイを簡単に実現できます。
Discussion