EC-CUBE 次期バージョンの開発合宿に参加してきました。

先週末の土日、EC-CUBEの開発合宿に参加してきました。

土曜日の10時に水道橋近くの会議室に集合でそこから次の日の14時過ぎまでの長丁場な合宿でした。

私は家を9時前に出て、会場には9:50分頃到着しました。

会場には既に多くの人が来ていて、それぞれのチーム毎に分かれて座っていました。

今回の合宿では、前回でも書きましたが3つのチームに分かれていて
税率対応チーム、プラグイン改善チーム、ユニットテストチームの3つのがあり、
私のチームはユニットテストチームです。

税率対応チームは、EC-CUBEのコアメンバーやエバンシャリストなど、猛者達が
揃ったチームでした。7人ぐらいですかね。

続いてプラグイン対応チームはかなり大人数で大半の人がこのチームに入っていました。
また、EC-CUBE海外版の開発責任者のマイケルさんがいました。
余談ですが、マイケルさんは魚を食べないそうです。

で、私の所属するユニットテストチームは4人!
確かに一見地味な作業なので人気が無かったのかもしれません。
EC-CUBEのヤンさん、そして、アラタナさんとサイバーウィルさんの
メンバーが1人ずつ、そして私という4名です。

総勢20人ぐらいで合宿がスタートしました。

まずは簡単に一人ひとり一言自己紹介ではじまり、その後、早速チーム毎に
開発がスタートします。

ユニットテストチームはEC-CUBEのヤンさんが中心となり、
すでにJenkinsにて自動化されているサーバ環境がありました。

私も始めて、Jenkinsの画面を見たのですが、網羅率や現在のテスト網羅のパーセンテージなどが
ビジュアル化して見ることができます。
まさにこのテスト自動化のノウハウを学びたかったので、テンションが上がりました。

で、早速開発なのですが、PHPUnitがどうもWarningメッセージが出てうまく動かないということで、
PHPUnitの環境を整えるところから始めました。
私は普段、MAMPのPHPと通常のPHP両方を使っているのですが、その辺でなにかうまくいっていないようでした。
この辺は結局、解決したのですが、1時間程費やしてしました。この辺の話はまた別のブログに書こうと思います。

そんな訳でいよいよ開発なわけですが、どのように書いていけばいいか、別のテストコードをサンプルに眺めるところから
はじめました。

まずは一連のHelperClassのテストコードを作ることになりました。

で、私はEC-CUBE2.13から新たに加わるSC_Helper_Recommendというクラスを
担当になったのですが、調べているとどうもこのヘルパークラス自体の名称があまりよろしく無いということが
わかりました。
このクラスはdtb_best_productsを参照するのですが、名称がRecommendになっているのと、
dtb_recommendというテーブルが既に存在するため、使う人が混同してしまう可能性があります。
ということで、まずこのクラス名のリファクタリングを行うことになりました。

テストチームは宜しくないコードがあった場合、そのままリファクタリングもガンガンやっていく
方針だったので、必然的にその流れです。まだUnitテストの開発ができません。

そんな訳で、リファクタリングが無事終わり、ようやくテストコードの開発をスタートさせました。

テストコードを作っていて気づいたのですが、
テストコードは一つのメソッド毎に作っていく為、一つのクラスのテストコードを書くのにかなりの
テストコードを必要とします。

サクッとテストコードは作れるものなのかと思っていたのですが、そんなわけではないんですね。
一つのクラスを作る工数以上の工数がテストコードでかかる気がします。。
う〜ん。そう考えるとテスト駆動開発の開発工数は結構増えてしまう気が。。。
ただ、その後の品質や保守性を考えると、最終的な工数はすくなるなるのかもしれません。。

しかし、このテストコードを作るのはなかなか大変な作業だというのが分かりました。

ということで、ゴリゴリ作りはじめたのですが、とりあえずのタイムアップの19時までには
2メソッド程度のテストコードしか書けませんでいた。
ということで、合宿終了までに1クラス分のテストコードを終わらせることを目標に設定。。。

で、泊まるホテルに移動し、皆さんでご飯を食べてそこからまた自由に開発が行えます。
ただ、合宿に参加しているだけあって、大体皆さんゴリゴリ開発しています。
ということで私も1時頃まで開発しておりました。
少し慣れて来ると開発スピードが上がってきて初日は4分3ぐらいまで終わらせることが出来ました。

ということで、私は1時頃に寝たのですが、他のメンバーは4時ぐらいまでやっていたそうです。
みんな気合入ってますね(汗)

そんな分けて2日目がスタートです。
2日目は12時までで、その後ご飯を食べて13時から成果発表そして解散という流れになります。

なので、開発時間は午前中のみになります。
で、午前中にさくさく開発が進み、無事1クラス目が終わり、2クラス目に突入することができました。

で、ユニットチームは皆さんの頑張りもあり、合宿前のテストカバレッジ率が32%から39.5%まで上げることができました。
成果発表会では、Jenkinsの画面を見せながら一番地味な発表でしたが、私的には得るものが
多く、参加してよかったかなと。。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です