0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Flask Blueprintでコードの保守性を上げる

Posted at

こんな悩みがありました

  • 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の導入手順

  1. コントローラーの作成
# controllers/index.py
from flask import Blueprint
index_bp = Blueprint('index', __name__)

@index_bp.route("/")
def index():
    return render_template("index.html")
  1. アプリケーションの初期化
# __init__.py
def create_app():
    app = Flask(__name__)
    
    # Blueprintの登録
    from controllers.index import index_bp
    app.register_blueprint(index_bp)
    
    return app
  1. アプリケーションの起動
# run.py
from backend import create_app
app = create_app()

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

Blueprintを使うメリット

1. コードの整理整頓

  • 機能ごとに別ファイルに分割することで、コードの見通しが良くなる
  • メンテナンスがしやすくなり、バグの特定も容易になる

2. チーム開発の効率化

  • 担当者ごとに別ファイルで作業できるため、並行開発がスムーズ
  • コードの衝突リスクを減らす

3. 拡張性の向上

  • 新機能の追加が容易になり、既存コードへの影響を最小限に抑えられる
  • テストがしやすくなり、品質の向上

まとめ

Blueprintを導入することで、Flaskアプリケーションを整理された状態で管理できるようになりました。今後の機能追加や保守作業も、より効率的に行えるはずです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?