# Flask vs FastAPI vs Django 技術選定ガイド：どの場面でどれを選ぶか（2026年版・本番運用の判断軸）

> Flask・FastAPI・Django の違いを本番運用の視点で比較する技術選定ガイド。アーキテクチャ思想、同期/非同期、型検証、管理画面、学習曲線、現行版を表で整理し、REST API・高並行IO・管理画面即用・段階移行などシナリオ別に推奨フレームワークを示します。Flask FastAPI Django 違い 比較 選定の決定版。

- 公開日: 2026-06-19
- 著者: 友田 陽大
- タグ: Python, Flask, FastAPI, Django, 技術選定, アーキテクチャ設計, バックエンド
- URL: https://tomodahinata.com/blog/flask-vs-fastapi-vs-django-comparison-guide

## 要点

- 三者は競合ではなく住み分け。Flask=最小核+自分で組む自由、FastAPI=型駆動の検証とasync・自動ドキュメント、Django=ORM/管理画面/認証込みの全部入り
- 同期か非同期かが第一の分岐。高並行のIOバウンド・WebSocketはFastAPI(ASGI)、堅実なCRUDや細かい制御はFlask(WSGI)、Flaskのasyncはワーカー占有のままで素のスループットは上がらない
- 管理画面・認証・ORM・マイグレーションを今すぐ欲しいならDjango。逆にFastAPI/Flaskはそれらを自分で組み立てる（その分だけ薄く・選べる）
- FastAPIは現時点でも0.x系。安定はしているが破壊的変更とバージョン固定の運用規律が要る。Djangoはバージョン体系(LTS)が成熟
- Flask↔FastAPIはmarshmallow/Pydantic/SQLAlchemyを共有でき、ゲートウェイ背後で併存・段階移行が現実的。Flaskのasync需要はQuartという逃げ道もある

---

## **導入：「どれが優れているか」は誤った問い**

「Flask・FastAPI・Django、結局どれを選べばいいのか」——この問いに、**唯一の正解はありません**。三者は同じ「Python の Web フレームワーク」というカテゴリに括られますが、解こうとしている問題が違うからです。優劣ではなく、**「あなたの要件に対して、どれが最小の負債で目的に届くか」** という適合の問題です。

本記事は、その適合を判断するための**意思決定フレームワーク**です。私は、経済産業大臣賞を受賞した B2B SaaS のバックエンドを **Flask / SQLAlchemy / PostgreSQL** で設計・実装して本番運用し（[木材流通DXの事例](/case-studies/lumber-industry-dx)）、別案件では **FastAPI** で API サービスも構築してきました。つまりこの比較は、「両方を本番で動かした人間」の視点です。だからこそ、**Flask を勧めるべきでない場面**も、はっきり書きます。営業トークではなく、技術選定のための道具として読んでください。

> 💡 **この記事で扱うバージョン（2026年6月時点）**：**Flask 3.1 系**（最新安定版 3.1.3、2026-02／最小 Python 3.9）、**FastAPI 0.13x 系**（2026年中盤で 0.138.x 付近、いまだ 1.0 未満／要 Python 3.10+）、**Django 6.0 系**（現行 LTS は 5.2 LTS、延長サポートは 2028年4月まで／次期 LTS は 6.2 LTS が 2027年4月予定）。フレームワークの API・推奨は各公式ドキュメント最新版に基づきます。

---

## **1. 結論を先に：30 秒の TL;DR と全体比較表**

迷ったときの一行指針はこうです。

- **REST/JSON API を、型安全に・高並行で作りたい → FastAPI**
- **管理画面・認証・ORM 込みの「Web アプリ全体」を最短で立てたい → Django**
- **構成を一つひとつ自分で選びたい／小〜中規模を薄く作りたい → Flask**

この直感を、まず一枚の表で全体像にします。以降の各セクションは、この表の各行を掘り下げたものです。

| 観点 | Flask | FastAPI | Django |
|---|---|---|---|
| 思想 | マイクロ（核だけ・自分で組む） | API ファースト（型駆動） | バッテリー同梱（全部入り） |
| 基盤 | WSGI（Werkzeug + Jinja） | ASGI（Starlette + Pydantic） | 独自（WSGI/ASGI 両対応） |
| 同期/非同期 | 同期が基本（async は後付け） | 非同期ネイティブ（`async def`） | 同期が基本（async は部分対応） |
| 型検証 | 内蔵なし（marshmallow / Pydantic を足す） | Pydantic で型ヒント＝検証 | Forms / DRF Serializer |
| 管理画面 | なし（自作 or Flask-Admin） | なし（自作） | **標準で自動生成** |
| ORM | なし（SQLAlchemy 等を足す） | なし（SQLAlchemy 等を足す） | **Django ORM 同梱** |
| マイグレーション | なし（Flask-Migrate/Alembic） | なし（Alembic 等） | **makemigrations 同梱** |
| 認証 | なし（Flask-Login 等） | なし（自作 / ライブラリ） | **認証・権限 同梱** |
| 自動 API ドキュメント | なし | **OpenAPI + Swagger UI 自動** | DRF で別途 |
| 学習曲線 | 低い（核は小さい）／設計は要鍛錬 | 中（型・async の理解が要る） | 中〜高（規約が多い） |
| 代表用途 | 小〜中規模サービス・社内ツール・選定の自由が要る案件 | 高並行 API・マイクロサービス・型契約重視 | コンテンツ/CRUD 中心の Web アプリ全体 |
| 現行版（2026/06） | 3.1.3（安定） | 0.138.x（**0.x 系**） | 6.0／LTS は 5.2 |

> ⚠️ この表を「点数表」として読まないでください。「管理画面なし」は Flask/FastAPI の**欠点ではなく設計判断**です。要らない機能を持たないからこそ薄く速い。逆に管理画面が要件なら、それを「持っている」Django が一歩抜けます。**比較の鍵は機能の多寡ではなく、あなたの要件との一致**です。

---

## **2. Flask：最小核と、設計の自由（とその責任）**

### 2.1 思想：何を載せるかをあなたが決める

Flask は **WSGI マイクロフレームワーク**です。基盤は **Werkzeug（WSGI/HTTP 層）と Jinja（テンプレート）**で、Flask 自身が提供するのは「ルーティング・リクエスト/レスポンス・テンプレート・設定・コンテキスト」という**核だけ**です。ORM もフォーム検証も管理画面も認証も**内蔵しません**。

公式が「micro」と呼ぶのは「機能が貧弱」という意味ではなく、**「何を載せるかをあなたが決める」** という意味です。DB を使うなら Flask-SQLAlchemy、フォーム/CSRF なら Flask-WTF、マイグレーションなら Flask-Migrate、API の入出力検証なら marshmallow——必要なものだけを**拡張として明示的に組み込みます**。

### 2.2 含むもの / 含まないもの

| カテゴリ | Flask の扱い | 典型的な追加 |
|---|---|---|
| ルーティング・リクエスト | 内蔵 | — |
| テンプレート | 内蔵（Jinja） | — |
| ORM | なし | Flask-SQLAlchemy / SQLAlchemy |
| マイグレーション | なし | Flask-Migrate（Alembic ラッパ） |
| フォーム/CSRF | なし | Flask-WTF |
| 入出力バリデーション | なし | marshmallow / Pydantic |
| 管理画面 | なし | Flask-Admin（or 自作） |
| 認証 | なし | Flask-Login / Authlib |

最小形は文字通り数行です。

```python
# hello.py — Flask の「核」だけが見える最小形
from flask import Flask

app = Flask(__name__)


@app.get("/health")
def health():
    return {"status": "ok"}
```

### 2.3 async の話：後付けであり、スループットは上がらない

Flask は **2.0 から `async def` ビューに対応**しています（`pip install flask[async]`）。しかし、ここを誤解すると痛い目に遭います。公式が明確に注意しているとおり、**各リクエストは依然 1 ワーカーを占有し、`async` ビューにしても「同時に捌けるリクエスト数」は変わりません**。Flask の async が効くのは「1 ビュー内で複数の外部 API を並行呼び出しする」ような IO 並行であって、**スループット向上ではありません**。

本格的な async（高並行・WebSocket・ストリーミング）が要件なら、Flask と同 API で ASGI ネイティブな **Quart** を検討する、というのが公式の立場です。つまり、**Flask を選んだ時点で「素の高並行 async は主戦場ではない」**と割り切るのが正しい設計判断です。

### 2.4 型/検証の物語：境界は自分で守る

Flask には型駆動の検証がありません。API の入口（request → 内部）と出口（内部 → response）は、**marshmallow** や **Pydantic** を使って自分で守ります。私が本番で使ってきたのは marshmallow で、`load()` が入力検証、`dump()` がレスポンス整形を担い、`dump_only` / `load_only` でマスアサインメントと機密漏洩を構造として防ぎます。この設計は [marshmallow × Flask × SQLAlchemy で本番 REST API を設計する](/blog/marshmallow-flask-sqlalchemy-rest-api-production-guide) に詳しく書きました。

### 2.5 エコシステムの成熟度

Flask は長寿で、拡張エコシステムは広大です。SQLAlchemy・Alembic・Celery・Authlib など、**Flask に固有でない汎用ライブラリ**がそのまま使えるのが強みです。逆に言えば、「公式の正解セット」が無いため、**選定の良し悪しがチームに委ねられます**。

### 2.6 向いている場面 / 正直な弱点

**向いている**：小〜中規模のサービス、社内ツール、構成を一つひとつ吟味したい案件、既存の SQLAlchemy 資産がある案件、レガシーの段階的リプレース。

**正直な弱点**：

- **構造を自分で設計しなければならない**。アプリケーションファクトリ・Blueprint・設定・コンテキスト・デプロイを設計しないと、小さなアプリがそのまま「グローバル変数と import 順序に支配されたレガシー」へ滑り落ちます。これは Flask の機能不足ではなく**設計責任**の問題で、本番設計の全体像は [Flask 本番運用ガイド（ピラー）](/blog/flask-production-guide)、大規模構成の作り方は [アプリケーションファクトリ・Blueprint 大規模構成ガイド](/blog/flask-application-factory-blueprints-large-app-structure-guide) にまとめています。
- **async は後付け**で、高並行は主戦場ではない（§2.3）。
- **自動 API ドキュメントが無い**。OpenAPI/Swagger が欲しければ別途組み込む。

> 💡 私の経験では、Flask の失敗の大半は「Flask が弱かった」ではなく「**構造設計を省いた**」ことから来ます。逆に、`create_app` と層分離（Router → Schema → Model）を最初から入れた Flask は、FastAPI や Django より薄く・読みやすく・テストしやすいバックエンドになります。Flask は「自由」と引き換えに「設計の責任」を要求するフレームワークです。

---

## **3. FastAPI：型駆動の検証と、async ネイティブ**

### 3.1 思想：標準の型ヒントで、検証・変換・ドキュメントを同時に得る

FastAPI は **標準の Python 型ヒントを基盤に API を作る**モダンなフレームワークです。基盤は **Starlette（ASGI Web 層）と Pydantic（データ検証）**で、**`async def` のパスオペレーション**が一級市民です。最大の差別化点は、**型ヒントを書くだけで、バリデーション・変換・OpenAPI スキーマ生成・対話的ドキュメントが自動で付いてくる**ことです。

```python
# main.py — 型ヒントが、そのまま検証とドキュメントになる
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


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


@app.post("/items")
async def create_item(item: ItemIn) -> ItemIn:
    # item は検証済み。不正な JSON は FastAPI が 422 で弾く
    return item
```

このコードだけで、`/docs`（Swagger UI）と `/redoc`（ReDoc）に**対話的な API ドキュメントが自動生成**されます。これは Flask/Django には無い、FastAPI 固有の即効性です。

### 3.2 async ネイティブ：ここが Flask との決定的な差

FastAPI は **ASGI** の上に立つため、`async def` で書いた IO バウンドの処理を**本当に並行**で捌けます。高並行のネットワーク IO、WebSocket、ストリーミングレスポンスが主戦場です。ただし、ここには Flask とは別種の落とし穴があります——**`async def` の中で同期ブロッキング処理（`await` できない DB ライブラリ等）を呼ぶと、イベントループを止めて API 全体がフリーズします**。`async def` と通常の `def` の使い分けには規律が要ります。この判断基準は、本サイトの [FastAPI 本番運用ガイド](/blog/fastapi-production-async-pydantic-observability-guide) に詳述しました（async の使いどころが FastAPI 最大のレバレッジであり、最大の落とし穴です）。

### 3.3 型/検証の物語：Pydantic が中核

FastAPI の検証は **Pydantic** がすべてです。入力モデルと出力モデルを分け、外部 API の JSON も `model_validate` で即モデル化する——「境界でデータを殺す」設計が、型ヒント一本で書けます。Pydantic v2 のコア検証は Rust で書かれており高速です。Pydantic そのものの設計は [Pydantic v2 本番バリデーション・型安全ガイド](/blog/pydantic-v2-production-validation-type-safety) を参照してください。FastAPI を選ぶ＝ Pydantic を中核に据える、ということです。

### 3.4 含むもの / 含まないもの

| カテゴリ | FastAPI の扱い |
|---|---|
| ルーティング・async | 内蔵（Starlette） |
| 入出力バリデーション | **内蔵（Pydantic 型ヒント）** |
| OpenAPI / Swagger UI / ReDoc | **自動生成** |
| 依存性注入（DI） | **内蔵（`Depends`）** |
| ORM | なし（SQLAlchemy 等を足す） |
| マイグレーション | なし（Alembic 等） |
| 管理画面 | なし |
| 認証 | プリミティブ（OAuth2 等のユーティリティ）あり。実装は自分で |

つまり FastAPI は「**API に必要な部分（検証・ドキュメント・DI）はバッテリー同梱、Web アプリ全体（ORM・管理・認証）は自分で組む**」という中間的な立ち位置です。

### 3.5 向いている場面 / 正直な弱点

**向いている**：高並行の IO バウンド API、マイクロサービス、型安全な API 契約をチームで共有したい案件、フロントエンド（TypeScript）と OpenAPI で型を揃えたい案件、AI/ML の推論 API。

**正直な弱点**：

- **いまだ 0.x 系**。安定して広く使われてはいますが、バージョンは 1.0 未満で、マイナー更新に破壊的変更が混じることがあります。**バージョン固定（`==`）と CHANGELOG 追従の運用規律**が要ります。
- **バッテリーは API 止まり**。ORM・マイグレーション・管理画面・認証は依然として自分で組み立てます。Django のような「全部入り」を期待すると肩透かしを食らいます。
- **async 正しさの規律**が必須（§3.2）。

---

## **4. Django：バッテリー同梱と、規約の力**

### 4.1 思想：規約に従えば、最短で「Web アプリ全体」が立つ

Django は **「バッテリー同梱（batteries-included）」** のフルスタックフレームワークです。**ORM・自動管理画面・認証/権限・マイグレーション・フォーム・テンプレート**を最初から同梱し、**MTV（Model-Template-View）アーキテクチャ**という規約に沿って組み立てます。WSGI と ASGI の両方に対応します。

最大の武器は **`django-admin`（自動管理画面）**です。モデルを定義し数行登録するだけで、CRUD・検索・権限付きの管理 UI が自動生成されます。これは Flask/FastAPI には存在しない、Django 固有の即効性です。

```python
# models.py — モデルを定義し…
from django.db import models


class Article(models.Model):
    title = models.CharField(max_length=200)
    body = models.TextField()
    published_at = models.DateTimeField(null=True, blank=True)
```

```python
# admin.py — 数行登録するだけで、CRUD 管理画面が自動で生える
from django.contrib import admin
from .models import Article

admin.site.register(Article)
```

### 4.2 含むもの / 含まないもの

| カテゴリ | Django の扱い |
|---|---|
| ORM | **内蔵（Django ORM）** |
| マイグレーション | **内蔵（makemigrations / migrate）** |
| 管理画面 | **内蔵（自動生成）** |
| 認証・権限 | **内蔵** |
| フォーム | **内蔵** |
| テンプレート | **内蔵** |
| REST API | DRF（Django REST Framework）を足すのが標準 |
| async | **部分対応**（ビュー・ORM の一部） |

### 4.3 API の話：DRF が標準

Django で JSON API を作るなら、**Django REST Framework（DRF）** を載せるのが定石です。DRF の Serializer が入出力の検証/整形を担います。ただし、FastAPI のような「型ヒント＝検証＝自動 OpenAPI」の一体感はなく、Serializer を別途書く分の記述量があります。**「API 専業なら FastAPI、管理画面付き Web アプリの一部として API も要るなら Django + DRF」** が大まかな分岐です。

### 4.4 async の物語：部分対応

Django は async ビューと一部の async ORM に対応していますが、**FastAPI のような async ネイティブではありません**。エコシステム全体がまだ同期前提の箇所を多く含むため、「高並行 async が主目的」なら FastAPI の方が素直です。

### 4.5 向いている場面 / 正直な弱点

**向いている**：コンテンツ管理・CRUD 中心の Web アプリ全体、管理画面と認証が即・必須の案件、規約に乗ってチームで速く作りたい案件、社内業務システム。

**正直な弱点**：

- **重く、意見が強い（opinionated）**。Django の規約に乗らない要件では、かえって戦いになります。「核だけ欲しい」案件には過剰です。
- **API 専業には冗長**。純粋な JSON API なら DRF の記述量や ORM の縛りが、FastAPI の軽さに対して重く感じられます。
- **async は部分的**（§4.4）。

---

## **5. 意思決定フレームワーク：シナリオ → 推奨**

ここまでの各論を、**実際の要件**に落とし込みます。あなたの案件がどの行に最も近いかで、出発点が決まります。

| あなたのシナリオ | 第一候補 | 理由 | 次点 |
|---|---|---|---|
| REST/JSON API が中心。型契約をフロントと共有したい | **FastAPI** | 型ヒント＝検証＝自動 OpenAPI | Flask + marshmallow |
| 高並行の IO バウンド・WebSocket・ストリーミング | **FastAPI** | ASGI で真の async 並行 | Quart |
| 管理画面・認証・ORM が今すぐ・必須 | **Django** | 全部同梱、admin が自動生成 | — |
| コンテンツ/CRUD 中心の Web アプリ全体 | **Django** | MTV 規約で最短到達 | Flask |
| 構成を一つひとつ自分で選びたい・薄く作りたい | **Flask** | 核だけ・拡張で組む | FastAPI |
| 小さく始めて、要件に合わせて拡張したい | **Flask** | 最小から段階的に肥やせる | FastAPI |
| 既存の SQLAlchemy / Flask 資産・チームスキルがある | **Flask** | 学習コストと移行コストが最小 | FastAPI |
| AI/ML の推論 API（型安全な入出力） | **FastAPI** | Pydantic で入出力を厳密化 | Flask |
| 社内業務システム（権限管理が肝） | **Django** | 認証/権限/admin が同梱 | Flask |
| マイクロサービスを多数・軽量に並べる | **FastAPI** | 軽量・async・自動ドキュメント | Flask |

> 💡 **意思決定の三つの問い**でも整理できます。①「管理画面・認証・ORM を今すぐ全部欲しいか？」→ Yes なら **Django**。②（No なら）「高並行 async・型駆動の API が主目的か？」→ Yes なら **FastAPI**。③（どちらも No なら）「構成を自分で選び、薄く作りたいか？」→ Yes なら **Flask**。この順で問えば、たいていの案件は自然に一つへ収束します。

---

## **6. Flask を選ぶべきとき / 選ぶべきでないとき（正直版）**

私自身が Flask を本番で運用してきたからこそ、ここははっきり書きます。

### 6.1 Flask を選ぶべきとき

- **構成を吟味して選びたい**：ORM・検証・認証・タスクキューを、案件に最適なものを一つずつ選びたい。
- **小〜中規模で薄く作りたい**：機能を盛らず、要件に最小フィットさせたい。
- **既存資産がある**：SQLAlchemy / marshmallow / 既存の Flask コードベースがあり、学習・移行コストを抑えたい。
- **同期処理が主体**：典型的な CRUD・業務ロジックで、超高並行 async が要件ではない。
- **設計を引き受ける覚悟がある**：`create_app`・Blueprint・層分離を最初から入れられる（[大規模構成ガイド](/blog/flask-application-factory-blueprints-large-app-structure-guide)）。

### 6.2 Flask を選ぶべきでないとき

- **高並行の async が主目的**：WebSocket・大量同時接続・ストリーミングが中心なら **FastAPI**（または Quart）。
- **管理画面・認証・ORM を即・全部欲しい**：自作の手間を払いたくないなら **Django**。
- **自動 API ドキュメントを前提にしたい**：OpenAPI/Swagger を「書かずに得たい」なら **FastAPI**。
- **型駆動の API 契約をチームの規律にしたい**：Pydantic を中核に据えるなら **FastAPI**。
- **設計を引き受ける体制が無い**：構造設計を省く運用になりそうなら、規約で守ってくれる **Django** の方が事故が少ない。

> ⚠️ 最後の点は重要です。Flask の「自由」は、設計規律とセットでなければ**負債**になります。チームに設計を担保する仕組みが無いなら、規約の強い Django の方が結果的に安全なことがあります。「自由＝善」ではありません。

---

## **7. 移行と併存：三者は地続きである**

技術選定は「一度きりの賭け」ではありません。三者は**思っているより地続き**で、移行・併存の現実的な道があります。

### 7.1 部品は共有できる

- **Flask ↔ FastAPI**：**marshmallow / Pydantic / SQLAlchemy** は、いずれもフレームワーク非依存です。永続化層（SQLAlchemy モデル）や検証ロジックを共有したまま、Web 層だけを差し替えられます。SQLAlchemy 2.0 の設計は [SQLAlchemy 2.0 型付き ORM 実践ガイド](/blog/sqlalchemy-2-typed-orm-production-guide) を参照してください（Flask でも FastAPI でも同じ ORM が使えます）。

### 7.2 ゲートウェイ背後で併存させる

API Gateway や ALB の背後で、**Flask アプリと FastAPI アプリをパスで振り分けて併存**させられます。新規エンドポイントだけ FastAPI で書き、既存は Flask のまま——という**段階移行**が現実的です。私が運用してきた木材流通 SaaS でも、API Gateway → ALB → ECS でサービスを束ねる構成でした。リスクを一括移行に集中させず、エンドポイント単位で移せます。

### 7.3 Flask の async 逃げ道：Quart

Flask の構文に慣れたチームが async を必要としたとき、**Quart**（Flask と互換 API の ASGI フレームワーク）への移行は、ゼロから FastAPI を学ぶより段差が小さいことがあります。「Flask のまま async に寄せる」選択肢として頭の片隅に置いてください。

```text
[ クライアント ]
       │
   [ API Gateway / ALB ]
     ├── /api/legacy/*  → Flask アプリ（既存・同期）
     └── /api/v2/*      → FastAPI アプリ（新規・async）
```

> 💡 「最初に完璧な選択をしなければ」と気負う必要はありません。**部品（ORM・検証）を共有可能な形に保ち、Web 層を疎結合にしておけば、後から移せます**。技術選定は可逆性を残せる——これが、ベンダー選定や調達の観点とも通じる発注の知恵です（[システム開発外注ガイド：ベンダー選定とコスト](/blog/system-development-outsourcing-guide-vendor-selection-cost)）。

---

## **8. FastAPI を深く知りたい人へ**

本記事は「どれを選ぶか」の選定ガイドです。**FastAPI を選ぶと決めた後**の本番運用——`async def` / `def` の使い分け、Pydantic v2 の境界バリデーション、`Depends` による依存性注入、構造化ログと OpenTelemetry の可観測性、`BackgroundTasks` の限界とジョブ基盤への逃がし方——は、別記事に体系化しています。FastAPI 固有の設計判断は [FastAPI 本番運用ガイド](/blog/fastapi-production-async-pydantic-observability-guide) を参照してください。同様に、Flask を選んだ後の本番設計は [Flask 本番運用ガイド](/blog/flask-production-guide) が出発点です。

---

## **まとめ：推奨マトリクス**

最後に、判断を一枚に凝縮します。

| もし… | 選ぶべきは | 一言 |
|---|---|---|
| 高並行・型安全な API が主目的 | **FastAPI** | ASGI と Pydantic が主戦場。ただし 0.x のバージョン規律を持つ |
| 管理画面・認証・ORM が即・必須 | **Django** | 全部入り。規約に乗れば最短。API は DRF |
| コンテンツ/CRUD の Web アプリ全体 | **Django** | MTV 規約と admin で速く立つ |
| 構成を自分で選び、薄く作りたい | **Flask** | 核だけ。自由と引き換えに設計責任 |
| 小さく始めて段階的に拡張 | **Flask** | 最小から肥やせる。後で移行も可 |
| 既存 SQLAlchemy/Flask 資産がある | **Flask** | 学習・移行コスト最小 |
| 設計を担保する体制が無い | **Django** | 規約が事故を減らす |

三者は競合ではなく**住み分け**です。Flask は「最大の制御と最小の核」、FastAPI は「型駆動の検証と async・自動ドキュメント」、Django は「規約と網羅性で最短到達」。あなたの要件を §5 の三つの問いに通せば、出発点は自然に決まります。そして §7 のとおり、部品を疎結合に保てば**後から移せる**——だから、完璧主義に陥らず、いまの要件に最小フィットする一つを選んでください。それが、長く価値を持つバックエンドへの近道です。
