「PythonでWebアプリってどうやって作るの?」
「Djangoって聞いたけど難しそう…」
「まずは簡単なものから始めたい」
そんな方におすすめなのが、軽量で学習コストが低く、すぐに動かせるフレームワーク「Flask(フラスク)」です。
この記事では、Flaskとは何か?から始まり、インストール、基本的なアプリの作成、HTMLテンプレート連携、APIの作成まで、実例付きで分かりやすく解説します!
Flaskとは?何ができるの?

Flask(フラスク)って何?
Flaskは、Pythonで書かれた軽量Webフレームワークです。
フレームワークとは、アプリを作るための「設計図」や「部品セット」のようなもの。
Flaskを使えば、複雑なWebの仕組みを意識しなくても、簡単にWebアプリが作れます。
「小さく始めて、大きく育てる」がコンセプトで、必要な機能だけを取り入れられる柔軟性が特徴です。
Flaskでできること
機能 | 例 | 難易度 |
---|---|---|
簡単なWebページの表示 | ブログサイト、企業サイト | ★☆☆ |
フォームの入力受付と処理 | お問い合わせフォーム、アンケート | ★★☆ |
データベースとの連携 | 会員管理、商品管理 | ★★☆ |
REST APIの作成 | スマホアプリとの連携 | ★★★ |
ログイン認証の実装 | 会員制サイト | ★★★ |
なぜFlaskがおすすめ?
- 覚えることが少ない:基本的なことだけ覚えれば動く
- すぐ始められる:インストールして5分で動くアプリが作れる
- 後から拡張できる:最初は簡単に、必要に応じて機能追加
- 情報が豊富:ネット上にたくさんの情報がある
Flaskのインストールと準備
インストール方法
まずはFlaskをインストールしましょう。
# 最も簡単な方法
pip install flask
仮想環境を使った安全なインストール(推奨)
# 仮想環境を作成
python -m venv flask_env
# 仮想環境を有効化
# Windowsの場合
flask_env\Scripts\activate
# Mac・Linuxの場合
source flask_env/bin/activate
# Flaskをインストール
pip install flask
仮想環境って何? 他のプロジェクトに影響を与えずに、このプロジェクト専用のPython環境を作る仕組みです。
インストール確認
# バージョンを確認
python -m flask --version
バージョン情報が表示されれば、インストール成功です!
最初のFlaskアプリを作ってみよう
超シンプルなWebアプリを作る
hello.py
というファイルを作って、以下のコードを入力してください。
# Flaskを使うための準備
from flask import Flask
# Flaskアプリを作成
app = Flask(__name__)
# ホームページ(/)にアクセスされたときの処理
@app.route("/")
def hello():
return "こんにちは、Flask!"
# このファイルを直接実行したときだけWebサーバーを起動
if __name__ == "__main__":
app.run(debug=True)
実行してみよう
python hello.py
成功すると、こんなメッセージが表示されます:
* Running on http://127.0.0.1:5000
ブラウザでhttp://127.0.0.1:5000
を開くと、「こんにちは、Flask!」と表示されます。
コードの説明
部分 | 役割 |
---|---|
from flask import Flask | Flaskを使えるようにする |
app = Flask(__name__) | Flaskアプリを作る |
@app.route("/") | どのURLで表示するかを指定 |
def hello(): | そのURLにアクセスされたときの処理 |
app.run(debug=True) | Webサーバーを起動 |
HTMLテンプレートと連携してページを作る

フォルダ構成を作る
project/
├── app.py
└── templates/
└── index.html
templates
フォルダを作って、その中にHTMLファイルを入れます。
app.pyのコード
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def index():
# HTMLテンプレートを表示
return render_template("index.html")
if __name__ == "__main__":
app.run(debug=True)
templates/index.htmlの中身
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Flask App</title>
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
h1 { color: #333; }
</style>
</head>
<body>
<h1>ようこそ、Flaskの世界へ!</h1>
<p>これは私の最初のFlaskアプリです。</p>
</body>
</html>
動的な内容を表示してみよう
from flask import Flask, render_template
import datetime
app = Flask(__name__)
@app.route("/")
def index():
# 現在の時刻を取得
now = datetime.datetime.now()
return render_template("index.html", current_time=now)
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Flask App</title>
</head>
<body>
<h1>ようこそ、Flaskの世界へ!</h1>
<p>現在の時刻:{{ current_time }}</p>
</body>
</html>
{{ current_time }}
の部分に、Pythonで渡した時刻が表示されます。
FlaskでAPIを作ってみよう
API(Application Programming Interface)は、他のプログラムがデータを取得するための窓口です。
簡単なAPIエンドポイントを作る
from flask import Flask, jsonify
app = Flask(__name__)
# 通常のWebページ
@app.route("/")
def index():
return "Flask API サーバー"
# APIエンドポイント
@app.route("/api/data")
def api_data():
data = {
"name": "Flask",
"version": "2.3",
"status": "動作中"
}
return jsonify(data)
# ユーザー情報のAPI
@app.route("/api/users")
def api_users():
users = [
{"id": 1, "name": "田中太郎"},
{"id": 2, "name": "佐藤花子"},
{"id": 3, "name": "鈴木次郎"}
]
return jsonify(users)
if __name__ == "__main__":
app.run(debug=True)
APIの確認方法
http://127.0.0.1:5000/api/data
にアクセス- JSON形式でデータが表示される
{
"name": "Flask",
"status": "動作中",
"version": "2.3"
}
よく使うFlaskの機能・拡張

基本機能
機能 | 用途 | 使い方例 |
---|---|---|
request | フォームやパラメータの取得 | request.form['name'] |
redirect | 他のページへ移動 | redirect('/login') |
url_for | URL生成 | url_for('index') |
flash | メッセージ表示 | flash('保存しました') |
session | セッション管理 | session['user_id'] = 1 |
便利な拡張ライブラリ
ライブラリ | 用途 | インストール |
---|---|---|
Flask-SQLAlchemy | データベース連携 | pip install flask-sqlalchemy |
Flask-Login | ログイン機能 | pip install flask-login |
Flask-WTF | フォーム処理 | pip install flask-wtf |
実践的な例:簡単な掲示板を作ってみよう
from flask import Flask, render_template, request, redirect, url_for
app = Flask(__name__)
# 投稿を保存するリスト(本来はデータベースを使用)
posts = []
@app.route("/")
def index():
return render_template("index.html", posts=posts)
@app.route("/post", methods=["GET", "POST"])
def post():
if request.method == "POST":
# フォームからデータを取得
name = request.form["name"]
message = request.form["message"]
# 投稿をリストに追加
posts.append({"name": name, "message": message})
# ホームページにリダイレクト
return redirect(url_for("index"))
return render_template("post.html")
if __name__ == "__main__":
app.run(debug=True)
まとめ:Flaskは「PythonでWebを始めるなら、まずこれ!」
重要なポイント
- Flaskは軽量かつ柔軟なPython用Webフレームワーク
pip install flask
と数行のコードですぐWebアプリが作れる- HTMLテンプレートやJSON APIとの連携も簡単
- 必要な機能を後から追加できるモジュール設計
学習の順番
- 基本的なアプリ作成:Hello World から始める
- HTMLテンプレート:見た目のあるページを作る
- フォーム処理:ユーザーからの入力を受け取る
- データベース連携:データを永続化する
- API作成:他のアプリとの連携
コメント