railsにおけるマイグレーションについて理解する


はじめに

Ruby on Railsを勉強していく中で、データ操作に関する色々な言葉や概念がわからなくなってしまったので、覚書として整理します。

マイグレーションへの疑問

自分がRailsを勉強していく中で、感じた疑問は以下の通りです。


その1 そもそもマイグレーション、モデル、マイグレーションファイルってなに?
その2 マイグレーションはどのタイミングで行うの?
その3 マイグレーションファイルは何ごとに作るの?

それぞれについて整理しながら考えていきます。

その1 そもそもマイグレーション、モデル、マイグレーションファイルってなに?

Railsでデータを操作する場合に、出てくるのが「マイグレーション」「モデル」「マイグレーションファイル」という用語。用語の意味への理解ができていない状態で勉強をすすめていくと、かならずどこかで「あれ、これどういう意味?」というのにぶち当たると思います。(私もそうでした)
なので、一度改めて用語への理解を深めることにしました。

一言で表すとこんな感じです。

● モデル
 データを操作するクラス。各テーブルごとに定義する

● マイグレーション
 テーブルの設計書を書き換えること

● マイグレーションファイル
 設計書を書き換え方を記載したもの

すこしだけ詳しく見ていきます。

● モデル

RailsはMVCというデザインパターンを採用しています。イメージは画像のような形です。

各コンポーネントがそれぞれの役割を担っている中で、モデル(Model)の役割はデータとビジネスロジックです。特にデータベース操作の際に用いられます。操作のためのロジックをもっているのが、ここです。railsでは、クラスという形でモデルが定義されています。
モデルは、テーブルごとに作成され各モデルを通じてテーブルの作成・削除などの操作を行います。(紫色の吹き出し内のようなイメージ)

● マイグレーション

マイグレーションという言葉は、英語で「移行」という意味。
そして、Railsにおいての「マイグレーション」とは、「テーブルのスキーマの変更すること」を意味します。
ちなみに、スキーマは「テーブルの大枠を決める設計書のこと」なので、もっとざっくり言うと、マイグレーションは、「テーブルの設計書を変更すること」ということになります。

● マイグレーションファイル

Railsでは、マイグレーションをする際に「マイグレーションファイル」というものを用います。
ファイル内で、スキーマをどのように変更するかを定義し、このファイルを元に変更を行います。

その2 マイグレーションはどのタイミングで行うの?

その1で整理した用語の意味から、マイグレーションを行うタイミングというのは、「テーブルの設計書を変更する際」ということがわかります。
具体的には、テーブルの作成や、カラムの追加などです。
レコードの追加・編集・削除は「設計書自体の書き換え」にはならないということを念頭に置いておいてください。ですので、このような操作はマイグレーションにあたりません。

その3 マイグレーションファイルは何ごとに作るの?

単刀直入にいえば、「マイグレーションを行うタイミング=テーブルの設計書を変更するタイミング」に作成します。

さいごに

概念のみ説明してきましたが、実際にはRailsでの操作を含め実際に動かしてみないことには感覚が掴みづらいかもしれません。私自身も理解ができているか微妙なところです・・・引き続き勉強していきたいと思います。