週1日のペースで出社して作業してるんですが、なかなか手強いですね。
サイトが沢山問題
でかいレガシーシステム一個と戦うのではなく、30個ぐらいのサイトがあって、それをメンテしなきゃいけないので大変です。
システム的には殆ど同じなので、大元があってそれをコピーして使っています。コピーしたあとはそれぞれのサイトでカスタマイズが入るので分岐していきます。
これは壮大なコピペと同じことなのでメンテ対象のコード行数が増大していきます。一刻も早くこれをしないですむように設計しなおさないといけません。
共通開発環境問題
社内サーバー上に共通開発環境が一つあって、そこに上記の30近くのサイトが並んでます。そこをみんなでいじって、誰かが代表としてsvnにコミットします。
共通開発環境には、誰か一人が開発環境を作ればいいという利点がありますが、二つの問題点があります。
- 誰が変更したのかわからないのでレビューできない。一つ一つの変更がいい加減になり、いらないファイルが放置されて散らかりっぱなしになる。(スラム化)
- 複数人が同時に作業していると変更点が衝突する、壊れる。
進捗
とにかくまずはテストを書かないことには変更もできないのでテスト環境の作成を進めています。しかし、固定のパス設定などポータブルになっていないのでローカルやCircleCIで動くようにするまでが一苦労。
最近のPHPだと動かない機能を使っていたら修正。最近のMySQLだと動かない書き方を修正。結局、まずは共通開発環境と全く同じOSをVirtualBox上に用意して動作させることにしました。
これでphpunit + seleniumのテストはなんとか動きそうです。
悩んでいること
テストが動き、コードレビューを機能させるには各自が自分の環境を持つ必要があります。Windowsでは動かない機能も使っているのでVirtualBoxに環境を作ってそこで各自が上記の30超のサイトを開発しなければなりません。
VirtualBoxのSynced Folersは遅いのでWindowsの場合はsmb、Macの場合はnfsを使って・・・など、僕は構わないですが結構敷居が高くて、
「みんなホントにこれで開発してるのかな?」
と不安になってきます。
共通開発環境問題の問題点を解決しつつ、環境構築の手間を少なくする方法は何かないもんでしょうか・・・。
みんなどうしてるのか気になって仕方ないので次回のPHP勉強会東京に参加登録しました。
一段落してkomagataさんがいなくなったら半年で元通りになりそう。
文化を変えることも僕のミッションだと思っていますが、どうすれば変えられるのか悩んでます。
社内勉強会の開催やPHP勉強会への出席など地道な活動が必要かなと感じています。