この記事は東京海洋大学NePPの Advent Calendar 2025の2日目です。
Railsにおけるマイグレーションとは一体なんぞやということで自分なりの解釈をアウトプットする場として記事を書くため、自分へのメモとして置いておきます。
1. そもそもどういうもの?(役割)
SQL(CREATE TABLE や ALTER TABLE など)を直接書かずに、Rubyのコードでデータベースの構造を変更できるものです。
昔のやり方: 手動でSQLを書いてDBを変更する → チームメンバーがそれぞれ自分のPCで同じSQLを実行しないといけない(ミスが起きやすい)。
Railsのマイグレーション: 「変更内容を書いたファイル」をGitで共有 → コマンド1つ(rails db:migrate)で、全員のDBが同じ状態になる。
2. 具体的なイメージ
マイグレーションファイルは、「データベースへの指示書」のようなものです。
例えば、「ユーザー(users)テーブルを作りたい」という場合、以下のようなファイルが生成されます。
db/migrate/20251202100000_create_users.rb
(ファイル名には日付時刻がつくので、実行順序が保たれます)
class CreateUsers < ActiveRecord::Migration[7.0]
def change
create_table :users do |t|
t.string :name # nameという文字のカラムを作る
t.string :email # emailという文字のカラムを作る
t.timestamps # created_at と updated_at を自動で作る
end
end
end
このファイルを保存して rails db:migrate を実行すると、RailsがこれをSQLに翻訳して、データベースにテーブルを作成してくれます。
3. 主なメリット
「元に戻せる」機能 (Rollback)
「間違えてカラムを追加しちゃった!」という時、rails db:rollback と打つだけで、1つ前の状態にきれいに戻してくれます。
チーム開発での同期
「新しい機能のためにテーブル増やしたよ」と口頭で伝えなくても、コード(マイグレーションファイル)を共有すれば、他のメンバーはコマンド一発で環境を同期できます。