BEAR.SundayのPHP開発環境を紹介します
Disclaimer
開発環境のベストプラクティスのようなものに興味があるのですが、結局のところ良く分かりません。個人によって多様で「最強の開発環境」というコンセンサスはないように思えます。フレームワーク開発者のリードデベロッパーの多くもテキストエディタのみという方が多いような感じがします(Fabienさんとかpmjonesとかマシューさんとか)
なのでここで紹介する環境も「おすすめPHP開発環境」ではありません。BEAR.Sundayの開発をこのようにしてるという記事です。
環境
IDE
PHPStormを2012年の10月頃から使っています。PHPStormを知ったきっかけは@akkieさんという方がRay.DiのPRの時に「ヨーロッパではとてもポピュラーだよ、使ってみたら?と教えてくれたからです。PHP開発は最初期からIDEでZend Studio 2.0(!)の時かから使っています。
プラグインはphpunitのカバレッジをサイドに表示できるものと、アノテーションの補完を可能にするものと2つ入れています。
OS
OSXで開発を行っています。Vagrant等使っていません。
PHP
php-osx(liip.ch)のバイナリパッケージを使っています。元々自分たちが使うために作ったそうで(最近のliipではVagrantを使ってるみたいです)開発者がしっかりコミットして作られたパッケージという印象を受けます。インストールされる拡張も多く、かなり長期間使っていますが不便や不満を感じたことはありません。
QA Tool
- phpmd
- phpcs
- php-cs-fixer
各プロジェクトにantのbuild.xmlを含めているので普段は引数を省略して下記のように使用できます。PHPStormから使うこともあります。
$ ant phpcs
$ ant phpmd
CI
- travis
- scrutinizer
http://php-osx.liip.ch/
https://github.com/liip/php-osx
PHPの環境切り替えツールは使いません。必要あれば複数バージョンのPHPをPHP-OSXでインストールします。その時はグローバルのPHPに依存しないで、phpunitやbuit-in webサーバーでバイナリのPHPを直接指定しています。ほとんどの場合、ローカルのPHP環境は1つだけにして複数でのテストはCIサーバーで行います。
Gitクラアント
メインはGitHub製のクライアントです。良くできてると思います。PHPStormのクライアントも最近使い始めました。使いこなすといいような感じもしています。git flowやrebaseなどはコンソールで。
デバッガー
デバッガー(Xdebug)は多用しています。ユニットテストだけでなくwebスクリプトやコンソールスクリプトでも良く使います。トレースも良くします。
TIPS
ArrayObject
は注意です。格納された値がIDEのデバッガで確認できずPHPStormの対応の問題だと思っていたのですがこれは仕様上の問題らしくIDEでは対応できないそうです。
SQL
SQLを作成するのにはDBブラウザのNaviCatを使っていました。静的なクエリーはPHPのクエリービルダーライブラリ等を使用せずに、DBブラウザでGUIでクエリーを作成して確認、保存してそのSQLを張っていました。
まとめ
重視するのはイテレーションの速さとストレスの少なさです。コーディング、実行、デバック、カバレッジ確認、等が全て同一環境のIDEで行います。
(ライブラリ開発では特に)ローカルの環境をOSX、CIをUbuntuと変えることで早期に環境開発をロックして依存が隠れないようにしています。またVMを使わないOSXローカル開発は負荷が低く、最も低スペックの4G RAMのMacBookAirでIDEを使ってもストレスがありません。
あえておすすめするとしたらXdebugです。あまり使われてる印象ありませんが個人的にはPHPStorm上でPHPUnitをXdebug+トレースで使うのは、PHPStormのあり/なしぐらいのパワーを感じます。(しかしそうやって多用するのが筋がいいのか悪いのか、確信がありません)