Flaskでセッション管理を始めよう!Cookieを活用した仕組みをわかりやすく解説
生徒
「Webアプリって、どうやって前にログインした人を覚えてるんですか?」
先生
「いい質問だね!それは『セッション管理』と『Cookie(クッキー)』という仕組みを使って覚えているんだよ。」
生徒
「セッションとかクッキーって難しそう…。でも聞いたことあるかも!」
先生
「大丈夫。今回はPythonのFlask(フラスク)という簡単なWebアプリ作成ツールを使って、セッション管理の基本をわかりやすく解説していくよ!」
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. セッションとは何かを簡単に理解しよう
セッションとは、「この人は今このサイトを使っている」という状態を一時的に記録しておく仕組みです。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(クッキー)とは?
Cookie(クッキー)とは、Webサイトがあなたのブラウザに保存する小さなデータのことです。
たとえば、サイトを訪れたときに「前に訪れたことがある」などの情報を覚えておくために使われます。
Flaskでは、このCookieを使ってセッションIDという番号を保存します。この番号で、誰がどの情報を持っているかを区別します。
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. コードの動きをやさしく解説
上のコードでは、まずapp.secret_keyに秘密のキーを設定しています。これはセッション情報を暗号化するために必要です。
session['username']に名前を保存すると、その情報がCookieを通じて管理され、ページを移動しても覚えてくれます。
/logoutにアクセスすると、名前を忘れてログアウト状態になります。
6. セッションを使うときの注意点
セッションは便利ですが、以下のことに気をつけましょう。
- 秘密のキーは絶対に他人に知られないようにする
- 保存する情報は必要最低限にする(パスワードなどは絶対に入れない)
- ログアウト処理をきちんと作る
7. 実行結果を確認してみよう
以下は、ログイン後に表示されるメッセージの例です。
こんにちは、ゆいさん!
ログアウトすると、次のようになります。
ログインしていません。
8. Flaskセッションの裏側:実はCookieが使われている
実はFlaskのセッションは、内部的にはCookieに情報を保存しています。でも、自分でCookieを作ったりしなくても、sessionというFlaskの仕組みがすべてやってくれます。
この仕組みを使えば、ログイン情報やユーザーの好みなどを覚えておくことができます。
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アプリを作っていく際の大きな基盤となる部分なので、ぜひ今回の内容を実際に手を動かしながら繰り返し確認してみてください。使い慣れてくると、複雑な仕組みも自然と理解できるようになり、次のステップへ進む準備が整っていきます。
生徒
「セッションって、ただログインを覚えるためだけだと思っていたんですけど、こんなにいろいろできるんですね!」
先生
「そうなんだ。ユーザーの好みを保存したり、途中の入力内容を記録したりと、とても幅広く使える便利な仕組みなんだよ。」
生徒
「テーマをセッションに保存する例もすごくわかりやすかったです。こういう仕組みなら、自分のアプリにも応用できそうです!」
先生
「実際に自分のアプリに取り入れてみると、理解がさらに深まるよ。細かい部分は実際にコードを書きながら調整していけば大丈夫。」
生徒
「はい!次はログインフォームやユーザーごとのページも作ってみます!」