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)
「ソフトウェア工学」カテゴリの記事
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「システムアーキテクチャ構築の原理」の感想(2024.05.06)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- マイクロサービス設計は従来のアーキテクチャ設計と何が違うのか(2024.01.02)
- 「ソフトウェアアーキテクチャ・ハードパーツ」の情報リンク~マイクロサービスの設計技法の課題は何なのか(2023.11.12)
「Agile」カテゴリの記事
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「スクラムの拡張による組織づくり」のScrum@Scaleの感想(2024.03.31)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- 概念モデリングや設計原則は進化しているのか(2023.10.21)
「Ruby」カテゴリの記事
- 「コーディングを支える技術」は良い本だ(2022.05.26)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
- 「RubyやRailsは終わった」という記事のリンク(2022.01.09)
- ITの技術や知識はツールの習得と表裏一体である(2021.03.26)
- JRubyの終焉(2020.06.09)
コメント