« ストーリーポイントとファンクションポイント法の比較 | トップページ | アジャイルソフトウェアマネジメント »

2012/05/26

Antを見直す

SW構成管理において、ビルド管理はバージョン管理と表裏一体の関係。
ワンクリックビルドできないプロジェクトは、テスト工程の障害管理でリリース漏れやコミット漏れが多発して、進捗や品質に問題が出ているはずだ。

また、継続的インテグレーションを実践するには、ワンクリックビルドするためのビルドスクリプトが必要不可欠。
JenkinsのようなCIツールを使いこなすには、目的に応じたビルドスクリプトが必要になってくる。
最新版のモジュールをビルドするだけでなく、単体テストを実施したり、JavaDocや単体テスト結果を報告したり、FindBugsやLintなど各種メトリクスを出力するなど、ビルドスクリプトには色んな目的がある。
昔から使われてきたビルドツールはmakeだろうが、JavaならAntやMaven、Rubyならrakeが普通に使われているだろう。

Antを使う機会があったので、もう一度見直してみた。
個人的には、Javaを使う環境では、ビルド管理はMavenよりもAntの方が気軽に書けるので好きだ。

【1】AntはXMLで宣言的に書くのだが、逐次実行的に書くこともできる。
ファイルをコピーしたり、消去したり、コンパイルしたり、jarやwarにパッケージ化したりする処理を順番に実行すればいい。
だから、Antを書く気分はシェルライクだ。

Antメモ

もちろん、AntでIf文も書くことができる。Conditionタスクを使えばいい。

AntでConditionタスクを使った条件分岐を行う - てんぷらメモ

Conditionタスク

Antでループ処理を使うには、Ant-Contribライブラリを読みこめばいい。

Ant-Contrib Tasks
Ant-Contrib Tasks

だが、「ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション」にあるAntのリファクタリングカタログでは、If文やループ処理は書かないことを推奨している。
本来AntはXMLなので、データを記述するために存在しているからだ。

ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション」にあるAntのリファクタリングカタログは、Antを書くのにとても役立つ。
特に、ビルドするTask名を処理名よりも成果物名にすべきという考え方はオブジェクト指向に似ている気がする。

Antリファクタリングカタログ: プログラマの思索

【2】AntからMavenへ置き換えられていくだろうと言われてきたが、実際はそこまでMavenが普及しているようには思えない。
Mavenはライブラリのバージョン管理や依存関係を厳格に記述している利点はあるが、IDEによる補完機能やチェック機能がなければシェルライクに書くことはできないだろう。
InfoQでも下記の議論がある。

InfoQ: 議論:Mavenはビルドに適したツールか?

「私にとってのMavenは、ビルドシステムにおけるEJB2です。:複雑すぎて、技術的すぎて、知識を要しすぎます。」という指摘がまさにその通りだと思う。
JavaもEJBやJ2EEにこだわり過ぎて、袋小路にはまった。
Javaはオブジェクト指向やテスト駆動開発(JUnit)を学ぶのにとてもよい環境だが、今はRubyに技術革新の熱気が移っている。

Antでも、Ivyを使えばMavenのようなライブラリ管理が可能。
ビルドスクリプトを自由自在に書きたいならば、こちらのやり方のほうがいいかもしれない。

Ant + Ivy vs Maven - 達人プログラマーを目指して

Ant使いでもMavenのライブラリ管理ができるIvyとは (1/2) - @IT

|

« ストーリーポイントとファンクションポイント法の比較 | トップページ | アジャイルソフトウェアマネジメント »

ソフトウェア工学」カテゴリの記事

構成管理・Git」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« ストーリーポイントとファンクションポイント法の比較 | トップページ | アジャイルソフトウェアマネジメント »