カテゴリ: Flask 更新日: 2026/01/04

Flaskでセッション管理を始めよう!Cookieを活用した仕組みをわかりやすく解説

Flaskでセッション管理を始めよう!Cookieを活用した仕組みをわかりやすく解説
Flaskでセッション管理を始めよう!Cookieを活用した仕組みをわかりやすく解説

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

生徒

「Webアプリって、どうやって前にログインした人を覚えてるんですか?」

先生

「いい質問だね!それは『セッション管理』と『Cookie(クッキー)』という仕組みを使って覚えているんだよ。」

生徒

「セッションとかクッキーって難しそう…。でも聞いたことあるかも!」

先生

「大丈夫。今回はPythonのFlask(フラスク)という簡単なWebアプリ作成ツールを使って、セッション管理の基本をわかりやすく解説していくよ!」

1. Flaskとは?

1. Flaskとは?
1. Flaskとは?

Flask(フラスク)は、Pythonというプログラミング言語を使ってWebアプリケーションを作るための軽量なフレームワークです。「フレームワーク」と聞くと難しく感じるかもしれませんが、イメージとしては “Webアプリ作りに必要な道具がひとまとめになったセット” のようなものだと思ってください。

たとえば、ページを表示するしくみやURLごとに処理を切り替える仕組みなど、毎回一から作ると大変な部分を、Flaskがあらかじめ用意してくれています。そのおかげで、プログラミング初心者でも少ないコードでWebアプリを動かすことができます。ファイル数も少なくて済むので、「まずは小さく試してみたい」という学習にもぴったりです。

実際に、Flaskを使うと次のような、とてもシンプルなサンプルプログラムで「画面に文字を表示するだけのミニWebアプリ」を作ることができます。


from flask import Flask

app = Flask(__name__)  # Flaskアプリの本体を作成

@app.route("/")
def index():
    return "はじめてのFlaskアプリです"

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

最初のfrom flask import Flaskは、「Flaskという道具を使いますよ」という宣言です。app = Flask(__name__)でアプリの本体を1つ作り、@app.route("/")の部分で「ブラウザでトップページ(/)にアクセスされたら、下に書いたindex関数を実行してね」と指示しています。関数の中でreturnしている文字列が、そのままブラウザの画面に表示される仕組みです。

このように、ほんの数行のコードで自分だけのWebページを動かせるのがFlaskの魅力です。この記事では、このFlaskを土台にしながら、セッション管理やCookieを使って「ユーザーを覚えるWebアプリ」の作り方を順番に見ていきます。

2. セッションとは何かを簡単に理解しよう

2. セッションとは何かを簡単に理解しよう
2. セッションとは何かを簡単に理解しよう

セッションとは、「この人は今このサイトを使っている」という状態を一時的に記録しておく仕組みです。Webアプリは本来ページを移動すると情報がリセットされてしまいますが、セッションを使うことで、ログインしたユーザーが同じ人であることを継続して把握できます。

たとえば、ログイン後にページを移動しても毎回パスワードを聞かれないのは、セッションが「この人はログイン中だよ」と覚えてくれているからです。セッションは、Webアプリの中にある“短期的なメモ帳”のような役割を持っています。

イメージしやすいように、簡単なサンプルを見てみましょう。次のコードでは、セッションに「名前」を保存し、保存された場合だけ挨拶を表示します。


from flask import Flask, session

app = Flask(__name__)
app.secret_key = "secret_key"

@app.route("/set")
def set_session():
    session["name"] = "みさき"
    return "セッションに名前を保存しました。"

@app.route("/get")
def get_session():
    if "name" in session:
        return f"こんにちは、{session['name']}さん!"
    return "名前が保存されていません。"

このように、セッションは「あるページで登録した情報を、別のページでも引き継ぐ」ための仕組みとして動いてくれます。複雑な設定をしなくても、Flaskが用意しているsessionを使うだけで簡単に扱えるため、初心者でも安心して使い始めることができます。

3. Cookie(クッキー)とは?

3. Cookie(クッキー)とは?
3. Cookie(クッキー)とは?

Cookie(クッキー)とは、Webサイトがあなたのブラウザに保存する小さなデータのことです。

たとえば、サイトを訪れたときに「前に訪れたことがある」などの情報を覚えておくために使われます。

Flaskでは、このCookieを使ってセッションIDという番号を保存します。この番号で、誰がどの情報を持っているかを区別します。

4. Flaskでセッション管理をする方法

4. Flaskでセッション管理をする方法
4. Flaskでセッション管理をする方法

それでは、実際にFlaskでセッションを使う方法を見てみましょう。以下はセッションを使って名前を記憶し、別のページで表示する例です。


from flask import Flask, session, redirect, url_for, request

app = Flask(__name__)
app.secret_key = 'your_secret_key'  # セッションの暗号化に必要

@app.route('/')
def index():
    if 'username' in session:
        return f"こんにちは、{session['username']}さん!"
    return 'ログインしていません。'

@app.route('/login', methods=['POST', 'GET'])
def login():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return '''
        <form method="post">
            名前: <input type="text" name="username">
            <input type="submit" value="ログイン">
        </form>
    '''

@app.route('/logout')
def logout():
    session.pop('username', None)
    return redirect(url_for('index'))

5. コードの動きをやさしく解説

5. コードの動きをやさしく解説
5. コードの動きをやさしく解説

上のコードでは、まずapp.secret_keyに秘密のキーを設定しています。これはセッション情報を暗号化するために必要です。

session['username']に名前を保存すると、その情報がCookieを通じて管理され、ページを移動しても覚えてくれます。

/logoutにアクセスすると、名前を忘れてログアウト状態になります。

6. セッションを使うときの注意点

6. セッションを使うときの注意点
6. セッションを使うときの注意点

セッションは便利ですが、以下のことに気をつけましょう。

  • 秘密のキーは絶対に他人に知られないようにする
  • 保存する情報は必要最低限にする(パスワードなどは絶対に入れない)
  • ログアウト処理をきちんと作る

7. 実行結果を確認してみよう

7. 実行結果を確認してみよう
7. 実行結果を確認してみよう

以下は、ログイン後に表示されるメッセージの例です。


こんにちは、ゆいさん!

ログアウトすると、次のようになります。


ログインしていません。

8. Flaskセッションの裏側:実はCookieが使われている

8. Flaskセッションの裏側:実はCookieが使われている
8. Flaskセッションの裏側:実はCookieが使われている

実はFlaskのセッションは、内部的にはCookieに情報を保存しています。でも、自分でCookieを作ったりしなくても、sessionというFlaskの仕組みがすべてやってくれます。

この仕組みを使えば、ログイン情報やユーザーの好みなどを覚えておくことができます。

9. セッションとCookieの違いをおさらいしよう

9. セッションとCookieの違いをおさらいしよう
9. セッションとCookieの違いをおさらいしよう

最後に、セッションとCookieの違いをかんたんにまとめます。

  • セッション:一時的に情報を保存。Flaskが管理。ユーザーには見えない。
  • Cookie:ブラウザに保存される。ユーザーが直接見られる情報。

セッションは、Cookieを使ってIDを管理し、実際のデータはサーバー側で安全に保持します。

まとめ

まとめ
まとめ

Flaskでのセッション管理は、Webアプリケーションを作るうえで欠かせない基礎知識の一つです。今回の記事では、セッションがどのような役割を果たし、どのようにCookieと連動して動いているのかを丁寧に確認してきました。特に、ログイン状態を覚えておく仕組みや、ページを移動しても継続して情報を参照できる流れは、実際にアプリを作り始めると必ず直面する部分です。はじめてセッションという言葉を聞いたときには少し難しそうに感じるかもしれませんが、Flaskでは複雑な設定が必要なく、シンプルなコードで利用できるため、初心者でも一歩ずつ理解しながら実装していける点が大きな魅力です。

セッションの基本的なしくみは「一時的にユーザーを識別する情報を保持する」というものです。そして、Flaskのセッション機能は内部でCookieを利用してセッションIDを管理し、サーバー側には実際のデータが安全に保存されます。こうした構造を理解すると、ログイン状態の管理だけでなく、ユーザー設定の保存や一時的なフォーム入力の記録など、さまざまな用途に応用できるようになります。また、秘密鍵の設定や保存するべき情報の扱いなど、基本的な注意点を押さえておくことで、より安全なWebアプリケーションを作ることも可能になります。

さらに、今回の内容を土台に、より一歩進んだ機能を作ることもできます。例えば、ログインフォームから受け取った情報をセッションに保存し、ユーザーごとに画面の表示内容を変えたり、アプリ内での行動を追跡して利用状況に合わせた案内を表示したりといったことが柔軟に行えます。セッションの値は辞書のように扱えるため、必要な値を自由に追加・削除することができ、使い方の幅が非常に広い点も特徴です。HTMLフォームや画面遷移と組み合わせることで、より完成度の高いアプリに仕上がっていきます。

以下では、今回の内容を踏まえて少し応用的なサンプルコードを紹介します。ログイン状態を保持しつつ、ユーザーのテーマ設定をセッションに保存して画面に反映する例です。セッションを複数の値で管理する流れがわかる実用的なサンプルになっています。


from flask import Flask, session, redirect, url_for, request

app = Flask(__name__)
app.secret_key = 'your_secret_key'

@app.route('/')
def index():
    username = session.get('username')
    theme = session.get('theme', 'ライト')

    if username:
        return f"こんにちは、{username}さん!(テーマ:{theme})"
    return "ログインしていません。"

@app.route('/login', methods=['POST', 'GET'])
def login():
    if request.method == 'POST':
        session['username'] = request.form['username']
        session['theme'] = request.form.get('theme', 'ライト')
        return redirect(url_for('index'))

    return '''
        <form method="post">
            名前: <input type="text" name="username"><br>
            テーマ選択:
            <select name="theme">
                <option value="ライト">ライト</option>
                <option value="ダーク">ダーク</option>
            </select><br>
            <input type="submit" value="ログイン">
        </form>
    '''

@app.route('/logout')
def logout():
    session.pop('username', None)
    session.pop('theme', None)
    return redirect(url_for('index'))

このように、セッションは単にユーザー名を覚えるためだけでなく、アプリ全体の振る舞いを変えるための状態管理にも活用できます。特に、テーマ設定のような「ユーザーごとに異なる好み」を反映できる仕組みは、実際のサービスでもよく使われる考え方です。ログアウト処理では保存した値を確実に削除しておくことで、安全性の面でも健全なアプリケーションになります。

セッションの理解が進むと、画面遷移やログインシステムがぐっと扱いやすくなります。これからFlaskを使って本格的なWebアプリを作っていく際の大きな基盤となる部分なので、ぜひ今回の内容を実際に手を動かしながら繰り返し確認してみてください。使い慣れてくると、複雑な仕組みも自然と理解できるようになり、次のステップへ進む準備が整っていきます。

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

生徒

「セッションって、ただログインを覚えるためだけだと思っていたんですけど、こんなにいろいろできるんですね!」

先生

「そうなんだ。ユーザーの好みを保存したり、途中の入力内容を記録したりと、とても幅広く使える便利な仕組みなんだよ。」

生徒

「テーマをセッションに保存する例もすごくわかりやすかったです。こういう仕組みなら、自分のアプリにも応用できそうです!」

先生

「実際に自分のアプリに取り入れてみると、理解がさらに深まるよ。細かい部分は実際にコードを書きながら調整していけば大丈夫。」

生徒

「はい!次はログインフォームやユーザーごとのページも作ってみます!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

FlaskとはどんなWebフレームワークですか?初心者が学ぶメリットはありますか?

FlaskはPythonでWebアプリケーションを開発するための軽量フレームワークで、必要な機能だけを追加して使える柔軟さがあります。シンプルな構造で学びやすく、セッション管理やCookieの操作などWebの基礎を理解しやすいため、初心者にも最適です。
カテゴリの一覧へ
新着記事
New1
Django
Djangoのプロジェクトとアプリの違いを徹底解説!初心者でも迷わない構造の考え方
New2
Flask
FlaskでRQ(Redis Queue)を使って非同期タスク管理を行う方法|初心者向けやさしい解説
New3
Flask
FlaskでCookieを安全に使う方法!HttpOnly・Secureフラグの使い方を徹底解説
New4
Flask
Flask‑RESTfulでREST APIを構築する手順まとめ!初心者向けにやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flaskアプリの環境変数設定方法!安全で柔軟な構成を実現しよう
No.3
Java&Spring記事人気No3
Django
DjangoとFlaskの違いを完全比較!初心者でもわかるPythonフレームワーク入門
No.4
Java&Spring記事人気No4
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.5
Java&Spring記事人気No5
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.6
Java&Spring記事人気No6
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.7
Java&Spring記事人気No7
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説
No.8
Java&Spring記事人気No8
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説