CakePHPで開発しているけれどもMigrationsは捨ててRidgepoleを使っているはなし

タイトルは若干釣りです。

CakePHPにはマイグレーションツールとして、CakeDC/Migrations(CakePHP2)や、Phinxベースのcakephp/migrations(CakePHP3)があります。

とても有用ですし、CakePHP Bakerはみんな知っているツールです。自分もずっとお世話になっていました。

ただ、ちょいちょい困ることもあったので、最近はRidgepoleを使い始めています。

Ridgepole

github.com

Ridgepoleはクックパッド社で利用されているというマイグレーションツールです。

techlife.cookpad.com

Ridgepoleは最大の利点が、1つのSchemafileを管理するだけでスキーマのべき等性を担保してくれるということです。

RidgepoleはDSL自体がRailsActiveRecordと同じだということで、Railsだとさらに恩恵をうけられそうですが、この"べき等性"はCakePHPなプロジェクトでもかなりアツいです。

「1ファイルを管理すれば良い」という良さ

特に新規開発スタート時は、スキーマの変更頻度も高いです。

数人で開発するだけでもスキーマ変更のマイグレーションがコンフリクトし、作業をブロック。マイグレーションの順番を検討。チャットで「今からスキーマ触ります」と通知とかし始めて、最後は「もう一度マイグレーションファイルを消して1からやりなおそうか」ということに。。。

それが1つSchemafileをGit(などのバージョン管理システム)で管理するだけで良いというのは、かなりのメリットがあります。

データベース設計書的なファイルとMigrationsのファイル群の2種類を管理する必要がなくなったのも健全です(Schemafileのコメントでフィールドの論理名も管理可能ですし)。

今は深遠なる理由でデータベースコメントも管理したいので、あえて 0.6.3 を利用していますが、現在Rails5への対応を進めているらしい(さらに、Rails5のActiveRecordではデータベースコメントやカラムコメントも管理できるらしいのでもしかしたら。。)ので、楽しみです。

PHPな人も是非試してはいかがでしょうか?