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

FlaskとWebpackを連携してフロント資産をビルド管理する手順を完全解説!初心者でもわかる実践入門

FlaskとWebpackを連携してフロント資産をビルド管理する手順
FlaskとWebpackを連携してフロント資産をビルド管理する手順

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

生徒

「FlaskでWebアプリを作っているのですが、JavaScriptやCSSのファイル管理がごちゃごちゃしてしまいます。Webpackというツールを使うと良いと聞いたのですが、どうやって連携すればいいですか?」

先生

「とても良い質問です。Webpack(ウェブパック)は、フロントエンドのJavaScriptやCSS、画像などをまとめて整理・圧縮してくれる便利なツールです。Flaskと組み合わせると、開発がぐっと楽になりますよ。」

生徒

「それは便利そうですね!でも設定が難しそうです…」

先生

「大丈夫です。初心者でもできるように、一つずつ丁寧に説明していきますね。」

1. FlaskとWebpackの関係を理解しよう

1. FlaskとWebpackの関係を理解しよう
1. FlaskとWebpackの関係を理解しよう

Flask(フラスク)はPythonで作るWebアプリケーションのフレームワークで、サーバー側を担当します。

Webpack(ウェブパック)はJavaScriptのツールで、フロントエンド側の資産をまとめてビルド(最適化)するツールです。たとえば、複数のJavaScriptファイルを1つにまとめたり、CSSや画像を圧縮したりできます。

たとえるなら、Flaskが「レストランのシェフ(料理を作る)」で、Webpackが「お皿を整えて綺麗に盛り付けるスタッフ」です。どちらも連携してこそ、お客様(ユーザー)に快適なWebページを提供できます。

2. FlaskとWebpackを連携させる目的

2. FlaskとWebpackを連携させる目的
2. FlaskとWebpackを連携させる目的

フロントエンドのファイルが増えると、読み込み速度が遅くなったり、どのファイルを更新すれば良いかわからなくなったりします。Webpackを使えば、これを自動で管理・最適化できます。

  • 複数のJavaScriptを1つにまとめる(バンドル)
  • CSSや画像ファイルを圧縮して軽くする
  • ファイル名にハッシュ値を付けてキャッシュ問題を防ぐ
  • 開発中に自動でブラウザを更新(ホットリロード)

これにより、FlaskのテンプレートとReact、Vue.jsなどのモダンなJavaScriptライブラリを組み合わせるのもスムーズになります。

3. Flask × Webpackのプロジェクト構成例

3. Flask × Webpackのプロジェクト構成例
3. Flask × Webpackのプロジェクト構成例

実際のプロジェクト構成は以下のようになります。初心者でもわかりやすいようにシンプルな構成にしています。


project/
├── backend/
│   ├── app.py                  # Flaskアプリの本体
│   ├── templates/
│   │   └── index.html          # Flaskテンプレート
│   └── static/
│       └── dist/               # Webpackで出力された静的ファイル
└── frontend/
    ├── package.json            # Webpack設定用
    ├── webpack.config.js       # Webpackの設定ファイル
    ├── src/
    │   ├── index.js            # JavaScriptのメインファイル
    │   └── style.css           # CSSファイル

4. Webpackをセットアップする手順

4. Webpackをセットアップする手順
4. Webpackをセットアップする手順

まずは、Node.jsをインストールしてnpm(Node Package Manager)を使えるようにしましょう。Node.jsはJavaScriptの開発環境を作るためのツールです。

次に、フロントエンドフォルダに移動して必要なパッケージをインストールします。


npm init -y
npm install webpack webpack-cli style-loader css-loader --save-dev

webpackはメインのツール、style-loadercss-loaderはCSSを読み込むための設定です。

5. Webpackの設定ファイル(webpack.config.js)を作る

5. Webpackの設定ファイル(webpack.config.js)を作る
5. Webpackの設定ファイル(webpack.config.js)を作る

次に、フロントエンドのフォルダにwebpack.config.jsを作ります。


const path = require('path');

module.exports = {
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, '../backend/static/dist'),
    filename: 'bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: ['style-loader', 'css-loader']
      }
    ]
  },
  mode: 'development'
};

この設定では、src/index.jsを読み込み、Flaskのstatic/distフォルダにbundle.jsとして出力します。

6. Flask側のコードとテンプレートを設定する

6. Flask側のコードとテンプレートを設定する
6. Flask側のコードとテンプレートを設定する

次に、Flaskのメインコードを用意します。Flaskではrender_template()関数を使ってHTMLを表示します。


from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def index():
    return render_template("index.html")

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

テンプレートファイルでは、Webpackで出力したbundle.jsを読み込みます。


<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>FlaskとWebpackの連携</title>
</head>
<body>
  <h1>Flask × Webpack 連携のサンプル</h1>
  <div id="app"></div>
  <script src="{{ url_for('static', filename='dist/bundle.js') }}"></script>
</body>
</html>

7. JavaScriptとCSSを作ってビルドしてみよう

7. JavaScriptとCSSを作ってビルドしてみよう
7. JavaScriptとCSSを作ってビルドしてみよう

次に、ReactやVueを使わずに、簡単なJavaScriptとCSSを作って動作を確認しましょう。


// src/index.js
import './style.css';

document.getElementById('app').innerHTML = '<p>WebpackでビルドしたJavaScriptが動いています!</p>';

/* src/style.css */
p {
  color: blue;
  font-weight: bold;
}

次に以下のコマンドでWebpackを実行します。


npx webpack

ビルドが成功すると、backend/static/dist/bundle.jsが生成されます。Flaskを起動してブラウザでhttp://127.0.0.1:5000/を開くと、青文字のメッセージが表示されます。

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

8. よくあるエラーと対処法
8. よくあるエラーと対処法
  • ファイルが見つからない:Webpackの出力パスとFlaskのstaticフォルダが一致しているか確認しましょう。
  • ブラウザが古いJavaScriptを読まない:キャッシュをクリアするか、ファイル名にハッシュを付ける設定を追加します。
  • CSSが反映されない:style-loadercss-loaderが正しく設定されているか確認します。

9. Flask × Webpackのメリット

9. Flask × Webpackのメリット
9. Flask × Webpackのメリット

この構成を使うと、開発効率とパフォーマンスが大幅にアップします。

  • Flaskでサーバーサイドを管理しながら、モダンなJavaScript開発が可能
  • CSS・画像・JSを自動で最適化して高速表示
  • ReactやVue.jsを導入する基盤としても使える

初心者でも慣れてくると、チーム開発や本格的なWebアプリでも同じ構成をそのまま使えます。

カテゴリの一覧へ
新着記事
New1
Flask
認証と認可の違いを整理しよう!Flaskで押さえるべき基礎概念
New2
Flask
Flaskで非同期フォーム送信(Ajax POST)を実装する方法を解説!初心者でもわかるステップ解説
New3
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
New4
Python
PythonでMySQLに接続する方法!pymysqlの基本的な使い方
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.3
Java&Spring記事人気No3
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
No.4
Java&Spring記事人気No4
Python
Pythonのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.5
Java&Spring記事人気No5
Python
Pythonプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.6
Java&Spring記事人気No6
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.7
Java&Spring記事人気No7
Flask
Flaskアプリの環境変数をクラウドで安全に設定する方法!初心者のための完全ガイド
No.8
Java&Spring記事人気No8
Flask
Flaskでクラウド上のメッセージキュー(SQS/PubSub)を扱う完全ガイド!初心者向け解説