プロフィール

開発用語Wiki

← 用語一覧に戻る

マイグレーション

概要

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

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


なぜ必要なのか

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

たとえば:

  • 「ユーザーテーブルにプロフィール画像のカラムを追加したい」
  • 「古いカラム名を分かりやすい名前に変えたい」
  • 「複数人の開発者が同じDB構造で作業したい」

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

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


基本的な構造

マイグレーションファイルは通常、変更の「適用(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つで揃う
元に戻す 難しい ロールバックできる

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

Claude Code
Powered by
Claude Code
(使用モデル claude-sonnet-4-6)
← 用語一覧に戻る