PhinxはPHP製、MIT Licenseのオープンソース・ソフトウェアです。

Ruby on Railsを使っていて他の言語に戻れない一つの理由がデータベースのマイグレーションです。一般的に煩雑になりがちなデータベースのスキーマ管理が適切に管理されるようになります。そんなマイグレーション管理をPHPに提供してくれるのがPhinxです。

[![](http://images.moongift.jp/2013/09/Screenshot 2013-09-07 17.34.06_thumb.1378563747.png)](http://images.moongift.jp/2013/09/Screenshot 2013-09-07 17.34.06.1378563747.png)
最初にinitを実行して初期化します。DB接続情報を記したYAMLファイルが生成されます。

[![](http://images.moongift.jp/2013/09/Screenshot 2013-09-07 17.34.42_thumb.1378563751.png)](http://images.moongift.jp/2013/09/Screenshot 2013-09-07 17.34.42.1378563751.png)
マイグレーションファイルはこのようにPHPのコードになっています。

実際の書き方の例。

テーブルを取ってきて、addColumでフィールドを追加し、saveを実行したタイミングでSQLが実行される仕組みです。upとdownを書くことでDB構造変更を差し戻すことができます。環境も複数定義でき、MySQLまたはPostgreSQLをサポートしています。

MOONGIFTはこう見る

Phinxの利点としてはフレームワークに依存せず、自由に導入できることではないでしょうか。O/Rマッパーを使っていると徐々にDB構造を理解しなくなっていきます。そんな中でDB構造上の不具合が起きたりすると原因の究明に思わぬ時間を要することがあります。DB構造は知らずとも、その構造の管理はきちんと行わなければならないでしょう。

インデックスを開発環境だけで張って本番環境で忘れたり、ビューのSQLが環境ごとに違ったりとDB構造の管理は徐々に煩雑になっていくものです。ぜひともマイグレーションツールを導入し、ペインレスな管理を実施してください。

Phinx

robmorgan/phinx