LoginSignup
7

More than 5 years have passed since last update.

posted at

updated at

Organization

開発環境

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のあり/なしぐらいのパワーを感じます。(しかしそうやって多用するのが筋がいいのか悪いのか、確信がありません)

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
What you can do with signing up
7