これまでの記事ではトップレベルのディレクトリに直接hello.pyというファイルを用意していましたが、この方法は実用的なアプリケーションには向きません。この記事ではFlaskインスタンスを関数の内側で作成する方法について学びましょう。
このFlaskインスタンスを作成するための関数をFlaskではアプリケーション製造工場(The Application Factory)と呼びます。
目次
__init__.pyの作成
まずはおなじみ画面上に Hello World と表示してみましょう。
Flaskプロジェクトのトップレベルディレクトリ(ここではflask-tutorial)にflaskrディレクトリを作成し、その中に次のコードを記述した __init__.py というPythonファイルを作成します。

このファイルに次のように記述しましょう。
import os
from flask import Flask
def create_app(test_config=None):
# Flaskインスタンスの作成と設定
app = Flask(__name__, instance_relative_config=True)
app.config.from_mapping(
SECRET_KEY='dev',
DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),
)
if test_config is None:
# load the instance config, if it exists, when not testing
app.config.from_pyfile('config.py', silent=True)
else:
# load the test config if passed in
app.config.from_mapping(test_config)
# ensure the instance folder exists
try:
os.makedirs(app.instance_path)
except OSError:
pass
# a simple page that says hello
@app.route('/hello')
def hello():
return 'Hello, World!'
return app
この create_app がアプリケーション製造工場の関数です。
アプリケーションの実行
この時点でflaskコマンドを使ってアプリケーションを実行することができます。
Windows PowerShell でflask-tutorialディレクトリに入り、次のコマンドを実行します。
> $env:FLASK_APP = "flaskr" > $env:FLASK_ENV = "development" > flask run
これでFlaskアプリケーションが実行状態になりました。
ブラウザで確認
ブラウザで確認してみましょう。
任意のブラウザを開き http://127.0.0.1:5000/hello を訪れてみます。

成功です。画面に Hello, World! と表示させることができました。







