入門

マイグレーション

データベースの構造変更を手順として記録・管理する仕組み。チーム開発や本番環境への適用を安全・確実に行うために使う。

概要

マイグレーション(migration)とは、データベースの構造を安全に変更するための仕組み。テーブルを追加したり、カラムを増やしたり、データを移し替えるといった変更を、手順として記録しておくことができる。

「migrate(移住する)」という英単語が語源で、データやデータベースの構造を新しい形に引っ越しさせるイメージ。


なぜ必要なのか

アプリを作っているとき、最初に決めたデータベースの設計を後から変えたくなることがよくある。

たとえば:

このとき、直接データベースをいじると何をいつ変えたか記録が残らない。チームメンバーや本番サーバーに同じ変更を漏れなく適用するのも難しくなる。

マイグレーションを使うと、変更手順をコードとして残せるので、誰でも同じ状態を再現できる。


基本的な構造

マイグレーションファイルは通常、変更の「適用(up)」と「元に戻す(down)」の2つをセットで定義する。

-- マイグレーション: usersテーブルにavatarカラムを追加する
ALTER TABLE users ADD COLUMN avatar TEXT DEFAULT ';

ファイル名に日時や連番を付けて管理するのが一般的。

migrations/
  0001_create_users.sql
  0002_add_avatar_to_users.sql
  0003_create_posts.sql

数字の順番に実行することで、データベースが段階的に正しい状態になっていく。


このサイトでの使われ方

このサイトは Cloudflare D1(SQLiteベースのデータベース)を使っており、migrations/ ディレクトリに .sql ファイルとしてマイグレーションを管理している。

新しいテーブルが必要になったときは、新しい番号のSQLファイルを追加して wrangler d1 migrations apply コマンドで適用する。


まとめ

やること マイグレーションなし マイグレーションあり
DB変更の記録 残らない SQLファイルで残る
他の環境への適用 手作業・漏れが出る コマンド1つで揃う
元に戻す 難しい ロールバックできる

データベースの変更履歴をコードと一緒に管理できるのが最大のメリット。