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のようなライブラリ管理が可能。
ビルドスクリプトを自由自在に書きたいならば、こちらのやり方のほうがいいかもしれない。
| 固定リンク
「ソフトウェア工学」カテゴリの記事
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「システムアーキテクチャ構築の原理」の感想(2024.05.06)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- マイクロサービス設計は従来のアーキテクチャ設計と何が違うのか(2024.01.02)
- 「ソフトウェアアーキテクチャ・ハードパーツ」の情報リンク~マイクロサービスの設計技法の課題は何なのか(2023.11.12)
「構成管理・Git」カテゴリの記事
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- パッケージ設計の原則の意義は変化しているのか(2023.09.30)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 【資料公開】チケット駆動開発の解説~タスク管理からプロセス改善へ #redmine(2022.01.14)
- プログラミングしてる時はでっかいピタゴラ装置を作ってるみたいな感じ(2022.01.09)
コメント