JavaビルドシステムMaven 1.0は3年前にリリースされ、広くオープンソースの世界や産業界に導入されてきた。それ以降、2.0が新しくリリースされたが、同じようには認められなかった。同じ頃、Rubyの評判はますます上がり、内部DSLの概念が、Rakeのようなツールとともに大変役に立つことがわかってきた。
「一方で、一般の言語の中で記述されたDSLが実に役に立っています。高級言語の簡単さを享受しながら、コンピュータの処理能力の限界まで拡張することができるのです。」
時とともに、BakeやRantといった全く新しいビルドシステムがRubyで書かれるようになった。ほかには、Rakeを拡張したRavenなどがあるが、これは外部リポジトリala Mavenをサポートする。
新顔のBuildrは特にJava buildsを簡単にすることを目的としている。作者のAssaf Arkin氏はxml化や過剰設計されたソリューションより簡単であると主張している。―それは、Arkin氏のブログまたは集めるthumblr の引用からわかる。その簡単さがApache Odeといった彼のプロジェクトからMaven2を外そうとした理由である。
すぐにMaven不確定性原理と名づけました。しかし、正直に言えばビルドが動作するかどうか、不確実性や疑問がほとんどないことはわかっていました。その通りでした。結局、いつだったか、もうたくさんだと思ったのです。テストケースは中断しました…。どちらにしても、アジャイルかMavenか選ばねばならなかったのです。一つは廃れていくことになるでしょう。」
Assaf氏はAntに戻ることに疑いを持った。
「それからまったくMavenなしに生活する幸せな生活を想像し始めました。ジグザグに進んでAntにいたるのでしょうか?欠点はありますが、少なくともAnt buildsは動作します。確かに、Antはソフトウェア開発者の誰もが望む「宣言型」ではありません。しかし、下手な宣言型のコードは、命令型のどんなスパゲッティコードより性質が悪いのです。」
…そして結局Rakeに落ち着くのである。
「だからそうしたのです。Rakeを使って始めました。驚きに水を差すようですが、結局素晴らしい選択であったことがわかりました。Rakeは好調にスタートしましたが、期待していたものではありませんでした。われわれが取り組んでいる典型的なJavaアプリケーションにはいくつかのモジュールがありますが、そのすべてに同じ共通のライフサイクルタスク、-コンパイル、テスト、パッケージ、デプロイ-があります。これらをモジュールごとにすべて何回も繰り返して書くのでは、Antとたいして変わらないでしょう。もっといい方法があるはずです。」
この冒険談が結果的にBuildrの誕生を招き、それによって身近な目標も達成し、(XML Beansの処理など)、普通のRubyコードを基本タスクを完了するために信頼に足るものにしてくれた。さらに広く導入するのを最後に止めるのは性能かもしれないが,「猛烈な勢いの」BuildrはMavenと張り合えることがわかった。
「われわれは同じコードをビルドし、同じテストを実行し、同じXMLBeansをコンパイルし、同じHibernateスキーマを作成し、同じリモートおよびローカルなリポジトリを共有しています。これらはすべて、ブラックボックスと同じであると言えます。同じプロジェクトを入力すると、同じJAR、WAR,配布ファイルを生成するのです。」
同じものをビルドするのですが、異なる点は、52のXMLを多用するファイルから1つのスクリプトまで、スクリプトのサイズが91%まで小さくなっていたことです。しかし、それだけではなく、Buildrはビルド時間を何とか50%まで減らしたのです!部分的なビルドでもBuildrはMavenと同等かそれ以上で実行しました。
同じものをビルドするのだが、異なる点は、52のXMLを多用するファイルから1つのスクリプトまで、スクリプトのサイズが91%まで小さくなっていたことであった。しかし、それだけではなく、Buildrはビルド時間を何とか50%まで減らしたのだ!部分的なビルドでもBuildrはMavenと同等かそれ以上で実行した。
「もちろん、Ruby単体をピュアなJavaと比較して計っているわけではありません。1つの実装をもう一方と比較しており、その実装において両者は同じことを行っており、ブラックボックスと同じことです。これこそ現実のベンチマークです。」
Assaf氏は素晴らしい結論で締めくくっている。
「Rubyは遅いかもしれませんが、それでビルドしたものは恐ろしく速くなるかも可能性があります。」
MavenとBuildrの直接対決を見るのは面白いことだろう。
この文書は現在RDocとApache Rakefileに限定されていますが、完全な説明書が作成中である。
(原文は2007年5月7日にリリースされた記事です)