【すきーままいぐれーしょん】

スキーママイグレーション とは?

💡 DBの「設計図」をバージョン管理する
📌 このページのポイント
スキーママイグレーション — DBのバージョン管理 V1: 初期 users テーブル (id, name, email) UP V2: カラム追加 + age カラム + phone カラム UP V3: テーブル追加 + orders テーブル + 外部キー設定 UP V4 最新 状態 ロールバック(DOWN): 問題があれば前のバージョンに戻せる マイグレーションファイル 001_create_users.sql 002_add_age_phone.sql 003_create_orders.sql メリット ✅ DB変更をコードで管理・共有できる ✅ チーム全員が同じDB構造を再現 ✅ 問題時にロールバック可能
スキーママイグレーションのイメージ
ひよこ ひよこ

なんで手動でALTER TABLEしちゃダメなの?

ペンギン先生 ペンギン先生

手動だと「どの環境にどの変更が適用されているか」がわからなくなるんだ。開発環境にはカラム追加済みだけどステージングにはまだ…という状態が起きる。マイグレーションツールなら「どのバージョンまで適用済みか」を管理してくれるから、環境差異が生まれないよ

ひよこ ひよこ

どんなツールがある?

ペンギン先生 ペンギン先生

Java系ならFlyway/Liquibase、RailsならActive Record Migrations、Node.jsならPrisma Migrate/Knex、PythonならAlembic/Django Migrationsが定番。フレームワーク組み込みのものと、独立したツールの2タイプがあるよ

ひよこ ひよこ

本番環境への適用って怖くない?

ペンギン先生 ペンギン先生

怖いから慎重にやるよ。①ステージング環境で事前検証、②バックアップ取得、③メンテナンスウィンドウの確保、④ロールバック手順の確認。テーブルロックが長時間発生する変更(大量データのカラム追加など)は、オンラインスキーマ変更ツール(pt-online-schema-change、gh-ost)を使うこともあるよ

ひよこ ひよこ

ロールバックは簡単にできる?

ペンギン先生 ペンギン先生

マイグレーションツールにはdown(ロールバック)機能があるけど、データの削除を伴う変更(カラム削除など)は完全なロールバックが難しい。だから「まずカラムを追加→アプリを切り替え→旧カラムを削除」のように段階的に進める「Expand and Contract」パターンが推奨されるよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「スキーママイグレーション」って出てきたら「DBのテーブル構造の変更をコードで管理する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Schema Migration」 = スキーマ移行
💬 Migration(移行)の名前通り、DBスキーマを現在の状態から次の状態に「移行」するよ
← 用語集にもどる