👻

FastAPIをVercelにデプロイする最小構成

2025/03/23に公開

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を使用する

  1. Vercel CLIをインストール
npm i -g vercel
  1. ログインしてデプロイ
vercel login
vercel

プロンプトに従って設定を進めると、デプロイが完了します。

方法2: GitHubリポジトリからデプロイ

  1. Vercelダッシュボードにアクセス
  2. 「New Project」をクリック
  3. GitHubリポジトリをインポート
  4. 設定を確認し、「Deploy」をクリック

デプロイが完了すると、VercelがURLを提供します。そのURLにアクセスして、アプリケーションが正常に動作することを確認しましょう。

デプロイ後の確認

  • https://your-project-name.vercel.app/ にアクセスして基本的な機能を確認
  • https://your-project-name.vercel.app/docs でSwagger UIが表示されるか確認

注意点と制限事項

  1. コールドスタート: サーバーレス環境では、しばらく使われないとコールドスタートが発生します。
  2. 実行時間の制限: Vercelの無料プランでは関数の実行時間に制限があります。
  3. WebSocket非対応: VercelではWebSocketをサポートしていないため、リアルタイム機能の実装には向いていません。

まとめ

FastAPIとVercelの組み合わせは、特に以下のケースで有効です:

  • 個人プロジェクトのAPI
  • プロトタイプの開発と公開
  • 小〜中規模のサービス

シンプルなAPIから複雑なアプリケーションまで、この組み合わせでサーバーレスデプロイを簡単に実現できます。

参考リンク

Discussion