環境構築の自動化

XP祭りは行ってないけど
XP祭り「Pythonでアジャイル開発サイクル2010ver.」レポート - Block Rockin’ Codes
にあるzc.buildoutを使った環境構築の自動化は面白い。

VCSからチェックアウトしただけでは動かないことが多いのもその通り。

JavaだとライブラリをVCSに突っ込んどくかmaven2のpom.xmlに記述する感じかな。

モダンな〜環境構築がホットになったようにこの辺の話題には僕も興味があります。

まあ環境構築っていってもいろいろあるわけで、モダンな〜であったのは開発者がローカルで使うライブラリだったりツールだったりがほとんどです。

自動化も大事ですね。ただやりすぎるとブラックボックス感が強くなるし、途中での確認ステップも重要。

自動化対象もいろいろあります。

Hudson PXEプラグインのようにOSのインストールの自動化もあれば、DBのようにミドルウエアのインストールの自動化もあります。
msi形式のインストーラならmsiexecでサイレントインストールできます。

OS,ミドルウエアがインストールされた状態で何をインストールして開発環境を整えていくかは状況次第ですが、例えばDBをつかうアプリならDBのスキーマ作成、テーブル作成、初期データ投入なんかはDBFluteのReplace-Schemaを使えば自動化できます。

なるべく自動化してミスを防ぎ、ローカル固有の環境に依存するものは少なくしていくのがいいですね。そしてCIをつかってworksformeを防ぐ。

ローカルの開発環境っていうのは大規模なら100人以上の開発者が使うので、なるべく手間を減らしていきたい。ただいままでと違うものを投入するとなると学習コストが無視できないので、その辺のバランスは難しい。

ていうか僕なんかはプロジェクト標準の開発環境使わないですねw 自分は展開する立場だけど。。。

まあ大きくは違わないです。僕が使うのが英語版Eclipseだったり、Subclipseだったりとか、そんな程度です。別に英語が得意とかそんなんじゃなくて動作が比較的軽い気がするからです。

あとこの辺の環境構築に関して僕は理解を得られているし現在では任されている立場ですね。また自動化はともかく環境構築手順書があるのは割と当然という文化ですね。

今回のプロジェクトでは自動化のエッセンスも少し入れてDBFluteのReplace-Schemaを使ってます。いいよこれ。DBAにもつかってもらってます。