今時なCakePHPでの開発環境!?
前職を退職してもう半年以上経ってしまいました。おかげさまで、レガシーなコードとのバトル等色々お仕事しています。
さて、先日のPHP Matsuri2012での@ryuzeeさんの発表を聞いて、開発環境や手法を改善するべく、今月から始まったプロジェクト用の環境を構築しています。
CakePHPは最新で!
CakePHPの最新stable版は 2.2.3 ですが、既に 2.3.0-beta が公開されています。幾つか2.3.0-betaの機能で使いたかったものがあったのと、今回のプロジェクトのリリース時期が来年の5月という事もあって、2.3.0-beta を使って開発をしています。来年の5月なら2.3.0Stable版がリリースされるんじゃないかとの読みです(^^;さて、どうなるでしょうかw?
出来る限り公開されているPluginを使う
前職の職場では、ある程度蓄積された自前のPluginがあった関係で公開されているPluginはあまり使っていませんでした。当然、前職の職場で開発した資産を今回使う事は出来ないので、既に公開されているものは積極的に利用しています。どれも定番ですが、今のところ使う予定のものは以下の通り。
これらのプラグインを上手く使って開発を進めていく予定です。幾つか初めて使ったものもあるのですがもう手放せません(^^。
既存のサービスを使う!
今まではソースコードは自前のgitリポジトリ(gitolite)、issue管理はcandycane(お客さんのredmineやbacklogって事も...)で管理はしていましたが、今回は以下の様なツールを使う事にしました。
- Github(ソースコード管理ツール)
- Pivotal Tracker(アジャイルプロジェクト管理ツール)
- co-meeting(オンライン会議)
- Facebook : 非公開グループを細かな要件や急ぎの場合に利用
- Dozens(DNS管理ツール)
- さくらのVPS : ステージング/CI/バックアップ用にお高めのを用意してもらいました(^^
今回のプロジェクトは、クライアントさんは別にして開発者全員がバラバラの場所で作業するのでオンライン会議はかなり重要です。他にも色々あるとは思いますが、最近はco-meeting+Facebookってパターンがほとんどです。
また、今回はお客さんにGithubとPivotal Trackerを契約していただけたのでありがたく使わせていただきます(^^。色々試していますが、今後は自前のgitリポジトリはバックアップにして、この構成で進める事が多くなりそうです。
本番環境のサーバーはまだ選定中ですが、NIFTY Cloudになる予定。
簡単デプロイ
今までは簡単なシェルスクリプトでデプロイをする事が多かったのですが、CakePHP2実践入門でデプロイの章を書いた事もあり、Capistrano+capcakeでデプロイする環境を作りました。詳しい事は以下に書いてありますので、まだの方は是非ご購入を検討してみてください(^^!

CakePHP2 実践入門 (WEB+DB PRESS plus)
- 作者: 安藤祐介,岸田健一郎,新原雅司,市川快,渡辺一宏,鈴木則夫
- 出版社/メーカー: 技術評論社
- 発売日: 2012/09/29
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 114回
- この商品を含むブログ (3件) を見る
Jenkinsさんに協力してもらう
さていよいよ本題(^^;。いままではがっつりアジャイル開発をした経験が実はなく、今回アジャイル開発に挑戦という事で久々にJenkinsを使ってCI環境を作りました。Unitテストを実行してカバレッジをとりつつ以下のプラグインを使って色々とソースコード解析もしています。
- Jenkins Clover PHP plugin : コードカバレッジ
- PMD Plugin(PHP_PMD) : 複雑すぎるコードや未使用のメソッド、パラメータの検出等
- Dry Plugin(phpcpd) : 重複コードの検出
- Checkstyle Plug-in(PHP_CodeSniffer) : コーディンク規約に準拠しているかのチェック
また、GithubのService HookとJenkinsのJob Notificationsを使って以下の様な内容を自動実行しています。
- commit時にJenkinsのビルドを自動実行
- commit時にPivotal Trackerに自動連携 : 自動的にストーリーをFinishしたり、Activityを追加したり。
- commit/Jenkinsのビルド失敗時にFacebookグループに自動投稿 : サンドボックスモードな自前アプリ(^^;
- 毎朝作業前の時間にビルドを自動実行
これらが実際に動き始めたのは昨日なのですが、なかなかいい感じです。まだ本格的な開発はこれからなので、頑張って育てていくつもりです。今後は、受け入れテストの自動化や自動的にデプロイもせたいですね。
まとめ
こんな感じで、作業環境としてはかなり整ってきた感じですが、実際の開発は12月からなのでこれからが僕らの真価の発揮どころです。ツールに振り回されずに、地道に作業進めていこうと思っています。