スポンサーリンク

【初心者向け】FastAPIの基本の使い方をやさしく解説|最速で始めるPythonのWeb開発

Webアプリ開発
  1. 1. はじめに|FastAPIってなに?なぜ人気なの?
    1. 💡 FastAPIってなに?
    2. 🚀 なぜFastAPIが人気なの?
    3. 🎯 この記事でできるようになること
  2. 2. FastAPIの準備|インストールと開発環境
    1. 🧪 ステップ①:Pythonが使えるか確認しよう
    2. 🧼 ステップ②:仮想環境を作ろう(おすすめ)
      1. Windowsの場合:
      2. macOS/Linuxの場合:
    3. 🚀 ステップ③:FastAPIとuvicornをインストール!
  3. 3. はじめてのFastAPIアプリを作ろう
    1. 📄 ステップ①:Pythonファイルを作ろう
    2. ✏️ ステップ②:FastAPIアプリのコードを書こう
      1. 💡 解説:
    3. 🖥 ステップ③:アプリを起動してみよう!
      1. 💬 コマンドの意味:
    4. 🌐 ステップ④:ブラウザで確認しよう!
    5. ✅ さらにスゴイ!自動ドキュメントを見てみよう
  4. 4. APIのエンドポイントを増やしてみよう
    1. 🧭 エンドポイントってなに?
    2. 🔁 パスパラメータ付きのエンドポイントを作ってみよう
      1. 💡 解説:
    3. 🌐 動かしてみよう!
    4. 📦 クエリパラメータを使う例
      1. 📌 アクセス方法:
    5. ✍ POSTメソッドの使い方も見てみよう!
      1. 例:
    6. ✅ まとめ
  5. 5. Swagger UIでAPIを確認しよう
    1. 📖 Swagger UIってなに?
    2. 🌐 Swagger UIを開いてみよう!
    3. 🔍 「Try it out」でテストしてみよう!
    4. 🧾 ReDocもあるよ!
    5. ✅ まとめ
  6. 6. 実用的な活用例|簡単なToDo APIを作る
    1. 🧾 ToDo APIでやりたいこと
    2. 💻 コード全体(コピペでOK)
    3. 🌐 試してみよう(Swagger UI)
      1. 試し方:
    4. ✅ 補足ポイント
  7. 7. よくあるエラーと対処法
    1. ❌ エラー①:ModuleNotFoundError: No module named 'fastapi'
      1. 🔎 原因:
      2. ✅ 対処法:
    2. ❌ エラー②:AttributeError: module 'main' has no attribute 'app'
      1. 🔎 原因:
      2. ✅ 対処法:
    3. ❌ エラー③:POSTリクエストで422 Unprocessable Entity
      1. 🔎 原因:
      2. ✅ 対処法:
    4. 🛠 それでもうまくいかないときは?
    5. 🧭 あわせて読みたい
  8. よくある質問(Q&A)
    1. 関連投稿:

1. はじめに|FastAPIってなに?なぜ人気なの?

こんにちは!
この記事では、PythonでWebアプリやAPIを作るときにとっても便利な「FastAPI(ファストエーピーアイ)」というフレームワークについて紹介していきます。

💡 FastAPIってなに?

FastAPIは、PythonでWeb APIをすばやく作ることができるフレームワークです。
「フレームワーク」とは、アプリやシステムを作るときに役立つ“土台”や“便利ツール集”のようなものです。

たとえば、以下のようなことが簡単にできます:

  • ブラウザからアクセスしてデータを取得する「API」を作る
  • ユーザーからのリクエストを受け取って返事を返す
  • 入力内容が正しいかを自動でチェックしてくれる
  • 作ったAPIの説明ページ(ドキュメント)も自動でつくってくれる

こういったことが、びっくりするほど少ないコード量でできるのがFastAPIのスゴイところです。


🚀 なぜFastAPIが人気なの?

FastAPIがいま注目されている理由は、主に次の4つです:

  1. とにかく速い!(Fast)
    名前のとおり、FastAPIは処理速度がとても速くて、実はFlaskなどの他のフレームワークよりも高性能だと言われています。
  2. コードが少なくてすむ
    Pythonの「型ヒント」を使って、わかりやすく、ミスの少ないコードが書けます。
    はじめての人でも、あっという間にAPIを作れます。
  3. 自動でドキュメントができる
    作ったAPIは、ブラウザで確認できる「Swagger UI」というページで確認できます。これがまたカッコいい!
  4. 世界中で人気急上昇中
    GoogleやNetflix、Uberなどの大企業も使っていて、信頼性もバッチリ。これからPythonでWeb開発を始めたい人にはぴったりです。

🎯 この記事でできるようになること

この記事では、FastAPIを使って、以下のような基本的な操作を実際に体験してもらいます:

  • FastAPIのインストール
  • はじめてのAPIを作る
  • ブラウザでAPIを確認してみる
  • よくある失敗例とその直し方

Pythonの基本文法がちょっとわかれば、誰でもすぐに試せる内容なので、気軽に読み進めてくださいね!




2. FastAPIの準備|インストールと開発環境

さあ、いよいよFastAPIを使っていく準備をしていきましょう!

Pythonがすでにインストールされている人なら、たった数分でFastAPIを動かせるようになりますよ。まだPythonが入っていない人は、こちらの記事を参考にしてみてください👇
👉 【Python入門1】WindowsでPythonを始めよう!IDLEのインストールと基本の使い方ガイド


🧪 ステップ①:Pythonが使えるか確認しよう

まずは、Pythonがちゃんと使える状態かチェックします。
以下のコマンドをターミナル(またはコマンドプロンプト)で入力してください:

python --version

もしくは、環境によっては:

python3 --version

と表示されるかもしれません。
Python 3.10.13 などのバージョンが表示されればOKです!


🧼 ステップ②:仮想環境を作ろう(おすすめ)

仮想環境とは、Pythonの専用作業スペースのことです。
他のプロジェクトと混ざらないので、トラブルが起きにくくなります!

以下のコマンドで仮想環境を作ってみましょう:

python -m venv venv

次に、仮想環境を有効にします。

Windowsの場合:

venv\Scripts\activate

macOS/Linuxの場合:

source venv/bin/activate

成功すると、ターミナルの左側に (venv) と表示されるようになります!


🚀 ステップ③:FastAPIとuvicornをインストール!

最後に、FastAPI本体と、それを動かすための「uvicorn(ユビコーン)」というツールをインストールします。

pip install fastapi uvicorn

これで準備は完了です!🎉
次のステップでは、いよいよ「はじめてのFastAPIアプリ」を作っていきましょう!




3. はじめてのFastAPIアプリを作ろう

いよいよ、FastAPIを使った「最初のWebアプリ」を作ってみましょう!

このステップでは、たった数行のコードで「こんにちは!」と返してくれる簡単なAPIを作ります。難しい知識はまだ必要ありませんので、気楽にやってみてくださいね😊


📄 ステップ①:Pythonファイルを作ろう

まずは、作業用フォルダ(例:fastapi_app)の中に、以下のようなPythonファイルを作りましょう:

ファイル名:main.py


✏️ ステップ②:FastAPIアプリのコードを書こう

以下のコードを main.py にコピペして保存してください。

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
return {"message": "こんにちは!FastAPIの世界へようこそ!"}

💡 解説:

  • FastAPI() でアプリ本体を作ります
  • @app.get("/") は「ルートURLにアクセスしたら…」という意味
  • return の中にある {} は、返すデータ(JSON形式)

たったこれだけで、1つのAPIが完成しました!


🖥 ステップ③:アプリを起動してみよう!

ターミナルを開いて、main.py がある場所に移動して、次のコマンドを入力します:

uvicorn main:app --reload

💬 コマンドの意味:

  • main:ファイル名(main.py)
  • app:FastAPIインスタンスの変数名(app = FastAPI() の部分)
  • --reload:コードを保存すると自動で再起動してくれるオプション(開発に便利!)

🌐 ステップ④:ブラウザで確認しよう!

ターミナルに以下のような表示が出たら…

Uvicorn running on http://127.0.0.1:8000

そのURL(http://127.0.0.1:8000)を**ブラウザで開いてみてください**。

すると…

{"message":"こんにちは!FastAPIの世界へようこそ!"}

このような文字が表示されるはずです!これがあなたが作ったAPIの“返事”です!


✅ さらにスゴイ!自動ドキュメントを見てみよう

FastAPIには、自動でAPIの説明ページを作ってくれる機能があります。

ブラウザで以下のURLにアクセスしてみましょう:

カッコいい画面が出てきて、あなたのAPIが確認できます。
これがFastAPIの最大の魅力のひとつです!




4. APIのエンドポイントを増やしてみよう

前のステップでは、1つのシンプルなAPI(ルート /)を作りましたね。
ここからは、「APIをもっと便利にする方法」=エンドポイントを増やす方法を解説していきます!


🧭 エンドポイントってなに?

「エンドポイント」とは、かんたんに言うとURLごとの入り口のことです。

たとえば:

  • / にアクセス → 「こんにちは!」と表示
  • /items/1 にアクセス → 「item_id: 1」と表示

こんなふうに、違うURLにアクセスすることで違う処理ができるのがAPIの特徴です。


🔁 パスパラメータ付きのエンドポイントを作ってみよう

新しく、IDを使ったルート /items/{item_id} を作ってみましょう。
コードを main.py に追加してください👇

@app.get("/items/{item_id}")
def read_item(item_id: int):
return {"item_id": item_id}

💡 解説:

  • {item_id} の部分は変数のようなもの。アクセスしたときの数字が item_id に入ります。
  • item_id: int は「この値は整数だよ」と教えてあげる型ヒント。
  • return でその値を返しています。

🌐 動かしてみよう!

FastAPIアプリをまだ起動していない場合は、ターミナルで次のコマンドを実行します:

uvicorn main:app --reload

そのあと、ブラウザでこのURLを開いてみてください:

http://127.0.0.1:8000/items/42

結果はこのようになります:

{"item_id": 42}

ばっちりですね!


📦 クエリパラメータを使う例

次は、URLに「?」をつけて指定するクエリパラメータを使った例です。

以下のように書きます:

@app.get("/users/")
def read_user(name: str = "ゲスト"):
return {"message": f"こんにちは、{name}さん!"}

📌 アクセス方法:

http://127.0.0.1:8000/users/?name=たろう

結果:

{"message":"こんにちは、たろうさん!"}

name を指定しなければ「ゲストさん」になります!


✍ POSTメソッドの使い方も見てみよう!

ここまではすべて「GET」でしたが、次は「POST」メソッド(データを送る)も追加してみましょう。

from pydantic import BaseModel

class Item(BaseModel):
name: str
price: float

@app.post("/items/")
def create_item(item: Item):
return {"message": f"{item.name} を登録しました(価格: {item.price}円)"}

Swagger UI(http://127.0.0.1:8000/docs)から試すことができます!

例:

{
"name": "りんご",
"price": 120.5
}

✅ まとめ

FastAPIでは、たった数行のコードでいろいろなエンドポイントが作れます:

  • /items/1 のような パスパラメータ
  • /users/?name=〜 のような クエリパラメータ
  • POST を使った データ登録API

これらを組み合わせると、本格的なWebサービスも作れてしまうんです✨

次は、FastAPIの魅力である「Swagger UI」やAPIドキュメントの自動生成」について解説していきます!




5. Swagger UIでAPIを確認しよう

FastAPIのすごいところのひとつが、**「自動でAPIの説明ページ(ドキュメント)を作ってくれる機能」**です。

これを使えば、自分で作ったAPIがどんなものなのかをブラウザでかんたんに確認&テストできます!
しかも、専門的な設定は必要ありません。FastAPIなら、最初からこの機能がついています✨


📖 Swagger UIってなに?

Swagger UI(スワッガーユーアイ)とは、APIの仕様(どんなURLがあるのか、どんなデータを送れるのかなど)を見やすく表示してくれるWebページのことです。

FastAPIでアプリを起動すると、自動的にSwagger UIが生成されます!


🌐 Swagger UIを開いてみよう!

ターミナルでFastAPIアプリを起動している状態で、ブラウザから次のURLにアクセスしてみましょう:

http://127.0.0.1:8000/docs

すると、こんな感じの画面が表示されるはずです👇

  • 青い「GET」や「POST」のボタンがある
  • エンドポイント(APIのURL)が一覧で見られる
  • パラメータや戻り値の説明がついている
  • 実際にデータを送信してAPIのテストができる!

🔍 「Try it out」でテストしてみよう!

  1. GET /items/{item_id} をクリック
  2. 「Try it out(試してみる)」を押す
  3. item_id に好きな数字を入力(例:10)
  4. 「Execute」をクリック!

すると、下のほうにレスポンス(APIの返事)が表示されます:

{
"item_id": 10
}

このように、ブラウザ上だけでAPIの動作確認ができるのはとっても便利ですね!


🧾 ReDocもあるよ!

実はもうひとつ、FastAPIは**ReDoc(リードック)**という別の見た目のドキュメントも用意してくれています。

こちらは以下のURLでアクセスできます:

http://127.0.0.1:8000/redoc

Swagger UIよりも読み物としての説明に特化していて、ドキュメントとして整っている印象です。どちらも無料で自動生成されるのがありがたいですね。


✅ まとめ

FastAPIでは、開発者向けの便利なドキュメントが自動で作られます:

  • http://127.0.0.1:8000/docs(Swagger UI):実際に動かして試せる!
  • http://127.0.0.1:8000/redoc(ReDoc):読みやすく整理されたAPI説明ページ

コードを書いたらすぐに見て・試して・直せるので、開発スピードがグッと上がります。




6. 実用的な活用例|簡単なToDo APIを作る

ここまでFastAPIの基本を学んできたみなさん、お疲れさまです!
ここからは**「実際にどんなAPIが作れるのか?」**を体験していきましょう。

今回はシンプルな「ToDoリストAPI」を作ってみます!


🧾 ToDo APIでやりたいこと

このミニアプリでは、以下の3つの機能を作ります:

  1. 📋 現在のToDo一覧を取得(GET)
  2. ➕ 新しいToDoを追加(POST)
  3. ❌ 指定したToDoを削除(DELETE)

まだデータベースは使いません。Pythonのリスト(配列)だけで実現します!


💻 コード全体(コピペでOK)

main.py に、これまでの内容に追加・上書きする形で、以下のコードを入れてください👇

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel

app = FastAPI()

# ToDoアイテムのデータモデル
class ToDoItem(BaseModel):
    title: str

# データを保存するリスト(サーバーの中だけ)
todo_list = []

# 1. ToDo一覧を取得する
@app.get("/todos")
def get_todos():
    return {"todos": todo_list}

# 2. 新しいToDoを追加する
@app.post("/todos")
def add_todo(item: ToDoItem):
    todo_list.append(item)
    return {"message": "追加しました!", "todo": item}

# 3. ToDoを削除する
@app.delete("/todos/{index}")
def delete_todo(index: int):
    if index < 0 or index >= len(todo_list):
        raise HTTPException(status_code=404, detail="その番号のToDoは見つかりません")
    removed = todo_list.pop(index)
    return {"message": "削除しました", "removed": removed}

🌐 試してみよう(Swagger UI)

  1. アプリを起動していない人は以下のコマンドで起動: bashコピーする編集するuvicorn main:app --reload
  2. ブラウザで http://127.0.0.1:8000/docs にアクセス!

試し方:

  • POST /todos:新しいToDoを追加 jsonコピーする編集する{ "title": "ブログ記事を書く" }
  • GET /todos:今のToDo一覧を確認
  • DELETE /todos/{index}:番号を指定して削除(0番目が最初)

✅ 補足ポイント

  • データは「Pythonのリスト(配列)」に保存されます。
  • このデータはサーバーを再起動すると消えます(=データベースは未使用)。
  • 初心者でも「アプリっぽさ」を体験しやすい構成になっています!



7. よくあるエラーと対処法

FastAPIは使いやすいフレームワークですが、最初のうちはちょっとしたミスでエラーが出てしまうこともあります

でも大丈夫!よくあるエラーとその直し方を知っておけば、怖くありません😊
ここでは、初心者がよく出会う3つのエラーとその解決方法を紹介します。


❌ エラー①:ModuleNotFoundError: No module named 'fastapi'

🔎 原因:

FastAPIやuvicornをインストールしていない、もしくは仮想環境を有効にしていない状態です。

✅ 対処法:

以下のコマンドをターミナルで実行して、もう一度インストールしましょう:

pip install fastapi uvicorn

仮想環境を使っている場合は、必ず有効にしてからインストール&実行してくださいね👇

  • Windows: venv\Scripts\activate
  • Mac/Linux: source venv/bin/activate

❌ エラー②:AttributeError: module 'main' has no attribute 'app'

🔎 原因:

FastAPIの起動コマンドで指定している「main:app」のどちらかが間違っていることが多いです。

✅ 対処法:

以下を確認してください:

  • ファイル名は main.py ですか?(uvicorn main:appmain 部分)
  • app = FastAPI() の変数名は app になっていますか?

修正後は、再度以下のコマンドで起動しましょう:

uvicorn main:app --reload

❌ エラー③:POSTリクエストで422 Unprocessable Entity

🔎 原因:

POSTで送ったデータの形式が間違っている場合に出ます。

たとえば、こんなコードがあるとします:

class Item(BaseModel):
name: str
price: float

そのときに、リクエストがこうなっていたらNGです:

{
"name": "ノートパソコン"
}

(← price が抜けている!)

✅ 対処法:

正しく送る必要があります。例えば:

{
"name": "ノートパソコン",
"price": 98000
}

Swagger UIでは「モデルの例」が表示されるので、そちらを参考にすると安心です。


🛠 それでもうまくいかないときは?

  • エラーメッセージをよく読んでみましょう。行番号やヒントが書かれていることがあります。
  • コピペミスがないか確認しましょう(カッコの閉じ忘れ、インデントなど)。
  • わからないときは、エラー名 Python FastAPI でGoogle検索すると多くの事例が出てきます。

ここまで読んでくださってありがとうございます!
FastAPIの基本的な使い方、エンドポイントの作成、Swagger UIの使い方、ToDo APIの作成、そしてエラー対応までバッチリ学べましたね🎉


🧭 あわせて読みたい




よくある質問(Q&A)

Q
FastAPIは完全に無料ですか?
A

はい、オープンソースなので誰でも無料で使えます!

Q
本番環境でもFastAPIを使えますか?
A

もちろんです!大企業もFastAPIを使っています。ただし、本番では uvicorngunicorn を組み合わせるのが一般的です。

Q
FastAPIとFlaskの違いは?
A

Flaskはシンプルで柔軟ですが、FastAPIは型ヒントやドキュメント機能が充実しています。どちらも人気ですが、FastAPIの方が最近のトレンドです。

※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。

※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。

スポンサーリンク