Flask入門:PythonでWebアプリを作成する基本手順

Pythonの軽量WebフレームワークFlaskを使って、Webアプリを作成する方法を初心者向けに解説。ルーティングやテンプレートの基本を学べます。

FlaskWebアプリPythonルーティングテンプレート入門2026/5/25

Flaskとは?

FlaskはPythonで書かれた軽量なWebフレームワークです。シンプルで柔軟性が高く、小規模から中規模のWebアプリケーション開発に適しています。Flaskは「マイクロフレームワーク」を標榜しており、最小限の機能からスタートして、必要な機能を追加していくスタイルです。

この記事では、Flaskを使って簡単なWebアプリを作成する手順を、ルーティングやテンプレートの基本とともに解説します。

環境準備

まず、Pythonがインストールされていることを確認してください。Python 3.6以上を推奨します。

仮想環境を作成し、Flaskをインストールします。

<h1>仮想環境の作成</h1>
python -m venv venv

<h1>仮想環境の有効化(Windows)</h1> venv\Scripts\activate

<h1>仮想環境の有効化(Mac/Linux)</h1> source venv/bin/activate

<h1>Flaskのインストール</h1> pip install flask

最小限のFlaskアプリ

app.pyというファイルを作成し、以下のコードを記述します。

from flask import Flask

app = Flask(__name__)

@app.route('/') def hello(): return 'Hello, World!'

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

このコードは、ルートURL(/)にアクセスがあったときに「Hello, World!」という文字列を返すだけのシンプルなアプリです。

アプリの実行

ターミナルで以下のコマンドを実行します。

python app.py

ブラウザで http://127.0.0.1:5000 にアクセスすると、「Hello, World!」と表示されます。

ルーティングの基本

Flaskでは、@app.route()デコレータを使ってURLと関数を結び付けます。これをルーティングと呼びます。

動的なURL

URLの一部を変数として受け取ることもできます。

@app.route('/user/<name>')
def show_user(name):
    return f'User: {name}'

このようにすると、/user/Johnにアクセスした場合、User: Johnと表示されます。

HTTPメソッドの指定

デフォルトではGETメソッドのみを受け付けますが、methods引数で指定できます。

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        # ログイン処理
        return 'Logged in!'
    else:
        return 'Login form'

テンプレートの使用

動的なHTMLを生成するには、Jinja2テンプレートエンジンを使います。Flaskには標準で組み込まれています。

テンプレートファイルの配置

プロジェクトのルートにtemplatesフォルダを作成し、その中にHTMLファイルを置きます。

例:templates/index.html

<!DOCTYPE html>
<html>
<head>
    <title>{{ title }}</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>

テンプレートのレンダリング

render_template関数を使ってテンプレートを呼び出します。

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/') def index(): return render_template('index.html', title='Home', name='World')

これで、/にアクセスすると、テンプレートに変数が埋め込まれたHTMLが表示されます。

静的ファイルの扱い

CSSやJavaScriptなどの静的ファイルは、プロジェクトのルートにstaticフォルダを作成して配置します。テンプレート内で以下のように呼び出します。

<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">

フォームデータの取得

POSTリクエストで送信されたフォームデータは、requestオブジェクトから取得します。

from flask import Flask, request

@app.route('/submit', methods=['POST']) def submit(): username = request.form['username'] return f'Hello, {username}!'

リダイレクトとエラーハンドリング

リダイレクト

redirect関数を使って別のURLにリダイレクトできます。

from flask import redirect

@app.route('/old') def old(): return redirect('/new')

404エラーハンドリング

カスタムエラーページを表示するには、errorhandlerデコレータを使います。

@app.errorhandler(404)
def page_not_found(error):
    return render_template('404.html'), 404

まとめ

この記事では、Flaskを使ったWebアプリ作成の基本を解説しました。

  • ルーティング:URLと関数のマッピング
  • テンプレート:Jinja2を使った動的HTML生成
  • 静的ファイル:CSSやJavaScriptの配信
  • フォーム処理:リクエストデータの取得
  • リダイレクトとエラーハンドリング
  • Flaskはシンプルながら拡張性が高く、データベース連携や認証など、さまざまな機能を追加できます。公式ドキュメントも充実しているので、さらに学習を進めてみてください。