BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Buildr:RubyがJavaより速く構築するとき

Buildr:RubyがJavaより速く構築するとき

JavaビルドシステムMaven 1.0は3年前にリリースされ、広くオープンソースの世界や産業界に導入されてきた。それ以降、2.0が新しくリリースされたが、同じようには認められなかった。同じ頃、Rubyの評判はますます上がり、内部DSLの概念が、Rakeのようなツールとともに大変役に立つことがわかってきた。

「一方で、一般の言語の中で記述されたDSLが実に役に立っています。高級言語の簡単さを享受しながら、コンピュータの処理能力の限界まで拡張することができるのです。」

時とともに、BakeRantといった全く新しいビルドシステムが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日にリリースされた記事です)

この記事に星をつける

おすすめ度
スタイル

BT