DSLの使い道は継続的デリバリ~AntやMavenからGradleへ
JavaのビルドツールがAntやMavenからGradleへ少しずつ変化しようとしているように思える。
考えたことをラフなメモ書き。
【元ネタ】
IT検証ラボ - ビルドツールの移行性、MavenからGradleへの乗り換えは容易か:ITpro
ビルド・リリース自動化への足掛かりとしてのGroovy・Gradle・Spock|サイバーエージェント 公式エンジニアブログ
O'REILLY 「Building and Testing with Gradle」Kindleハイライトまとめ - Togetter
Antはビルド作業をTaskで定義してパイプのようにつなげるようにビルドスクリプトを書く。
XMLゆえに長文になりがちだが、書きやすい。
Mavenはライブラリの依存関係も考慮して、大規模なシステムの構築として使える。
Mavenのビルドした成果物の構造はとても奥が深く優れているが、EJBのように複雑すぎる。
今やプログラミング言語の実験場がJavaからRubyへ移ったように、Rubyのビルドツールは、Ruby自身で書かれたrakeでとても書きやすい。
また、RubyではRSpecやCucumberのように、テスト駆動(TDD)から振るまい駆動(BDD)へ、テスト駆動の考え方も進化している。
それに対してJavaのビルドツールはあまり進歩がなかったように思う。
だが、Groovyを使ったビルドツールGradleは、rakeのように、ビルドスクリプトを書けるのが特徴みたい。
また、JUnitでテストプログラムを書く場合、モックオブジェクトやDI、リフレクションなどを使う時も多く、結構書くのが面倒なのだが、Groovyでテストプログラムを書く方がもっとシンプルなようだ。
しかも、テストプログラムが受け入れテストケースの文章になるように、振るまい駆動(BDD)で書くこともできるらしい。
ビルドスクリプトという言語スタイルは、Cのmake以来、その重要性は大きいにも関わらず、今までさほど注目されて来なかった歴史があると思う。
XPはテスト駆動や継続的インテグレーションのプラクティスを提唱することによって、ビルドスクリプトの重要性を再認識させた点が素晴らしいのではないか、と思っている。
rakeやGradleは、継続的デリバリを実現する有効なツールなのだろう。
そして、継続的デプロイ、継続的デリバリへビルド管理が進化した場合、ビルドスクリプトで表現できる範囲をもっと広げたいものだ。
それらビルドスクリプトは、Jenkinsという強力なビルド管理ツールと連携させれば、単なるリリース作業だけでなく、メトリクス収集やバッチジョブ制御などにも使えるだろう。
これらの技術も今後着目してみる。
| 固定リンク
「プログラミング」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのモジュールシステムは複雑性をより増している(2022.09.10)
- Javaはなぜ関数型言語になろうとしているのか(2022.09.02)
- Javaのラムダ式の考え方(2022.08.10)
- Javaはオブジェクト指向言語ではなく関数型言語だった~「[増補改訂]関数プログラミング実践入門」はお勧めの本だ(2022.08.06)
「ソフトウェア工学」カテゴリの記事
- Jiraの機能はTracに似ている気がする #redmine(2025.06.01)
- チームトポロジーの感想~大規模アジャイル開発でも組織構造は大きく変化する(2025.01.01)
- Redmineは組織のナレッジ基盤として実現可能なのか~島津製作所の事例を読み解く #redmineT(2024.12.29)
- アーキテクチャ設計はベストプラクティスを参照するプロセスに過ぎないのか?~Software Processes are Software, Too(ソフトウェアプロセスもまたソフトウェアである)(2024.09.22)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
「Agile」カテゴリの記事
- Jiraの機能はTracに似ている気がする #redmine(2025.06.01)
- チームトポロジーにおける4チームのインタラクションをUMLで整理してみた(2025.01.12)
- チームトポロジーの感想~大規模アジャイル開発でも組織構造は大きく変化する(2025.01.01)
- 「世界一流エンジニアの思考法」の感想(2024.12.08)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
「Ruby」カテゴリの記事
- 「コーディングを支える技術」は良い本だ(2022.05.26)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
- 「RubyやRailsは終わった」という記事のリンク(2022.01.09)
- ITの技術や知識はツールの習得と表裏一体である(2021.03.26)
- JRubyの終焉(2020.06.09)
コメント