usages/phpUnderControl/WebCoding 1st

提供: スゴイようぃっきー!
移動: 案内検索

usages / phpUnderControl / WebCoding 1st

WebCoding 1st : phpUnderControlでリファクタリング

phpUndeControl x WebCoding を始めるにあたって

昨年(2009年)にphpUndeControlを利用しながら、業務用のシステムを開発しました。他チームが先行して導入していて面白そうだなと思っていたのですが、社内勉強会での発表や、当時のチーム状況、社内環境などを考慮して利用を決めました。

利用を決めたことにはポジティブな要素とネガティブな要素がありまして、ポジティブな意味では、品質管理を客観的に行う指針が欲しいと常々思っていたこと、そして寄せ集めであり、ばらついた経験値を持ち、互いに実力もわからないままメンバーとなったチームの中で標準化した仕組みが必要と考えたらからです。
一方で、ネガティブな選択理由としては、引継ぎがしやすい状況づくりを考えていたことがあげられます。
入社後に参加したプロジェクトでしたが、進捗が非常に厳しいにも関わらず、社内での危機感や体制作りが十分ではなく、開発会社としての実力や経験値に疑問を感じ、近い将来に次へのステップアップを考慮することも視野に入れざるをえませんでした。
そのような状況下では、できる限り社内の中で利用されている環境や技術を導入しておくと、引継ぎがしやすく、またphpDocumentorが統合されているphpUndeControlを利用すれば、ドキュメント類を書く手間が多少とも削減できることを期待したためです。

プロジェクトの途中からphpUndeControlを導入したことは大きなインパクトと負荷がありましたが、予想どおりに後半になって炎上したプロジェクトを地味に支えてくれたと思います。
私にとって、phpUndeControlの経験はとても楽しいものでした。そこで、phpUndeControlを更に活用できるようにテーマを持ちながらエクササイズしてみたいと思います。

phpUndeControl導入の効果

phpUndeControlはPHPUnitやPHP_CodeSnifferといった既存の品質管理ツールの結果を、透過的にチームメンバーへ見せてくれます。これは、マネジメントをする側からするとメンバー個々の作業内容を透過的にし、何かとレベル感が不安定になってしまう開発メンバーの作業品質や品質に対する意識を高めてくれたと考えています。
実はPHPUnitについては十分に活用できたわけではなかったのですが、phpUndeControlを通してPHP_CodeSnifferを利用したことで、PHPコードが非常に可読性の高いものとなり、メンテナンシビリティを高めました。結果、プロジェクト後半での仕様変更対応時に大いに貢献してくれたと思います。
また、PHPUnitを用いたテストプログラムはそれほどかけなかったのですが、せめてpublicなメソッドだけでもテストを作成し、コードカバレッジを100%にできていればリファクタリングもかなり効率的に行えただろうと思います。

web製作の経験が長い方ならおわかりと思いますが、今のようにCSS2やWEB標準化が進んでいなかった時代の、テーブルレイアウトやhtml要素の属性にデザインを埋め込んでいたHTMLソースコードというものは、嫌になるほど複雑で難読なものでした。何重にもネストされたテーブルで構成されたHTMLなどは、一度壊してしまうと、どこがどうなっているのかわからず、修正するのに一苦労でした

近年CSS2の利用やWEB標準の普及により、にわかHTMLコーダーやオーサリングツールなどのソースコードでさえ可読性が高まり、メンテナンスしやすくなっています。
PHP_CodeSnifferによるコーディングチェックがもたらす効果は、この経験に近いものです。
長年同じメンバーで開発をしていれば、次第に暗黙のルールができて効率化を図れるわけですが、異なる現場で経験を積み、それぞれ手法の異なるメンバーがそれぞれ思うままに開発を進めれば、品質管理が難しくなるのは当然です。

まずソースコードがスパゲティ化しないために、WebCoding 1stではphpUndeControlを通してPHP_CodeSnifferを使い倒してみたいと思います。
まあ、次のWebCoding 2ndではテスト駆動開発にチャレンジしてみたいと思います。

コンテンツ