
Flaskは2010年4月、ドイツのアーミン・ロナハー(Armin Ronacher)がエイプリルフール向けに書いた「Denied」というジョークプロジェクトから派生した、PythonのマイクロWebフレームワークです。彼が率いるPocooチームの既存資産だったWerkzeug(WSGIユーティリティ)とJinja(テンプレートエンジン)を組み合わせる薄い層として実装され、コアは2,000行ほど。「必要な機能だけ自分で追加する」スタンスが評価され、いまもPython製WebフレームワークではDjangoと並ぶ存在です。
この記事の目次
- Flaskを支える要素
- ジョークから始まったFlaskの歴史
- 実務での使い方
- Django・FastAPIとの使い分け
- まとめ
Flaskを支える要素

Flask自体は「ルーティング・リクエスト処理・テンプレート連携」の最小コアしか提供しません。実際のHTTP処理を担うのは下層のWerkzeugで、URLマッチ・リクエスト/レスポンス抽象・デバッガ機能までを引き受けます。一方、HTMLの組み立てはJinja2が担い、{% for %}や{% extends %}による継承テンプレートを書けるようになっています。
ある程度の規模になるとBlueprintという仕組みでルーティングを機能ごとに分割し、認証・APIなど用途別のサブアプリを束ねます。ORMや認証、フォーム検証は標準には含まれず、SQLAlchemy、Flask-Login、Flask-WTFといった拡張パッケージから選んで足すのがFlask流。「必要なものを自分で組み合わせる」スタイルが、設計の自由度と引き換えに採用されています。
ジョークから始まったFlaskの歴史

始まりは2010年4月1日、アーミン・ロナハーが「Denied」と称する小さなフレームワークをエイプリルフールジョークとして発表したことでした。ジョークながら「単一ファイルで動くWebアプリ」というアイデアが好評で、要望に応える形で本気の実装としてFlaskが誕生。Pocooプロジェクト傘下でリリースされ、2014年公開の1.0手前バージョンまでにPython Webスタートアップの定番として広がりました。
2016年にはPocooの後継として「Pallets Projects」というGitHub上の組織が発足し、Flask、Werkzeug、Jinja、Click、ItsDangerousなど関連プロジェクトをまとめて引き継ぎました。2018年に1.0がリリースされたのち、2021年5月の2.0でasync/awaitビュー関数に対応、2023年9月の2.3ではPython 3.8以降のみサポートへと整理が進んでいます。派生プロジェクトとしては、ASGI対応版のQuartがアーミン本人によって書かれています。
実務での使い方

Flaskは「app = Flask(__name__)」と「@app.route('/')」さえあれば動かせるため、個人プロジェクトや社内ツールのプロトタイピングで採用されることが多いフレームワークです。外部APIを叩いて結果を表示する小さなダッシュボード、機械学習モデルの推論結果を返すマイクロサービス、Slackボットのコールバック受け口など、軽量Webサーバー全般で広く使われます。
中規模以上のアプリでは、application factoryパターンでcreate_app関数を作り、Blueprintで認証・API・管理画面などを分割するのが定番。Flask-SQLAlchemyでORM、Flask-Migrateでマイグレーション、Flask-LoginとFlask-WTFで認証・フォーム検証、Celery連携で非同期ジョブと組み合わせれば、Djangoに近い構成も自前で作れます。本番ではgunicornやuWSGIで動かし、nginxをリバースプロキシに置くWSGI構成が王道です。
Django・FastAPIとの使い分け

Flaskが選ばれる場面はおおむね「Djangoほどの装備は要らないが、ある程度の構造は欲しい」というケースです。管理画面・ORM・認証まで揃ったDjangoは初期投資が大きい代わりに完成度が高い一方、Flaskは最低限のコアだけ提供するため、CRUDがほとんどないAPIサーバーや、機械学習モデルの推論エンドポイントなどに向きます。
より新しい競合がFastAPIで、Sebastián RamírezがStarletteとPydanticを基に2018年に公開しました。Pythonの型ヒントを使ってOpenAPI仕様を自動生成し、ASGIで非同期処理を素直に書ける点が支持され、新規プロジェクトでは「同期+テンプレート→Flask」「非同期APIメイン→FastAPI」と棲み分けが進んでいます。Flaskにも2.0以降asyncビューが入っていますが、型ベースのAPI設計ではFastAPIに分があります。
まとめ
Flaskはエイプリルフールジョークから生まれたとは思えないほど長く生き残り、Pythonで小さなWebアプリを書くときの標準的な選択肢になりました。Djangoより薄く、FastAPIより枯れたフレームワークが欲しい局面では、いまも第一候補に挙がります。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント