id:daisuke_m が開発を進めている Jiemamy についての記事が @IT に掲載されました。構成管理というキーワードに関心を寄せている方は一読されたい。
Jiemamy そのものに関してのフィードバックのエントリでなくて申し訳ないんだが、この記事を読んでちょっと思い出したことがあるので、それについて書く。しかも、部分的なところのみに対しての反応になっちゃうんだけど、まぁいいやw
アプリケーションによっては、初期のマスタデータが入っていないと正常に動作しないものも多くあります。つまり、アプリケーションはこの「初期データにも依存しているといえます。もしこのようなアプリケーションの初期データが構成管理されていない場合、動作に必要なデータを把握するのは難しく、別途情報を入手するなどしない限り、自力でそのアプリケーションを起動するまでには多大な労力が必要となってしまいます。開発の現場において、こういった作業に労を費やすには大変大きなロスです。
データベースもアジャイル開発に対応したい! - アプリケーションはデータにも依存する より抜粋
※注意:太字強調部分は俺が勝手に付けました。
この辺は俺も経験あるから良くわかる。俺が元居たプロジェクトでは、リリース予定のコードが動作するかどうか、まっさらな環境にイチから色々インストールしてテスト環境構築する、って仕事を良くやったことがある。これがまたムチャクチャメンドーな手作業で、何とかして自動化出来ないもんかと何時も悩んでいた。
また「初期のマスタデータが入っていないと正常に動作しないものも多くあります。」にもあてはまっていた。初期データ投入スクリプトは用意はされていたものの、複数存在するデータ投入スクリプトの動かす順番とか、バージョンによって違うスクリプト使わないといけなかったりとか、前提条件が結構複雑だった。一度把握してしまえば問題無いと代物だったとはいえ、受託開発の下請けだとホイホイと人が入れ替わるので、その度に説明するのは結構なコストがかかっていた(しかも明確に見えるコストじゃないのが性質が悪いわけで……)。
ただ、問題なのはわかっていたけど、マッタク手を打てなかったんだけどね……何から手をつけたらいいかわからなくてさ。
まずは、現状行われている環境構築手順の整理から、が重要かも?
というわけでまず俺が手を付けたのは、環境構築の手順をプロジェクトの wiki に長々と書き連ねること。現状では手作業で行われているソフトウェアのインストール手順、データ投入スクリプトの使用方法、その前提条件やファイルの置いてある場所などなど。
バグ探しとおんなじで、まず現状がどうなってんの? を客観的に整理することから始めるのが重要かな、と考えたわけです。結局、そこで力尽きちゃったんだけどね……でも、プロジェクトに新しく人が来た時に「とりあえずコレ読んで環境作ってみて。わかんないところがあったら聞いてね」と言えるようになっただけでも、進歩かな、と思っている。以前は、誰か一人が付きっ切りで教えないといけなかったわけだから。
Maven2 とかちゃんと使ってるプロジェクトにはすげぇ憧れるんだけど、手作業だろうが泥臭かろうが、とりあえずプロジェクトが回っているなら
と割り切っちゃうのも手かなぁ、と思ったのです。で、チームメンバのレベルとか上司の顔色とかwもにらみながら、改善できるところからすこーしずつ変えていって、Jiemamy が使えるほどのチームになっていくことは出来ないものかな、と。アプローチ的には pukiwiki 導入日記 - kagamihogeのblog でやってるよーなドロドロと浸透させていくのと同じ匂いがしますね。どーも俺はこういうジワジワアプローチが好きらしい。
「今日から当プロジェクトは ** のツールを使います」
ただ、トップダウンでプロジェクトリーダーが「貴様らが何と言おうとコレ使うからな」と言い切ってしまうのも場合によっては悪くないのかも、とも思う。
とある飲み会で、俺はとある人*2の発言が結構印象に残っている。
俺「Trac といったツールや、JUnit のような新しい開発手法をチームに浸透させるのって、どんなやり方が良いんでしょうね」
彼「まずは自分がその手法の良さについて知り尽くしているのが大前提だよね。で、俺が思うに、プロジェクトの途中からだと新しいやり方って入れにくいんじゃないか、って。今までのやり方を変えるのって意外と抵抗感あるもんだよ、それが良いものだって分かっててもね。だから、タイミングは只一つ。プロジェクトの最初しか無いんじゃないか、って俺は思うよ」
なんて感じでした。
もし、Jiemamy を自分のチームで使うとしたら? どんなシナリオが有り得るんだろうなぁ……等と思うのでした。