導入方法
以下の記事が参考になります!
Flywayとは
公式ドキュメント: Flyway Documentation
Flywayは、データベースのバージョン管理ツールです。
Flywayを使用すると、データベースのスキーマやデータの変更を簡単に管理でき、異なる環境での一貫性を保つことができます。Flywayは、SQLスクリプトを使用してマイグレーションを行い、データベースの状態を追跡します。
データベースのバージョン管理ツールとは
データベースのバージョン管理ツールは、簡単に言うと 「データベースの変更履歴を管理してくれるツール」 のことです。
例えば、あなたがアプリケーションを開発していて、最初はユーザー情報を保存するテーブルが「名前」と「メールアドレス」だけだったとします。でも、後から「電話番号」も保存したくなったとします。
このとき、データベースに新しく「電話番号」のカラムを追加する必要があります。でも、もしチームで開発していたら
- 開発環境のデータベース
- テスト環境のデータベース
- 本番環境のデータベース
- 他の開発者のローカルデータベース
これら全部に同じ変更を適用する必要があります。手動でやると、 「あれ、どこまで変更したっけ?」 「このテーブル、前回の変更が適用されてるかな?」 みたいに混乱しがちです。
そこで登場するのがFlywayのようなバージョン管理ツールです!
これがあると
- 変更をファイルで管理: データベースの変更をSQLファイルとして保存
- 順番を管理: どの変更をどの順番で適用するかを自動で管理
- 重複適用を防止: 同じ変更を2回適用してエラーになることを防ぐ
- 環境間の同期: すべての環境で同じ状態にできる
つまり、Gitでソースコードのバージョンを管理するように、データベースの構造や内容の変更もバージョン管理できるようになるんです!
Flywayの基本的な使い方
基本的な流れは以下の通りです
1. マイグレーションファイルを作成する
まず、データベースに対する変更をSQLファイルで作成します。ファイル名には特別なルールがあります。
V1__Create_user_table.sql
V2__Add_phone_number_to_user.sql
V3__Create_product_table.sql
ポイント
-
V
で始まる - バージョン番号(V1、V2、V3...)
- アンダースコア2つ(
__
) - わかりやすい説明
例:V1__Create_user_table.sql
CREATE TABLE users (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2. Flywayを実行する
作成したマイグレーションファイルをFlywayで実行します
flyway migrate
これだけでFlywayが自動的に
- まだ実行されていないマイグレーションを見つけて
- 順番通りに実行してくれます
3. 新しい変更を追加する
後から「電話番号」カラムを追加したくなったら、新しいマイグレーションファイルを作ります。
例:V2__Add_phone_number_to_user.sql
ALTER TABLE users ADD COLUMN phone VARCHAR(20);
また flyway migrate
を実行すれば、V2の変更だけが適用されます。
4. 現在の状態を確認する
「今どの状態なの?」と確認したいときは
flyway info
これで、どのマイグレーションが実行済みで、どれが未実行かがわかります。
よくある疑問
Q: 間違えて作ったマイグレーションファイルはどうするの?
A: まだ実行していなければファイルを修正すればOK。実行済みの場合は新しいマイグレーションファイルで修正します。
Q: チームメンバーと同期するには?
A: マイグレーションファイルをGitで管理して、みんなが flyway migrate
を実行すれば同じ状態になります!
Q: 本番環境にも同じように適用できるの?
A: はい!同じマイグレーションファイルを使って flyway migrate
するだけです。