mei_13のPython講座 ロゴ

【解説】軽量でパワフルなWeb開発の扉を開く:Pythonフレームワーク「Flask」入門講座




🐍 初心者歓迎!月額4,000円で質問し放題のPython講座
(1時間4,000円の伴走型ビデオチャット指導も受付中!)
🚀 講座の詳細を見る 📩 質問・お問い合わせ

軽量でパワフルなWeb開発の扉を開く:Pythonフレームワーク「Flask」入門講座


Yukiのアイコン
【Yuki】 こんにちは、Hirokiくん。今日はPythonを使ったWeb開発の世界について、一緒に学んでいきましょう。 今回ご紹介するのは、「Flask(フラスク)」というフレームワークです。 Webアプリケーションを作るための道具箱のようなもの、と考えてもらえるといいかもしれません。 Pythonにはいくつか有名なフレームワークがありますが、Flaskはその中でも「マイクロフレームワーク」と呼ばれていて、とてもシンプルで扱いやすいのが特徴なんです。 少し難しいかもしれませんが、一つずつゆっくり進めていきましょうね。


Hirokiのアイコン
【Hiroki】 Yukiさん、よろしくお願いします!Web開発って難しそうなイメージがありますけど、Pythonでできるんですね。 「マイクロフレームワーク」っていうのは、機能が少ないっていうことなんですか?


Yukiのアイコン
【Yuki】 そうですね、機能が「少ない」というよりは、「最小限の機能だけを持っている」と言ったほうが正しいかもしれません。 複雑な機能が最初から全部入りになっているわけではなくて、自分が必要なものだけを後から付け足していくスタイルなんです。 自由度が高いので、わたしのように少しずつ自分のペースで何かを形にしたい人には、とても向いているフレームワークだと思います……。 それではまず、Flaskを動かすための準備から始めましょうか。

Flaskの導入と環境構築


Yukiのアイコン
【Yuki】 Flaskを使い始めるには、まずPythonがインストールされている必要があります。 その上で、「pip」というコマンドを使ってFlaskをインストールします。 でも、その前に「仮想環境」というものを作っておくと、他のプロジェクトと混ざらなくて安心ですよ。


Hirokiのアイコン
【Hiroki】 仮想環境……ですか。自分のパソコンの中に、専用の作業部屋を作るようなイメージでしょうか?


Yukiのアイコン
【Yuki】 はい、まさにその通りです。 ターミナルやコマンドプロンプトで、次のように入力してみてください。

# プロジェクト用のディレクトリを作成して移動
mkdir my_flask_app
cd my_flask_app

# 仮想環境の作成
python -m venv venv

# 仮想環境の有効化(Windowsの場合)
venv\Scripts\activate
# 仮想環境の有効化(Mac/Linuxの場合)
source venv/bin/activate

# Flaskのインストール
pip install Flask

これで準備は完了です。 意外と簡単に、自分だけの開発環境が作れてしまうんですよ。


Hirokiのアイコン
【Hiroki】 できました!これでFlaskを使う準備が整ったんですね。 次は、実際に何か画面を表示させてみたいです。

最初のプログラム:Hello World


Yukiのアイコン
【Yuki】 では、一番シンプルなプログラムを書いてみましょう。 app.py という名前のファイルを作って、以下のコードを書き込んでみてください。 コードのインデントには気をつけてくださいね。

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World! Flaskへようこそ</p>"

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


Hirokiのアイコン
【Hiroki】 書けました!このコードはどうやって動かすんですか?


Yukiのアイコン
【Yuki】 ターミナルで python app.py と入力して実行してみてください。 そうすると、http://127.0.0.1:5000 というアドレスが表示されるはずです。 それをブラウザで開いてみると……どうでしょうか?


Hirokiのアイコン
【Hiroki】 わあ、「Hello, World! Flaskへようこそ」って表示されました! 自分の書いたプログラムがブラウザで見られるのって、なんだか感動しますね。


Yukiのアイコン
【Yuki】 ふふ、そう言ってもらえると嬉しいです。 この短いコードの中には、Web開発の大切な要素が詰まっているんですよ。 特に重要なのが、@app.route("/") という部分です。 これは「ルーティング」といって、どのアドレスにアクセスした時に、どの関数を実行するかを決める役割を持っています。 今回の場合は、トップページ(/)にアクセスしたら hello_world 関数が呼ばれる、という設定になっています。

ルーティングと動的なURL


Hirokiのアイコン
【Hiroki】 ルーティング……つまり、案内板のようなものですね。 もし、ページごとに表示を変えたい時はどうすればいいんですか?


Yukiのアイコン
【Yuki】 いい質問ですね。 URLの一部を「変数」として受け取ることもできるんですよ。 例えば、ユーザーの名前に合わせて挨拶を変える場合は、こんな風に書きます。

@app.route("/user/<name>")
def greet(name):
    return f"こんにちは、{name}さん!"


Hirokiのアイコン
【Hiroki】 <name> の部分が自由に入れ替わるんですね。 http://127.0.0.1:5000/user/Hiroki にアクセスしたら、「こんにちは、Hirokiさん!」って出るんでしょうか?


Yukiのアイコン
【Yuki】 その通りです。 このように、アクセスするURLによって内容を動的に変えられるのが、Webアプリケーションの面白いところだと思います。 特定の誰かの役に立つために作られた、小さなツールのような温かさを感じませんか……?

HTMLテンプレートの利用(Jinja2)


Hirokiのアイコン
【Hiroki】 でも、関数の中で直接HTMLを --return "<p>...</p>" みたいに書くのは、長い文章だと大変そうです。


Yukiのアイコン
【Yuki】 そうですね。本格的なWebサイトを作るには、Pythonのコードとデザイン(HTML)を分けたほうが管理しやすくなります。 そこで使うのが、「Jinja2(ジンジャツー)」というテンプレートエンジンです。 プロジェクトのフォルダの中に templates という名前のフォルダを作って、その中に index.html を作成してみましょう。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>Flaskのテスト</title>
</head>
<body>
    <h1>こんにちは、{{ user_name }}さん!</h1>
    <p>これはJinja2テンプレートを使って表示されています。</p>
</body>
</html>


Yukiのアイコン
【Yuki】 そして、Python側のコードを以下のように書き換えます。

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/hello/<name>")
def hello(name):
    return render_template("index.html", user_name=name)


Hirokiのアイコン
【Hiroki】 {{ user_name }} という部分が、Pythonから渡した名前に置き換わるんですね! これならHTMLをきれいに書けそうです。


Yukiのアイコン
【Yuki】 はい、render_template という関数を使うのがポイントです。 HTMLの中にプログラムの変数を埋め込めるので、デザインを崩さずに動的なページが作れるようになります。 Jinja2には他にも、{% if ... %} で条件分岐をしたり、{% for ... %} で繰り返し処理をしたりする機能もあるんですよ。

フォームデータの受け取りと処理


Hirokiのアイコン
【Hiroki】 Webサイトといえば、お問い合わせフォームや検索ボックスみたいに、ユーザーから入力を受け取ることも多いですよね。 Flaskではどうやってデータを処理するんですか?


Yukiのアイコン
【Yuki】 それはとても大切なポイントですね。 基本的には、「GET」「POST」といったHTTPメソッドを使ってデータのやり取りを行います。 まずは、簡単な入力フォームを作ってみましょうか。 新しいHTMLファイル login.htmltemplates フォルダに作ってみてください。

<form method="POST" action="/login">
    <input type="text" name="username" placeholder="ユーザー名を入力">
    <button type="submit">送信</button>
</form>


Yukiのアイコン
【Yuki】 これを受け取るPython側のコードは、このようになります。

from flask import request

@app.route("/login", methods=["GET", "POST"])
def login():
    if request.method == "POST":
        # フォームから送られてきたデータを取得
        username = request.form.get("username")
        return f"ようこそ、{username}さん!"
    # GETアクセスの場合はフォームを表示
    return render_template("login.html")


Hirokiのアイコン
【Hiroki】 request.method で、アクセスが「ページを表示するため(GET)」なのか「データを送信するため(POST)」なのかを判断しているんですね。


Yukiのアイコン
【Yuki】 正解です。request オブジェクトを使うことで、ブラウザから送られてきた様々な情報を取得できるんです。 ユーザーが何を入力したのか、どんな情報を求めているのか……。 それを読み取って適切な反応を返すのは、なんだか会話をしているみたいで少し緊張しますが、やりがいがある作業だと思います。

静的ファイルの管理


Hirokiのアイコン
【Hiroki】 サイトをかっこよくするために、CSSで装飾したり画像を表示したりしたいです。 そういうファイルはどうやって管理すればいいんでしょう?


Yukiのアイコン
【Yuki】 デザインへのこだわり、大切ですね。 Flaskでは、CSSや画像、JavaScriptなどのファイルは static という名前のフォルダに入れて管理するのがルールになっています。 例えば、static/css/style.css というファイルがある場合、HTMLからは次のように読み込みます。

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


Hirokiのアイコン
【Hiroki】 url_for という関数を使うんですね。


Yukiのアイコン
【Yuki】 はい、直接パスを書くよりも、この url_for を使ったほうが、後でフォルダ構成が変わった時などに対応しやすくなるのでおすすめです。 小さな工夫ですが、こういう積み重ねがエラーの少ない綺麗なサイト作りにつながる……かもしれません。

プロジェクトの構成を整理する


Hirokiのアイコン
【Hiroki】 だんだんファイルが増えてきましたね。 Flaskのプロジェクトって、最終的にどんなフォルダ構成になるのが一般的なんですか?


Yukiのアイコン
【Yuki】 規模にもよりますが、基本的な構成はこんな感じになることが多いですよ。

my_flask_app/
│
├── app.py             # メインのプログラム
├── static/            # CSS、画像、JSファイルなど
│   ├── css/
│   └── images/
├── templates/         # HTMLテンプレート
│   ├── index.html
│   └── login.html
└── venv/              # 仮想環境(触らなくて大丈夫です)


Yukiのアイコン
【Yuki】 これくらいの規模であれば、全体を見渡しやすくて初心者の方でも迷いにくいと思います。 夜、静かな時間にじっくりとコードを整理していくのは、とても落ち着く作業ですよ。

Flaskをもっと深く学ぶために


Hirokiのアイコン
【Hiroki】 Flask、シンプルだけど奥が深そうですね。 これからもっと複雑なアプリ、例えばデータベースを使った掲示板とかを作ってみたいです。


Yukiのアイコン
【Yuki】 いいですね、その意気です。 Flask自体はシンプルですが、「Flask-SQLAlchemy」という拡張ライブラリを使えばデータベース連携も簡単にできますし、ログイン機能を付けるためのライブラリもあります。 自分の必要なパーツを少しずつ集めて、理想の形に近づけていく……。 それはまるで、自分の居心地の良い場所を組み立てていくような楽しさがあるはずです。


Hirokiのアイコン
【Hiroki】 なんだかワクワクしてきました! まずは今回教えてもらったことを復習して、自分なりに小さなアプリを作ってみようと思います。


Yukiのアイコン
【Yuki】 ええ、ぜひ挑戦してみてください。 もし途中でエラーが出て困ってしまっても、あまり落ち込まないでくださいね。 機械は正直ですから、どこかに必ず理由があります。 ゆっくり時間をかけて向き合えば、きっと答えが見つかると思いますよ。 情報の根拠として、公式のドキュメントなども参考にしてみてくださいね。


Hirokiのアイコン
【Hiroki】 ありがとうございます、Yukiさん!また分からないことがあったら教えてください。


Yukiのアイコン
【Yuki】 はい、わたしでよければいつでも。 Hirokiくんが自分らしい素敵なアプリケーションを作れるようになるのを、応援していますね。 それでは、今日の講座はここまでです。お疲れ様でした。



「Flask」のサンプルコードを見る

< 組み込み関数
コラム一覧に戻る
学び方 >

この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。

「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。

「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。

➡ ココナラで制作・相談を依頼する(見積もり無料)


初心者から始められるPythonレッスン

プログラミング未経験者・初心者歓迎!
月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
テキストベースで時間を選ばない
4,000円/60分伴走型ビデオチャット指導も可能
● 高品質なサンプルコード
詳細はこちら

📩 質問・お問い合わせはこちら



AIアシスタント Yuki