ビルドシステム構築に関して
面白いエントリ見つけました。
ビルドシステム構築スキルの重要性 - 達人プログラマーを目指して
いやー、もう本当によくわかる。
100KSのコンパイルも通らないJavaコードより1KSのbuild.xmlのほうが重要だったりするんだけど、その必要性はあんま理解されてない。
そのせいかビルドスクリプトが無くてビルドがIDE依存なプロジェクトって結構あると思う。そういうプロジェクトって文字コードがらみの問題でjavacでコンパイルしようとすると、java.nio.BufferOverflowExceptionとかで落ちたりするわけだ。
#Eclipseでコンパイルできるからといって、javacでコンパイルできるわけではない。
最初からビルドが自動化されてCIしていればこのような問題はもちろんすぐ気づく。
小規模プロジェクトであれば、ビルドが手動でもなんとかなるだろうが、大規模だとつらい。
そこで自動化するわけだが、自動化したらしたでブラックボックスになり引き継げなくなる。
というかもともとビルドシステム構築の作業が認識されてないので、引き継ぎの必要性も認識されないことが多いんじゃないかな。
ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション
- 作者: ThoughtWorks Inc.,株式会社オージス総研オブジェクトの広場編集部
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/12/27
- メディア: 単行本(ソフトカバー)
- 購入: 14人 クリック: 323回
- この商品を含むブログ (81件) を見る
にあるようにmacrodef使ってリファクタリングしたら、逆にわかりにくいかもしれない。
わかる人はビルドスクリプト読めばわかるんだろうけど。
Ant + Ivy vs Maven - 達人プログラマーを目指して
も面白いですね。ちなみに僕はAnt派です。EclipseのAntエディタも良い感じだし。でもIvyは使ってないですね。Mavenもそうだけどインハウスリポジトリが無いと使う気にならない。作れよという話もあるが。--);
ま、依存ライブラリもがしがしSVNに突っ込んでます。
あとAnt vs Mavenでは必ずしも無くて、Maven使っててもパッケージングはmaven-antrun-plugin使ってAntでやるっていうのも結構ある。
ちなみに僕はフォルダ構成はMavenを採用してますね。
このエントリの影響で
Ant in Action: Covers Ant 1.7 (Manning)
- 作者: Steve Loughran,Erik Hatcher
- 出版社/メーカー: Manning Publications
- 発売日: 2007/07/22
- メディア: ペーパーバック
- クリック: 19回
- この商品を含むブログ (2件) を見る
をぽちって、10章のWorking with big projectsも読んでみました。僕の英語力がいまいちなのでちゃんと読み込めてないけど(汗
僕はマルチプロジェクトではantタスクでプロジェクト毎のbuild.xmlを呼び出してますね。あとはDRYにするためにimportやmacrodefを使ったりしてます。
というような情報は確かに日本語のWebとか書籍では見たこと無い気もするな。。。現場の先人のものを見て学んだ感じです。僕は。
この本をぱらぱら見つつ思ったのはビルドシステム、というよりビルドパイプラインの構築を考えるにあたって、CIとどう連携していくかも重要だなと。
ええとビルドシステムはソースをビルドしてjarやwarなどの成果物を生成するまでをイメージしてて、ビルドパイプラインはさらにデプロイまで含めたイメージで言ってます。
例えばSVNからソースをチェックアウトするのに今だったらAntつかわんでしょ。その辺はHudsonにまかせるでしょとか、SCPでファイルコピーとかもAntでやるよりHudsonプラグインでやったほうが楽かなとか。
そう考えていくとビルドシステムがIDEやCIツールに依存するのはイマイチな気がするけど、ビルドパイプラインがCIツールに依存するのはまあありかなと。
ある程度ビルドの規模が大きくなるとビルドパイプライン的な発想は不可欠だと思うが、そうなったらそうなったで特定のCIツールに依存していいのか?という葛藤が生じるようだ(わりと他人事なのは、依存したっていいやん思ってるから)。そうゆうのって"Agline ALM"やら"Continuous Delivery"やらに書いてないのん?
2010-11-21 - marsのメモ
- 作者: Jez Humble,David Farley
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2010/07/27
- メディア: ハードカバー
- 購入: 3人 クリック: 141回
- この商品を含むブログ (23件) を見る
は今読んでる途中ですが、そういう記述は無かったような。。。
ともあれ、各環境でのビルドシステム構築勉強会でもやったら面白いかもしれん。make, omake, rake, buildout, buildr, gradle, scons, ant, maven, ivy, Phingなどなど。