カテゴリ: Flask 更新日: 2025/12/14

Flaskでマイグレーション管理を始めよう!Flask-Migrateの使い方と手順

Flaskでマイグレーション管理を始めよう!Flask-Migrateの使い方と手順
Flaskでマイグレーション管理を始めよう!Flask-Migrateの使い方と手順

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

生徒

「Flaskでデータベースを使うとき、データの設計が変わったらどうすればいいんですか?」

先生

「そんなときに役立つのが、Flask-Migrateというツールです。データベースの設計を途中で変えるときに便利ですよ。」

生徒

「フラスク・マイグレートってなんだか難しそうですね…。どうやって使うんですか?」

先生

「大丈夫ですよ。これから一緒に、初心者でもわかるようにゆっくり説明していきます!」

1. Flask-Migrateってなに?

1. Flask-Migrateってなに?
1. Flask-Migrateってなに?

Flask-Migrate(フラスク・マイグレート)は、Flaskアプリで使うデータベースの「変更履歴」を管理してくれる、とても便利な道具です。アプリを作っている途中で「やっぱり項目を増やしたい」「このデータの形式を少し変えたい」と思うことはよくあります。そのたびにデータベースを全部作り直すのは大変ですが、Flask-Migrateがあれば変更点だけを反映できるため、初心者でも安心して扱えます。

たとえば、最初は「名前」と「年齢」だけだったユーザー情報に、あとから「メールアドレス」も記録したくなる場面があります。普通はデータベースの構造を変えるために専門的な作業が必要ですが、Flask-Migrateを使うと、変更内容を自動で記録し、その記録をもとにデータベースへ変更を反映できます。今あるデータを壊さずに変更できる点が大きな魅力です。

こうしたデータベースの構造変更のことを、専門用語でマイグレーション(migration)と呼びます。コードの変更に合わせてデータベースも少しずつ進化させていくイメージです。実際にどのように変更が反映されるのか、初心者でも理解しやすいように小さなサンプルで見てみましょう。


# マイグレーションのイメージをつかむための簡単な例
# (このコードは動作サンプルではなく概念をつかむためのものです)

# もともとのデータ構造
User:
  - name
  - age

# あとからメールアドレスを追加したい場合
User:
  - name
  - age
  - email  ← これを追加!

# Flask-Migrateは「追加されたよ」という記録を作り、
# その記録をもとにデータベースを安全に更新してくれます。

このように、Flask-Migrateはアプリ開発中の「後から気づいた変更」に柔軟に対応できる心強い存在です。これを知っておくだけで、データベースの扱いがぐっと楽になります。

2. Flask-Migrateを使う準備をしよう

2. Flask-Migrateを使う準備をしよう
2. Flask-Migrateを使う準備をしよう

Flask-Migrateを使い始めるには、まず土台となる3つのツールをインストールしておく必要があります。これらはFlaskでデータベースを扱うときに欠かせない道具で、家づくりに例えるなら「基礎」「柱」「設計書」のような役割を持っています。それぞれがどんな働きをするのかを知っておくと、この先のステップがぐっと分かりやすくなります。

  • Flask:PythonでWebアプリを作るための本体となるフレームワーク
  • Flask-SQLAlchemy:複雑なデータベース操作を簡単に書けるようにする補助ツール
  • Flask-Migrate:データベースの変更履歴を管理し、後から構造を変えるときの手間を減らしてくれるツール

この3つはセットで使われることが多く、以下のコマンドを入力するだけでまとめてインストールできます。難しい仕組みを理解していなくても、「アプリのための必要な道具をそろえる作業」と考えれば大丈夫です。


pip install Flask Flask-SQLAlchemy Flask-Migrate

上のコマンドは、パソコンに対して「アプリ開発に必要な道具を準備してください」とお願いするようなものです。黒い画面(ターミナル)に打ち込んでEnterを押すと、自動で必要なパッケージが取り込まれます。これでFlask-Migrateを使う準備は整い、次のステップでアプリ作成へ進むことができます。

3. Flaskアプリを作ってマイグレートを使う手順

3. Flaskアプリを作ってマイグレートを使う手順
3. Flaskアプリを作ってマイグレートを使う手順

ここでは、実際にFlaskアプリを作りながら、Flask-Migrateがどのように動くのかを体験してみましょう。まずは「名前だけを記録できる」シンプルなユーザーモデルを用意し、データベースとつなげる準備を進めます。初めて触る人でも迷わないよう、順を追って一つずつ設定していきます。


from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

# Flaskアプリの基本設定
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///sample.db'  # データを保存する場所
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

# データベースとマイグレートの準備
db = SQLAlchemy(app)
migrate = Migrate(app, db)

# ユーザーモデル(データの形を決める部分)
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))  # ユーザー名を保存するカラム

ここで使っている sqlite は、ファイルひとつで動く軽量データベースです。インストール作業も必要なく、初心者でも「まずは試してみる」ことがしやすいのが特徴です。また、User クラスがデータベースの「設計図」となり、どんな項目を保存するかを決めています。これをもとにFlask-Migrateが変更履歴を管理してくれるので、後から項目を増やしたり修正したりするのも簡単になります。

4. データベースの初期化とマイグレーションの流れ

4. データベースの初期化とマイグレーションの流れ
4. データベースの初期化とマイグレーションの流れ

次に、データベースの初期設定とマイグレーションの流れを見ていきます。以下のコマンドを1つずつ実行します。

① マイグレーションの初期化

flask db init

migrationsというフォルダが自動で作られます。これは変更履歴を記録しておくフォルダです。

② モデルの変更を反映する準備

flask db migrate -m "初回のマイグレーション"

「どんな変更をしたのか」がmigrationsフォルダの中に記録されます。

③ 変更をデータベースに適用

flask db upgrade

これでsample.dbUserテーブルが作られます。

5. マイグレーションの変更例を見てみよう

5. マイグレーションの変更例を見てみよう
5. マイグレーションの変更例を見てみよう

たとえば、あとからemailという項目(カラム)を追加したくなったとします。その場合、モデルを以下のように変更します。


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    email = db.Column(db.String(120))

変更したら、もう一度以下のコマンドを実行します。

  • flask db migrate -m "emailカラムを追加"
  • flask db upgrade

これで、データベースに「メールアドレス」の項目が追加されます。

6. Flask-Migrateでよく使うコマンドまとめ

6. Flask-Migrateでよく使うコマンドまとめ
6. Flask-Migrateでよく使うコマンドまとめ

Flask-Migrateを使う上で覚えておきたいコマンドは以下の通りです。

  • flask db init:マイグレーションの初期設定
  • flask db migrate -m "メッセージ":変更点の記録
  • flask db upgrade:記録した変更を実際に反映
  • flask db downgrade:1つ前の状態に戻す
  • flask db history:これまでの変更履歴を確認

コマンド名が英語で難しく見えるかもしれませんが、「アップグレード」は「上げる」、「ダウングレード」は「下げる」と覚えると少し楽になります。

7. 初心者が注意するポイント

7. 初心者が注意するポイント
7. 初心者が注意するポイント

Flask-Migrateを使うときの注意点を紹介します。

  • モデルを変更したら、必ず migrate → upgrade を忘れずに!
  • 同じ名前のテーブルやカラムを何度も作らないようにしましょう。
  • 変更した内容にコメントをつける(-m "◯◯を追加")と、後で見返しやすいです。

初心者でも丁寧にやれば、間違えることはありません。何度も手を動かして覚えていきましょう。

8. Flask-Migrateを使うメリットとは?

8. Flask-Migrateを使うメリットとは?
8. Flask-Migrateを使うメリットとは?

Flask-Migrateを使うと、次のような良いことがあります。

  • アプリを作りながら、柔軟にデータベースを変更できる
  • 途中で設計を変えても安心して反映できる
  • チーム開発でも変更履歴を管理しやすい

Webアプリを長く運用するには、こうした変更の履歴管理がとても大切になります。

まとめ

まとめ
まとめ

Flaskでデータベースを扱うとき、アプリの成長に合わせてテーブルの構造を変更したくなる場面はとても多くあります。名前だけだったユーザー情報にメールアドレスを追加したり、住所や登録日時を増やしたり、アプリ仕様の変化に応じて柔軟にデータ構造を変えていく必要があります。そこで力を発揮するのがFlask-Migrateです。マイグレーションという仕組みを使うことで、既に動いているデータベースを壊さず、そのまま変更を加えながら開発を続けることができます。 マイグレーションはWebアプリ開発における基本であり、長期的にアプリを育てていく上で欠かせない作業です。今回の記事では、初期設定からコマンドの流れ、モデル変更による反映手順まで、一連の流れを丁寧に学びました。特にflask db migrateflask db upgradeの関係を押さえておくことで、どんな変更にも落ち着いて対応できるようになります。

Flask-Migrateが便利なのは、ただ変更を記録するだけでなく、履歴を保存しておける点にもあります。チーム開発では「いつ」「誰が」「どんな変更を加えたのか」を追いかけやすくなるため、複数人での作業でも混乱が起こりにくくなります。また、変更を元に戻したいときはflask db downgradeで簡単にロールバックできるため、間違えてテーブル構造を変えてしまったときにも安心です。こうした履歴管理の仕組みは、規模が大きくなるほど重要度が増します。アプリを運用しながら少しずつ改善していく実践的な開発スタイルにおいて、Flask-Migrateは非常に心強いツールです。

実際にモデルを編集してカラムを追加する例では、Userモデルにemailを追加し、それをマイグレーションで反映させる一連の手順を体験しました。この流れを繰り返すうちに、データベース設計の理解が深まり、アプリの仕様変更にも対応しやすくなります。また、マイグレーションファイルには変更内容が丁寧に記録されるため、後から見返すと、アプリの成長の歴史そのものを確認することができます。こうした可視化は、開発者にとって大きな助けになります。

初心者がつまずきやすいポイントとしては、「モデルを変更したのに反映されない」というトラブルがありますが、これは多くの場合、migrateを忘れているか、upgradeを実行していないことが原因です。記事中で紹介したコマンドの流れをしっかり覚えておけば、ほとんどの問題は回避できます。また、コメントを正しくつける習慣をつけることで、履歴が読みやすくなり、長期的に管理しやすくなります。

さらに、Flask-MigrateはSQLAlchemyと自然に連携するため、Pythonコードのモデルの変更だけでデータベースの操作が完結します。開発の自由度が高まり、Pythonらしいシンプルな記述でプロジェクトを進められるのも大きな魅力です。アプリを育てながら変更を積み重ねる楽しさを存分に感じることができるはずです。特に、実務に近い開発経験を積みたい人にとっては、マイグレーションの習得は避けて通れない道です。

サンプルプログラム(振り返り用)


# モデル変更例:emailカラムの追加
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    email = db.Column(db.String(120))

# マイグレーション反映コマンド
flask db migrate -m "emailカラム追加"
flask db upgrade
先生と生徒の振り返り会話

生徒:「マイグレーションって聞くと難しい感じがしたけど、仕組みを理解したらすごく便利なんだって分かりました!」

先生:「そうでしょう。Flask-Migrateはアプリを長く育てていくための重要な道具だから、仕組みさえ分かればとても強力ですよ。」

生徒:「モデルを変更して migrate、そして upgrade。この流れを覚えれば怖くないですね。」

先生:「その通り。忘れずに実行すれば、データベースもアプリもきれいに成長していきます。」

生徒:「コメントをつけるのも大事なんですね。履歴が見やすくなるっていうのは気づきませんでした。」

先生:「特にチーム開発では必須ですよ。誰がどんな変更をしたのか、後からでもすぐ分かるのはとても助かります。」

生徒:「今日の内容を踏まえて、もっと複雑なアプリにも挑戦してみたくなりました!」

先生:「いいですね。その意欲があれば、どんなアプリも作れるようになりますよ。」

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

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

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

Flask-Migrateとは何ですか?初心者向けにわかりやすく教えてください。

Flask-Migrate(フラスク・マイグレート)とは、Flaskアプリで使用しているデータベースの構造を後から変更したいときに便利な拡張機能です。既存のデータを壊さずに、新しいカラムを追加したり、テーブルを編集したりすることができます。初心者でも簡単にデータベースのマイグレーションを管理できるようになります。
カテゴリの一覧へ
新着記事
New1
Flask
FlaskでCSRF対策を実装する方法!安全なフォーム送信を学ぼう
New2
Python
Pythonの文字列型(str)を完全解説!連結・分割・検索の方法を紹介
New3
Python
Pythonで日付文字列から曜日を取得する方法を完全ガイド!初心者でもわかる日時処理入門
New4
Flask
FlaskアプリのSSL設定方法をやさしく解説!初心者でもわかるHTTPS対応の手順
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.3
Java&Spring記事人気No3
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.4
Java&Spring記事人気No4
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.5
Java&Spring記事人気No5
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.6
Java&Spring記事人気No6
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.7
Java&Spring記事人気No7
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.8
Java&Spring記事人気No8
Flask
FlaskアプリのSECRET_KEYの設定方法を完全ガイド!初心者でもわかるセキュリティ対策