Antを見直す
SW構成管理において、ビルド管理はバージョン管理と表裏一体の関係。
ワンクリックビルドできないプロジェクトは、テスト工程の障害管理でリリース漏れやコミット漏れが多発して、進捗や品質に問題が出ているはずだ。
また、継続的インテグレーションを実践するには、ワンクリックビルドするためのビルドスクリプトが必要不可欠。
JenkinsのようなCIツールを使いこなすには、目的に応じたビルドスクリプトが必要になってくる。
最新版のモジュールをビルドするだけでなく、単体テストを実施したり、JavaDocや単体テスト結果を報告したり、FindBugsやLintなど各種メトリクスを出力するなど、ビルドスクリプトには色んな目的がある。
昔から使われてきたビルドツールはmakeだろうが、JavaならAntやMaven、Rubyならrakeが普通に使われているだろう。
Antを使う機会があったので、もう一度見直してみた。
個人的には、Javaを使う環境では、ビルド管理はMavenよりもAntの方が気軽に書けるので好きだ。
【1】AntはXMLで宣言的に書くのだが、逐次実行的に書くこともできる。
ファイルをコピーしたり、消去したり、コンパイルしたり、jarやwarにパッケージ化したりする処理を順番に実行すればいい。
だから、Antを書く気分はシェルライクだ。
もちろん、AntでIf文も書くことができる。Conditionタスクを使えばいい。
AntでConditionタスクを使った条件分岐を行う - てんぷらメモ
Antでループ処理を使うには、Ant-Contribライブラリを読みこめばいい。
Ant-Contrib Tasks
Ant-Contrib Tasks
だが、「ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション」にあるAntのリファクタリングカタログでは、If文やループ処理は書かないことを推奨している。
本来AntはXMLなので、データを記述するために存在しているからだ。
「ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション」にあるAntのリファクタリングカタログは、Antを書くのにとても役立つ。
特に、ビルドするTask名を処理名よりも成果物名にすべきという考え方はオブジェクト指向に似ている気がする。
【2】AntからMavenへ置き換えられていくだろうと言われてきたが、実際はそこまでMavenが普及しているようには思えない。
Mavenはライブラリのバージョン管理や依存関係を厳格に記述している利点はあるが、IDEによる補完機能やチェック機能がなければシェルライクに書くことはできないだろう。
InfoQでも下記の議論がある。
「私にとってのMavenは、ビルドシステムにおけるEJB2です。:複雑すぎて、技術的すぎて、知識を要しすぎます。」という指摘がまさにその通りだと思う。
JavaもEJBやJ2EEにこだわり過ぎて、袋小路にはまった。
Javaはオブジェクト指向やテスト駆動開発(JUnit)を学ぶのにとてもよい環境だが、今はRubyに技術革新の熱気が移っている。
Antでも、Ivyを使えばMavenのようなライブラリ管理が可能。
ビルドスクリプトを自由自在に書きたいならば、こちらのやり方のほうがいいかもしれない。
| 固定リンク
「ソフトウェア工学」カテゴリの記事
- なぜInfrastructure as Codeが必要なのか?(2021.04.18)
- Excel駆動でWBSやガントチャートが作れない人はどこに原因があるのか? #redmine(2021.04.18)
- テスト駆動開発が抱える問題は可読性と保守性のトレードオフ #dxd2021 #streamA(2021.04.10)
- プロジェクト管理手法はプロジェクト型開発からプロダクト型開発へ変えるべきだ(2021.04.01)
- ソフトウェア開発は打ち合わせ駆動開発だ(2021.03.30)
「Git・構成管理」カテゴリの記事
- なぜInfrastructure as Codeが必要なのか?(2021.04.18)
- ITの技術や知識はツールの習得と表裏一体である(2021.03.26)
- YoutubeのCCNA講座が秀逸だった(2021.01.04)
- 変更管理プロセスが弱いとトラブルが多い(2021.01.04)
- RedmineでGitのbareリポジトリにアクセスする方法(2020.10.22)
コメント