カテゴリ: Flask 更新日: 2025/12/05

FlaskのBlueprintでアプリを構造化する手順まとめ!初心者向け解説

FlaskのBlueprintでアプリを構造化する手順まとめ!初心者向け解説
FlaskのBlueprintでアプリを構造化する手順まとめ!初心者向け解説

先生と生徒の会話形式で理解しよう

生徒

「先生、Flaskで作ったアプリがだんだん大きくなってきて、ファイルがごちゃごちゃしてきました。どうすればきれいに整理できますか?」

先生

「それなら、FlaskのBlueprint(ブループリント)を使うのがおすすめです。機能ごとに分けて管理できるので、見やすくてわかりやすい構造になりますよ。」

生徒

「Blueprintって何ですか?難しそうですが…」

先生

「難しくありません。家の間取りを部屋ごとに分けるイメージだと思ってください。一緒に手順を見ながら学んでいきましょう!」

1. FlaskのBlueprintとは?

1. FlaskのBlueprintとは?
1. FlaskのBlueprintとは?

FlaskのBlueprintは、アプリの機能をグループごとに分けて管理できる仕組みです。たとえば、「ユーザー管理」「商品管理」「ブログ」のように、それぞれを別ファイルで作り、後からまとめてアプリに組み込むことができます。

もしBlueprintを使わずに全部をapp.pyに書くと、コードが増えるたびに探すのが大変になり、バグが起きたときに修正しにくくなります。Blueprintを使うと、整理されたフォルダ構造で見通しが良くなるので、初心者でもプロっぽい設計が可能です。

2. プロジェクトのフォルダ構造を準備しよう

2. プロジェクトのフォルダ構造を準備しよう
2. プロジェクトのフォルダ構造を準備しよう

まずはフォルダを整理します。以下のような構造を作るのがおすすめです。


my_flask_app/
    app.py
    user/
        __init__.py
        routes.py
    product/
        __init__.py
        routes.py

userproductというフォルダが、それぞれ独立した機能の場所です。routes.pyにはルート(URLに対応する処理)を書きます。

3. Blueprintを作成する

3. Blueprintを作成する
3. Blueprintを作成する

例として、user機能のBlueprintを作ってみます。user/routes.pyに以下のコードを書きましょう。


from flask import Blueprint

# userというBlueprintを作成
user_bp = Blueprint('user', __name__)

# /user というURLにアクセスしたときの処理
@user_bp.route('/user')
def user_home():
    return "ユーザーページです"

このBlueprintは、まだアプリ本体には登録していない状態です。次のステップでアプリに組み込みます。

4. Blueprintをアプリに登録する

4. Blueprintをアプリに登録する
4. Blueprintをアプリに登録する

次にapp.pyを編集して、Blueprintをアプリに組み込みます。


from flask import Flask
from user.routes import user_bp

app = Flask(__name__)

# user機能をアプリに登録
app.register_blueprint(user_bp)

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

これで準備完了です。ターミナルでpython app.pyを実行し、ブラウザでhttp://127.0.0.1:5000/userにアクセスすると、「ユーザーページです」と表示されます。

5. 機能を増やしてみよう

5. 機能を増やしてみよう
5. 機能を増やしてみよう

Blueprintの強みは、機能をどんどん追加できることです。例えばproductフォルダにroutes.pyを作り、商品ページを作ります。


from flask import Blueprint

product_bp = Blueprint('product', __name__)

@product_bp.route('/product')
def product_home():
    return "商品ページです"

そしてapp.pyに次の1行を追加します。


from product.routes import product_bp
app.register_blueprint(product_bp)

このように、機能を部屋ごとに分けて増やせるのがBlueprintの大きなメリットです。

6. Blueprintを使うメリット

6. Blueprintを使うメリット
6. Blueprintを使うメリット
  • コードが整理される:大規模になっても迷子にならない。
  • 機能ごとに分けられる:チーム開発でも担当が分けやすい。
  • 保守性が高い:あとで修正や機能追加がしやすい。
  • 再利用ができる:別プロジェクトにもコピーして使える。

このように、Blueprintは初心者が最初から取り入れておくと、後々の学習や開発がとても楽になります。

7. よくあるエラーと対処法

7. よくあるエラーと対処法
7. よくあるエラーと対処法

Blueprintを使い始めると、次のようなエラーがよく出ます。

  • ImportError: No module named 'user'
    → フォルダ内に__init__.pyを作るのを忘れていないか確認しましょう。
  • View function mapping is overwriting
    → Blueprint名やルート名が他と重複していないか確認してください。

エラーは慌てずにメッセージを読み、ファイル名や登録方法を見直せば解決できます。

まとめ

まとめ
まとめ

FlaskのBlueprintを活用することで、ふくらんでいくアプリケーションの構造を整理しやすくし、機能ごとにわかりやすい設計へ導けることがよくわかりました。特に、ゆうざーかんりやしょうひんかんりのように役割がはっきりしている部分を独立したフォルダとしてまとめることで、あとからコードを読み返すときの負担が大きく減り、かいはつのながれもよりすむーずになるところが大きな特ちょうです。また、ぶるーぷりんとをとうろくするだけであたらしいるーとを追加できるため、しょしんしゃでも自然にアプリの構造を理解しながら成長できるところも魅力てきです。さらに、機能ごとにファイルをわけることで、ちーむかいはつでも役割分担がしやすく、メンテナンス性やさいりようせいも上がり、ちゅうきてきな開発にとってとても有利にはたらきます。こうした積みかさねが、のちのちのアプリ拡張にもつながるため、すこしずつでも取り入れておくと学習効果も高まります。

サンプルプログラムの振り返り

この記事で紹介したように、ぶるーぷりんとを作るためには、まず独立した機能のためのフォルダを用意し、その中に__init__.pyroutes.pyを配置します。そして、routes.pyBlueprintを作成し、アプリ本体でregister_blueprintを使って登録するだけで機能が追加できます。以下はまとめとして整理したサンプルです。


# user/routes.py
from flask import Blueprint

user_bp = Blueprint('user', __name__)

@user_bp.route('/user')
def user_home():
    return "ゆうざーぺーじです"

# app.py
from flask import Flask
from user.routes import user_bp

app = Flask(__name__)

app.register_blueprint(user_bp)

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

このように、基本構造さえ理解できれば、しょうひん機能やその他の機能も同じ流れで追加できるため、あぷり全体の見通しが良くなり、機能追加のたびに迷うことがありません。また、よくあるエラーも、めっせーじをしっかり読むことで原因を見つけやすく、ぶるーぷりんとの仕組みそのものを深く理解することにつながります。

先生と生徒の振り返り会話

生徒

「今日の学習で、Blueprintを使うと機能ごとにわかりやすく整理できることがよくわかりました。アプリが大きくなっても迷わず作業できそうです。」

先生

「その通りです。ぶるーぷりんとは小さなアプリにも大きなアプリにも役立つ考え方なので、さいしょのうちから取り入れておくと後でとても楽になりますよ。」

生徒

「これなら新しい機能も気軽に追加できそうです。フォルダ分けもすっきりしていて、どこに何を書くか迷わなくなりました。」

先生

「その調子です。今日学んだ構造化の考え方は、Flaskに限らず、どんな開発にも応用できます。次はさらに複雑な機能も挑戦していきましょう。」

カテゴリの一覧へ
新着記事
New1
Flask
Flaskでデータベースエラーを処理する方法!初心者にもわかる例外の使い方
New2
Flask
FlaskでリダイレクトやURL生成を行う方法!便利な関数の使い方を解説
New3
Flask
FlaskでPOSTリクエストを受け取る方法!初心者でもわかるJSONデータの受け取り方
New4
Flask
Flask‑Mailの使い方!アプリからメールを送信する基本方法を解説
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Django
DjangoとFlaskの違いを完全比較!初心者でもわかるPythonフレームワーク入門
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.5
Java&Spring記事人気No5
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.6
Java&Spring記事人気No6
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.7
Java&Spring記事人気No7
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説
No.8
Java&Spring記事人気No8
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説