|
必聴講座ご紹介 Cloud Days Tokyo 2012 エムオーテックス Cloud Days Tokyo 2012 ヴイエムウェア Cloud Days Osaka 2012 アマゾン データ サービス ジャパン |
[Jakarta/Apacheウォッチ] 第2回 Javaビルド環境の標準はAntからMavenへJavaのビルド環境に,このところ変化が起き始めている。 ビルドとは,関連する多数のプログラムをコンパイルし,jarやwarなどの実行可能なファイル形式に変換するプロセスである。このビルドを自動化するツールの定番となってきたのが,THE Apache ANT PROJECTが開発しているAntである。 Apacheのソフトウエアも,ビルドにAntを利用しているソフトウエアが大多数を占めていた。しかし,最近開発がスタートしたソフトウエアでは,Mavenというツールを利用するものが増えている。前回ご紹介した ビルドだけでなく,テストやドキュメント生成も自動化 MavenはThe Apache Software Foundationで開発されているプロジェクト管理ツールである。管理といってもスケジュールや人的リソースを管理する訳ではない。Mavenは,ソフトウエアを開発するに当たって必要となる,ソースコードのビルドやテスト,ドキュメントの生成を行うツールである。 Antなど,従来のビルド・ツールの多くは,ソースコード・ファイルのコンパイルまたはそれに付随する処理(アーカイブ化など)に主眼を置いている。よって,テストやドキュメントの生成など少し複雑なことを行わせる場合には,設定ファイルにその旨を定義する必要がある。しかし,この定義は,行わせたいことが複雑になればなるほど,その定義方法が難しくなる。使いこなすまでに時間がかかる。
このように,Antがコードのビルドや実行に主眼を置いているのに対し,Mavenはプロジェクトの開発工程全体をスコープとしている。オープンソース・ソフトウエアの開発に限らず,すべてのJavaアプリケーション開発に有益な機能を備えている。筆者も,2002年のBeta5リリースの頃から,実際のシステム開発プロジェクトで利用しており,開発効率の向上を実感している。 Mavenは,JakartaプロジェクトのWebアプリケーション・フレームワークであるTurbineを開発するためのツールとして生まれた。その生い立ち上,オープンソース・ソフトウエアを開発するために必要と思われる機能を多く提供している。 オープンソース・ソフトウエアの開発では,すべての開発者が世界中に存在しており,真の分散開発が行われている。お互いの顔すら知らない者同士が協力し,1つのソフトウエアが開発されているのである。このような開発スタイルを支えるためにMavenは様々な機能を提供している。 Mavenは,ビルドやドキュメント生成などの機能を,ゴールという概念に基づき行なう。Mavenのゴールは,Antでタスクと呼ばれるものに近い。Mavenでは,行いたい処理のゴールを起動時に指定するだけでよく,Antのようにビルド・ファイルを記述する必要はない。Mavenのゴールは,インストールしただけの状態で既に数多く用意されており,特別な設定なしにそのゴールを指定できる。そのため,簡単に多くの機能が利用できるのである。表1に代表的なゴールを示す。この他にも100近いゴールが用意されている。 表1●ゴールの例
組み合わせて独自のゴールを定義することも,まったく新しいゴールを追加する事も可能である。すべてのゴールは,プラグインの形式でMavenに組み込まれている。プラグインを追加することで,Mavenにゴールを増やすことができる。プラグインは「Jakarta jelly」というXML形式のスクリプト言語で記述する必要があり,ゴールを増やす場合には多少の知識が必要となる。とはいえ,通常の利用法であれば,プラグインを追加する事はないだろう。これらのゴールによって提供される主な機能を紹介する。 (1). ライブラリ・ダウンロード機能 (2). ドキュメント生成機能
(3). 単体テスト機能 (4). ビルド機能
Mavenを利用する場合,POMファイルの定義とルールに基づいたディレクトリ構造が必要と述べた。まずはPOMファイルの定義例を紹介する(図2[全体表示])。例のように定型化されており,プロジェクトに合わせた内容にそれぞれ変更するのみであり,定義は非常に簡単である。 また,ディレクトリ構造についても, 課題は日本語情報の不足,翻訳スタッフ募集中 Mavenは,様々な作法を守ることで簡単に多くの機能を利用することができる優れたツールだが,残念ながら日本ではあまり知られていない。これは,Mavenの紹介や日本語情報が極端に不足していることも一因と考えられる。ご興味のある方は,是非利用してみていただきたい。日本語情報は,少し古いバージョンに関するドキュメントが,筆者も参加しているThe Ja-Jakarta Projectにて翻訳され公開されているので,参照していただきたい。 Ja-JakartaプロジェクトではMaven以外にも多くのソフトウエアに対する翻訳プロジェクトが活動している。しかし,ボランティア・ベースで活動しているため,すべてのプロジェクトが順調という訳ではない(筆者が取りまとめているTurbine翻訳プロジェクトも例外ではない)。JaJakartaの活動に興味のある方は是非,http://www.jajakarta.org/site/getinvolved.htmlにアクセスして我々と一緒に活動していただきたい。 黒住幸光(Kurozumi Yukimitsu) ■著者紹介 黒住幸光(くろずみ ゆきみつ)氏 株式会社アークシステム シニアコンサルタント。1989年よりスーパーコンピュータ向け言語処理環境の研究に従事。1995年,生まれて間もないJavaと出会い,Javaに専念するため転職。現在,株式会社アークシステムにてオープンソース・ソフトウエアを用いたWWWシステムの構築,コンサルティングを行うかたわら,雑誌への執筆,StrutsユーザーMLの管理,Ja-Jakartaプロジェクト Turbine翻訳の取りまとめなど幅広く活動中。メール・アドレスは,yukimi@arksystems.co.jp |