この記事では、近年注目を集めているPythonのWebフレームワーク「FastAPI」を使って、簡単なAPIアプリケーションを作成し、ローカル環境で動かすまでの手順を分かりやすく解説します。
このシリーズは2部構成となっており、今回はその第1弾です。
- FastAPIアプリを作成してローカル環境で動作させる(今回の記事)
- FastAPIアプリをAWSのECS上でデプロイする
最終的にはクラウド環境で動かすことを目標にしていますが、まずは基本となるローカルでの開発方法をマスターしましょう。
FastAPIは、その名の通り「速さ」が特徴で、直感的かつ効率的にAPIを開発できるため、多くの開発者に支持されています。さあ、一緒にFastAPIの世界へ第一歩を踏み出しましょう!
FastAPIとは?
FastAPIは、Pythonというプログラミング言語で、Web API(ウェブの入り口のような仕組み)を簡単かつ高速に作成できる便利なツールです。
名前のとおり「Fast(速い)」という点が特徴で、開発はスピーディーに進み、動作も軽快です。
Pythonの書き方に合わせて、わかりやすく安全なAPIを作成できることが魅力です。
FastAPIの特徴とメリット
FastAPIには他のフレームワークと比べて際立った特徴がいくつかあります。FastAPIの魅力(初心者にもおすすめの理由)
1. 非同期処理でスムーズに動作する(async/awaitに対応)
FastAPIは、非同期処理(async/await)に対応しています。
これは、多くのユーザーが同時にアクセスしても、処理が重くなりにくく、快適なレスポンスを維持できる仕組みです。特にアクセス数が増えるようなアプリケーションにおいて、大きな効果を発揮します。
2. 自動でAPIドキュメントが生成される
APIを実装すると、Swagger UIやReDocといったツールを使って、インタラクティブなAPIドキュメントが自動で生成されます。
ブラウザ上でエンドポイントを確認したり、ボタン操作だけで動作テストを行ったりできるため、開発効率が大きく向上します。
3. 入力チェック(バリデーション)が簡単にできる
「ユーザー名は文字列で」「年齢は整数で」といった入力のルールを、Pydantic(パイダンティック)というライブラリを使って簡単に定義できます。
入力に問題がある場合も、自動でわかりやすいエラーメッセージを返してくれるため、安全で信頼性の高いAPIを構築できます。
4. 型ヒントを活かしたコードが書ける
Pythonの「型ヒント(Type Hint)」を活用することで、自分自身やチームのメンバーにとって読みやすいコードを書くことができます。
また、エディタによる補完や自動チェック機能も活用できるため、開発中のミスを減らしやすくなります。
FastAPIの主な機能
FastAPIには、Web APIの開発を効率よく、かつ安全に進めるための便利な機能が多数備わっています。
ここでは代表的な機能をわかりやすくご紹介します。
ルーティング(URLごとの処理を定義する)
FastAPIでは、@app.get()
や @app.post()
といったデコレーターを使って、URLに対応する処理(エンドポイント)を簡単に定義できます。
@app.get("/hello")
def say_hello():
return {"message": "Hello!"}
このように、URLのパスやHTTPメソッドに合わせて関数を記述するだけで、APIがすぐに動作するため、初心者でも扱いやすい構造になっています。
依存性注入(共通処理を自動で渡せる)
FastAPIでは「依存性注入(Dependency Injection)」という仕組みを使って、ログイン認証やデータベース接続といった共通の処理を関数に自動で渡すことができます。
たとえば、毎回同じような処理を書く必要がなくなるため、コードの重複を避けられ、保守性が向上します。また、テストも行いやすくなるというメリットがあります。
リクエスト・レスポンスの自動バリデーション
APIにリクエストが送られた際、そのデータが正しいかどうかをFastAPIが自動でチェック(バリデーション)してくれます。これはPydanticという仕組みによって実現されています。
たとえば、送られてきた年齢が数値でなかった場合などは、APIが自動でエラーを返し、正確なレスポンス形式やエラーメッセージをクライアントに返すようになります。
これにより、セキュリティ面や品質面でも安心できるAPIを構築することができます。
OpenAPIとJSON Schemaへの自動対応
FastAPIは、APIの仕様をOpenAPI形式(以前のSwagger)として自動生成することができます。
この仕様は、他のシステムとの連携や自動テスト、APIクライアントの自動生成などに非常に便利です。
また、JSON Schemaへの対応もしており、データ構造が明確になることで、開発の効率や信頼性がさらに高まります。
ミドルウェアやイベントフックによる拡張性
FastAPIは、ミドルウェアという仕組みを使って、アプリケーションの動作を柔軟に拡張することができます。
たとえば以下のような処理が可能です。
- リクエストやレスポンスのログ出力
- CORS(クロスオリジン)設定
- 共通のエラーハンドリング(例外処理)
- アプリ起動時や終了時の初期化処理(イベントフック)
これらを組み合わせることで、本番運用にも対応できる高機能なAPIサーバーを構築できます。
FastAPIを実際に使ってみる
ここからは、実際にFastAPIを作成して使用する際の手順を解説していきます。
ステップ1:プロジェクト用フォルダの作成
まずはじめに、今回のFastAPIプロジェクト専用の作業場所となるフォルダを作成します。
ここでは api-age-app02
という名前のフォルダを作成しましょう。
コンピュータを操作するためのコマンド入力画面(ターミナルやコマンドプロンプトなどと呼ばれます)を開いて、以下のコマンドを実行してください。
mkdir api-age-app02
cd api-age-app02
これで、プロジェクト用のフォルダが準備できました。今後、このフォルダ内で作業を進めていきます。
ステップ2:Python仮想環境の作成(推奨)
FastAPIなどの依存パッケージを隔離して管理するために、仮想環境を作成します。
python3 -m venv venv
source venv/bin/activate
このコマンドを実行すると、ターミナルのプロンプト(入力待ちのカーソル前にある表示)の先頭に (venv)
のような表示が追加されるはずです。
これは、現在仮想環境が有効になっていることを示しています。※ source venv/bin/activate
を実行すると、仮想環境が有効になります(プロンプトが変わります)。
ステップ3:必要パッケージのインストール
仮想環境が有効になったら、いよいよFastAPIと、FastAPIを動かすために必要な「Uvicorn(ユーヴィコーン)」というASGIサーバーをインストールします。
ASGIサーバーとは、FastAPIのような非同期処理に対応したPython Webアプリケーションを動かすためのプログラムのことです。
以下のコマンドを実行してください。
pip install fastapi uvicorn
ここでは、
fastapi
とuvicorn
の2つを一度にインストールしています。
インストールが無事に完了したら、現在インストールされているパッケージのリストを requirements.txt
というファイルに保存しておきましょう。
これは、後で同じ環境を別の場所で再現したり、他の人と共有したりする際に非常に便利です。
以下のコマンドで保存可能です。
pip freeze > requirements.txt
ステップ4:APIファイルを作成
FastAPIを使ったAPIの開発を本格的に始めましょう。
まずはアプリケーションの骨組みとなる フォルダ構成 を確認して、必要なファイルを用意します。
全体のファイル構造は以下のとおりです。
age-api/
├── venv/ # 仮想環境(Pythonパッケージの管理用)
├── main.py # メインのアプリケーションコード
├── requirements.txt # 依存ライブラリ一覧
└── Dockerfile # Docker用の設定ファイル
main.py
まずは、main.py
という名前のPythonファイルを作成しましょう。
touch main.py
次に、エディタで main.py
を開き、以下のコードを貼り付けましょう。
from fastapi import FastAPI
from datetime import date
# FastAPIのインスタンスを作成
app = FastAPI()
# 年齢を計算して返すAPIエンドポイント
@app.get("/age")
def calculate_age(birth_year: int):
current_year = date.today().year
age = current_year - birth_year
return {"age": age}
このコードで、指定された誕生年から現在の年齢を計算して返すAPIを作成できます。
requirements.txt
requirements.txt
ファイルを開き内容を確認します。
requirements.txt
はステップ3で作成済みです。
annotated-types==0.7.0
anyio==4.9.0
click==8.2.0
fastapi==0.115.12
h11==0.16.0
idna==3.10
pydantic==2.11.4
pydantic_core==2.33.2
sniffio==1.3.1
starlette==0.46.2
typing-inspection==0.4.0
typing_extensions==4.13.2
uvicorn==0.34.2
ステップ5:ローカルで動作確認
次に、このAPIがちゃんと動くかどうかを、ローカル環境で確認してみましょう。
まず、ターミナルで次のコマンドを実行して、FastAPIアプリを起動します。
uvicorn main:app --reload
このコマンドは、Uvicornサーバーを起動して、main.py
ファイルの中にある app
という名前のFastAPIアプリケーションを実行するコマンドです。
起動に成功すると、ターミナルに次のようなログが表示されます(一例):
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
この状態で、ブラウザを開き、以下のURLにアクセスしてみましょう:
ここでは、FastAPIが自動で生成したAPIドキュメント(Swagger UI)が表示されます。
/age
エンドポイントをクリックして試すこともできます。たとえば birth_yearに「2000」
と入力すると、計算された年齢がレスポンスとして返されます。

ステップ6:Docker上にアプリをデプロイする
次は、FastAPIアプリを Dockerコンテナ 上で動かせるように準備していきます。
このステップでは、AWS ECSなどの本番環境にデプロイする前の「動く箱」を作るイメージです。
PC上にDockerがインストールされていない場合は、こちらからインストールを実施してください。
下記のコマンドでDockerfileを作成しましょう。
touch Dockerfile
作成したファイルを開き、下記コードを入力します。
# Dockerfile
FROM python:3.11-slim
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /app
RUN apt-get update && apt-get install -y gcc
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]
このファイルは、Pythonベースの環境を構築し、必要なライブラリをインストールした上で、FastAPIアプリをUvicornで起動する設定になっています。
ビルドとローカル確認
以下のコマンドを順に実行して、Dockerコンテナをビルドし、起動します。
docker build -t age-api .
docker run -p 8000:80 age-api
docker build
:プロジェクトのDockerイメージを作成します。docker run
:ローカルのポート8000をコンテナのポート80に接続してアプリを実行します。
最後に、ブラウザで以下のURLにアクセスしてみてください。
http://localhost:8000/docs
画像のように、ローカルと同じくSwagger UIが表示され、APIの動作が確認できれば、Docker環境へのデプロイ成功です。

ステップ7:FastAPIアプリを実際に動かしてみる
ページが表示されたら、「GET /age」という項目を探してください。これが先ほど作成した年齢計算APIのエンドポイントです。
クリックして詳細を開き、「Try it out」ボタンを押すと、パラメータを入力できるようになります。
birth_year
という入力欄に、例えば 2000
(2000年生まれの場合)と入力して、「Execute」ボタンをクリックしてみましょう。

サーバーからの応答(Response)が表示されます。
「Response body」という部分に、以下の画像のようなJSONデータが出力されていれば成功です!

Response bodyに以下の値が出力されているか確認しましょう。 { "age": 25 }
これは、2025年現在、2000年生まれの人は25歳である、という計算結果を示しています。
ぜひ、ご自身の生まれ年を入力して、正しい年齢が返ってくるか試してみてください。
まとめ
今回は、FastAPIを使って簡単なAPIアプリケーションを作成し、ローカル環境で動作させるまでの一連の流れを体験しました。
- プロジェクト用のフォルダを作成し、
- Pythonの仮想環境を準備し、
- FastAPIとUvicornをインストールし、
- 簡単なPythonコードで年齢計算APIを実装し、
- Uvicornサーバーを起動して、
- ブラウザからAPIドキュメント(Swagger UI)にアクセスし、実際にAPIを試す
- Docker上にアプリをデプロイする
というステップを学びました。FastAPIがいかに手軽に、そして強力な開発ツール(自動ドキュメント生成など)と共にAPI開発を始められるか、感じていただけたのではないでしょうか。
さて、次回はいよいよこのFastAPIアプリケーションを、AWSのECS(Elastic Container Service)というサービスを使って、クラウド上にデプロイする方法を解説していきます。
API管理をするうえで重要なステップとなります。ぜひこちらもご覧ください。
コメント