こんな悩みがありました
- Flaskアプリケーションのコードが長くなりすぎて管理が大変になってきた
- 機能ごとにファイルを分けたい
- より保守性の高いコード構造にしたい
Blueprintで解決!
FlaskのBlueprint
は、大規模なアプリケーションを効率的に管理するための強力な機能です。コードを機能ごとに分割し、整理整頓できます。
実際のリファクタリング例
Before: 全てが1つのファイルに
# app.py
from flask import Flask, render_template...
app = Flask(__name__)
@app.route("/")
def index():
# スタート画面のコード
@app.route("/quiz/<int:question_id>")
def quiz():
# クイズ画面のコード
@app.route("/result")
def result():
# 結果画面のコード
After: きれいに整理
├─backend
| ├─controllers
| | ├─index.py #def index
| | ├─quiz.py #def quiz
| | └─result.py #def result
| ├─data #データベース 今はjsonで管理 将来的にはmodel.pyに移行
| ├─gpt #OpenAIAPIを呼び出す
| ├─static
| │ ├─js
| │ └─style
| ├─templates
| ├─__init__.py
| └─model.py #将来的にデータベースを管理する
└─run.py
Blueprintの導入手順
- コントローラーの作成
# controllers/index.py
from flask import Blueprint
index_bp = Blueprint('index', __name__)
@index_bp.route("/")
def index():
return render_template("index.html")
- アプリケーションの初期化
# __init__.py
def create_app():
app = Flask(__name__)
# Blueprintの登録
from controllers.index import index_bp
app.register_blueprint(index_bp)
return app
- アプリケーションの起動
# run.py
from backend import create_app
app = create_app()
if __name__ == '__main__':
app.run(debug=True)
Blueprintを使うメリット
1. コードの整理整頓
- 機能ごとに別ファイルに分割することで、コードの見通しが良くなる
- メンテナンスがしやすくなり、バグの特定も容易になる
2. チーム開発の効率化
- 担当者ごとに別ファイルで作業できるため、並行開発がスムーズ
- コードの衝突リスクを減らす
3. 拡張性の向上
- 新機能の追加が容易になり、既存コードへの影響を最小限に抑えられる
- テストがしやすくなり、品質の向上
まとめ
Blueprintを導入することで、Flaskアプリケーションを整理された状態で管理できるようになりました。今後の機能追加や保守作業も、より効率的に行えるはずです!