Flaskは、Pythonで実装された軽量なWebアプリケーションフレームワークです。シンプルなAPIで素早くWebアプリケーションを構築でき、必要に応じて拡張も可能な柔軟性を備えています。
この記事では、Flaskの基本的な概念と、最小コードでWebサーバを起動する方法を解説します。
Flaskとは
FlaskはPythonで実装されたWSGI(Web Server Gateway Interface)準拠のWebアプリケーションフレームワークです。
WSGIとは、WebサーバとWebアプリケーションを接続するための標準化されたインターフェース定義です。WSGIを利用することで、WebサーバとWebアプリケーションの実装を分離でき、それぞれの組み合わせの選択肢が広がります。
Flaskの主な特徴は以下の通りです。
- 軽量: 最小限のコードでWebアプリケーションを起動できる
- 柔軟性: 必要に応じて複雑なアプリケーションへスケールアップ可能
- 充実したエコシステム: 拡張パッケージが豊富に存在する
テンプレートエンジンJinja2とWSGIツールキットWerkzeugをベースとしており、PythonのWebフレームワークとしてDjangoと並ぶ人気を誇っています。
準備
Flaskを利用するには、事前にパッケージのインストールが必要です。
# pipの場合
pip install flask
# Anacondaの場合
conda install flaskWebアプリケーションの起動
以下は、Flaskで作成できる最もシンプルなWebアプリケーションです。
from flask import Flask
app = Flask(**name**)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
if **name** == "**main**":
app.run()このスクリプトを実行すると、以下のようなメッセージがコンソールに表示されます。
- Serving Flask app "Hello_World" (lazy loading)
- Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
- Debug mode: off
- Running on <http://127.0.0.1:5000/> (Press CTRL+C to quit)ブラウザで http://127.0.0.1:5000/ にアクセスすると、以下のように「Hello, World!」が表示されます。

コードの解説
モジュールのインポート
flaskパッケージからFlaskクラスをインポートします。
from flask import FlaskFlaskインスタンスの作成
Flaskクラスのインスタンスを作成します。このオブジェクトがWebアプリケーションの本体となります。
app = Flask(**name**)第一引数の__name__は、Pythonの特殊変数です。スクリプトを直接実行した場合は"__main__"が、他のモジュールからインポートされた場合はそのモジュール名が格納されます。
Flaskは__name__の値をもとに、テンプレートや静的ファイルの配置場所を特定します。このため、アプリケーションのルートモジュールでFlask(__name__)として渡すのが一般的です。
ルーティング
ルーティングとは、リクエストされたURLと、それに対応して実行される処理を紐づけることです。
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"@app.route("/")デコレータにより、ルートURL(/)へのアクセス時にhello_world()関数が実行されます。関数の戻り値がクライアント(ブラウザ)にレスポンスとして返されます。
実際のWebアプリケーションでは、複数のURLに対してそれぞれ異なる処理を定義することで、さまざまなページや機能を提供します。
アプリケーションの起動
app.run()を呼び出すことで、Flaskの開発用サーバが起動します。
if __name__ == "__main__":
app.run()if __name__ == "__main__":は、このスクリプトが直接実行された場合にのみapp.run()を実行するためのガード条件です。他のモジュールからインポートされた場合には実行されません。
開発時にデバッグモードを有効にしたい場合は、app.run(debug=True)と指定します。これにより、エラー発生時にブラウザ上に詳細なエラー情報が表示されるようになります。
注意:
debug=Trueは開発環境でのみ使用してください。本番環境では必ず無効にしてください。
まとめ
この記事では、Flaskの基本とWebサーバの起動方法を紹介しました。
- FlaskはPythonの軽量Webフレームワークで、WSGI準拠で動作する
Flask(__name__)でアプリケーションインスタンスを作成する@app.route()でURLと処理関数を紐づける(ルーティング)app.run()で開発用サーバを起動する
次回は、Flaskアプリケーションのディレクトリ構成について解説します。