1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

ChatGPT Image 2026年6月18日 23_29_33.png

JavaやSpring Bootを学習していた時、以下コマンドを見かけました。

./gradlew flywayMigrate

私は初めて見たとき、

「何をしているコマンドなんだろう?」

と思いました。

今回は、Flywayを初めて知った頃の自分に向けて、

  • Flywayとは何か
  • なぜ必要なのか
  • flywayMigrateは何をしているのか

を初心者向けに整理してみます。

Flywayとは?

Flyway(フライウェイ)は、

データベースのバージョン管理ツール

です。

アプリケーションのソースコードをGitで管理するように、

データベースの設計変更も履歴として管理できます。

例えば、

V1__create_user_table.sql

ではユーザーテーブル作成。

V2__add_email_column.sql

ではメールアドレス列追加。

というように管理します。

なぜFlywayが必要なの?

例えば3人で開発しているとします。

AさんはUSERテーブルを作成。

BさんはALTER TABLEでカラムを追加。

この時、開発環境によってテーブル構造が違ってしまうことがあります!

そこでFlywayを使うと、全員が同じSQLを同じ順番で実行できます。

Flywayのイメージ

例えば次のSQLファイルがあるとします。

V1__create_user_table.sql
V2__add_email_column.sql
V3__create_order_table.sql

Flywayは、

まだ実行されていないファイルを順番に探し、

データベースへ適用します。

つまり、

V1
↓
V2
↓
V3

の順番で設計図を反映してくれるのです。

flywayMigrateとは?

実際によく見るコマンドについて。

./gradlew flywayMigrate

これは、

未実行のマイグレーションファイルをデータベースへ適用する

コマンドで、

「データベースを最新状態に更新してください」

という命令です。

実際の流れ

例えば、

データベースには

V1

まで適用済みだったとします。

新たに

V2
V3

が追加されました。

この状態で

./gradlew flywayMigrate

を実行すると、

V2
↓
V3

が順番に適用されます。

outOfOrderとは?

時々次のようなコマンドも見かけます。

./gradlew flywayMigrate -Pflyway.outOfOrder=true

通常Flywayは、

V1
V2
V3

の順番を守ります。

しかし後から

V1.5

のようなファイルを追加した場合、

通常はエラーになります。

そこで

outOfOrder=true

を指定すると、

番号順でなくても実行して良い

という動作になります。

Gitとの共通点

私はFlywayを理解するとき、

Gitに例えると分かりやすいと感じました。

Gitが

ソースコードの変更履歴

を管理するように、

Flywayは

データベースの変更履歴

を管理しています。

まとめ

今回学んだことを整理すると、

  • Flywayはデータベースのバージョン管理ツール
  • SQLファイルを履歴として管理できる
  • flywayMigrateは未実行のSQLを適用するコマンド
  • outOfOrder=trueは順番が前後しても実行するためのオプション

最初は「よく分からないコマンド」でしたが、

Flywayは

データベース版のGitのようなもの

と考えると理解しやすいと思います。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?