Flask アプリケーションの基本構造

Flask アプリケーションは、最小構成であれば1つの Python ファイルで動作する。まずは基本的な構造を理解しよう。

最小構成

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(debug=True)

Flask(__name__) でアプリケーションインスタンスを作成する。__name__ を渡すことで、Flask はテンプレートや静的ファイルの配置場所を正しく認識できる。

app.run(debug=True) で開発サーバーが起動する。debug=True にすると、コード変更時に自動リロードされ、エラー時にはデバッガが表示される。

典型的なディレクトリ構成

アプリケーションが大きくなると、以下のような構成が一般的になる。

myapp/
├── app.py
├── config.py
├── static/
│   ├── css/
│   └── js/
├── templates/
│   ├── base.html
│   └── index.html
└── requirements.txt
app.pyアプリケーション本体
config.py設定ファイル
static/CSS、JavaScript、画像などの静的ファイル
templates/Jinja2 テンプレートファイル
requirements.txt依存パッケージの一覧

環境変数による起動

flask run コマンドで起動する場合は、環境変数 FLASK_APP を設定する。

export FLASK_APP=app.py
export FLASK_DEBUG=1
flask run

FLASK_DEBUG=1 を設定するとデバッグモードが有効になる。本番環境では必ず無効にすること。