Spring Roo 入門: 第 1 回 ソースからビルドする

Spring Roo は、Spring ベースのアプリケーションを短時間で簡単に開発できるようにして、Java™ 技術の生産性を上げるための軽量のツールです。Spring Roo を使って作成するアプリケーションは、Spring のベスト・プラクティスに従い、JPA、Bean Validation (JSR-303)、Dependency Injection (JSR-330) などの標準に基づきます。Roo では使いやすく、コンテキストを認識したタグ補完シェルを使用してアプリケーションを構築することができます。さらに Spring Roo は拡張することも可能で、アドオンによってその機能を強化することができます。この記事では Spring Roo について紹介し、Windows® および *nix システムで Spring Roo ソースをビルドする方法を手順に沿って説明します。

Shekhar Gulati, Senior Consultant, Xebia

Shekhar Gulati は、Xebia India の Java コンサルタントです。これまで 6 年以上、Enterprise Java の経験があり、Spring、Spring-WS、Spring Roo など、一連の Spring プロジェクトに関する幅広い経験を持っています。彼が関心を持っている分野には、Spring、NoSQL データベース、Hadoop、Spring Roo のような RAD フレームワーク、クラウド・コンピューティング (主に Google App Engine、CloudFoundry、OpenShift などの PaaS サービス) などがあります。彼は執筆活動も活発に行っていて、JavaLobby、Developer.com、IBM developerWorks、そして彼自身のブログ (http://whyjava.wordpress.com) などに寄稿しています。Twitter で彼をフォローするには、http://twitter.com/#!/shekhargulati にアクセスしてください。



2011年 1月 25日

はじめに

2002年後半にリリースされた Spring フレームワークの目的は、J2EE (現在の JavaEE) 開発を容易にすることです。それから 8 年間、Spring は、Spring Security や Spring MVC、そして トランザクション管理、Spring バッチ、Spring 統合など、理解するにも使用するにも容易な Java コミュニティー・フレームワークまたは機能を提供し、その使命を十分に果たしてきました。けれども Spring はそれにとどまらず、Java 開発者の作業をさらに楽にし、より生産的にしようと、開発ツールを作成しました。それが、Spring Roo です。

Spring Roo (「参考文献」を参照) は、Java 技術のための拡張可能なテキスト・ベースのオープンソース RAD ツールです。Spring Roo は Spring ベースのアプリケーションを作成および管理するための強力なリソースとなります。以下は、そのミッション・ステートメントです。

Roo の役割は、エンジニアリングの完全性や柔軟性を犠牲にすることなく、Java 開発者の生産性を根本的かつ持続的に改善することです。

この生産性改善の探求が、Java 技術をベースとしたツールという形になりました。このツールは、プロジェクトのライフサイクル全体を通して持続的に生産性を向上させ、しかも開発者を特定の手法に縛り付けることもありません。Spring Roo は、Spring フレームワーク、Java Persistence API、JSP (Java Server Pages)、Spring Security、Spring Web Flow、Log4J、そして Maven といった、成熟度が高く実績のあるライブラリーの数々を利用します。Roo で生成したアプリケーションは、Bean Validation (JSR-303) や Dependency Injection (JSR-330) などの標準を使用し、ベスト・プラクティスである SpringSource 認定アプリケーション・アーキテクチャーに従います。

Spring Roo では、Roo シェルでコマンドを入力するだけで、JPA、Spring MVC、Spring Security、Log4j を使用したロギングなどの機能、JUnit や Selenium などのテスト・フレームワーク、そして Solr、JMS、E メールなどを追加、構成することができます。Roo を使ってこれらの機能を追加することで、時間が節約され、開発者の生産性が向上するというわけです。Roo ではビジネス・ロジックを作成することはできませんが、インフラストラクチャーを管理したり、アプリケーションのコンフィギュレーションを管理したりすることはできます。

Roo は開発時に使われるツールです。つまりアプリケーションの実行時に、Roo が使われることはありません。そのため、Roo によって、実行時のアプリケーションにパフォーマンスまたはメモリーのオーバーヘッドがもたらされることはありません。これにより、開発者は Spring Roo に縛られることなく、随時、簡単なキーストロークでプロジェクトから Roo を削除することができます。

この記事では、Roo シェルを使用して単純なサンプル Web アプリケーションを構築し、Spring Roo ソース・コードを Windows マシンまたは Ubuntu マシン上でビルドする方法を具体的に説明します。


Roo シェルの使い方

Roo シェルをロードし、コマンドを使って Roo シェルを操作することによって、アプリケーションを管理、構成することができます。Roo シェルは、タブ補完機能を持ち、コンテキストを認識し、ヒントを提供してくれるコマンド・シェルです。Roo シェルで hint コマンドを使用すれば、次の論理アクションについて Spring Roo の助けを求めることができます。Roo は、アプリケーションのコンテキストを判断して、次のアクションを提案するだけのインテリジェンスを持っています。例えば、entity コマンドを使用してエンティティーを作成したとします。次に hint コマンドを入力すると、Roo は field コマンドを使ってフィールドをエンティティーに追加するように指示を与えてきます。この機能が Roo の概念的な部分の割合を減らし、Roo を優れた学習ツールにしているというわけです。Roo の help コマンドと hint コマンドに従うことで、ドキュメントを一切参照することなく、完全なアプリケーションを作成することができます。

前提条件

Roo を使い始める前に、以下のものがインストールされていることを確認してください。

  1. Java V6 JDK
  2. Apache Maven V2.0.9 以降

Spring Roo をインストールする

スタンドアロンの Spring Roo をインストールする手順は、以下のとおりです。

  1. Roo のスタンドアロンのコマンドライン・シェルをダウンロードすることも、組み込み Roo STS (SpringSource Tool Suite) プラグインを使用することもできます。Spring ベースのアプリケーションの場合、Roo STS プラグインを Eclipse に組み込んで使用すると、多くの追加機能が提供されるので、両方ともダウンロードして、併せて使用することをお勧めします。
    1. Spring Roo
    2. SpringSource Tool Suite
  2. Spring Roo を任意のディレクトリーに解凍します。
  3. 環境変数を設定します。
    1. Windows マシンでは、%ROO_HOME% /bin をパスに追加します。ここで、ROO_HOME は、解凍された Roo ファイルへのパスです。
    2. *nix マシンでは、$ROO_HOME/bin/roo.sh へのシンボリック・リンクを作成します。

      (例: sudo ln -s ~/spring-roo-1.x.x/bin/roo.sh /usr/bin/roo)

アプリケーションを構築する

Roo の威力を具体的に明らかにするために、これから単純なエンタープライズ・カンファレンス・アプリケーションを作成します。カンファレンス・アプリケーションには、Speaker (講演者) と Talk (講演) という2 つのエンティティーがあります。講演者は 1 つ以上の講演を行うことができます。講演は、1 人の講演者によって行われます。図 1 に、単純なクラス図を示します。

図 1. Speaker と Talk のクラス図
Speaker の要素 (firstName、lastName など) と Talk の要素 (title と description) との関連付けを示す図

以下の手順に従って、アプリケーションを作成します。

  1. オペレーティング・システムのコマンドライン・シェルを開きます。
  2. mkdir コマンドを使用して、conference という名前のディレクトリーを作成します。
  3. シェルで conference ディレクトリーに移動します。
  4. roo と入力します。このコマンドによって、リスト 1 に示す Roo シェルが立ち上がります。
リスト 1. Roo シェルの起動
C:\Users\xebia\demo\conference>roo
    ____  ____  ____
   / __ \/ __ \/ __ \
  / /_/ / / / / / / /
 / _, _/ /_/ / /_/ /
/_/ |_|\____/\____/       1.1.B.RELEASE [rev 793f2b0]
Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
roo>

Roo シェルが起動された後は、Roo の hint コマンドに従って以降のステップを進めていきます。最初の hint コマンドでは、project コマンドを使って Mavenベースの Spring プロジェクトを新規に作成するように提案されます (リスト 2 を参照)。

リスト 2. Roo シェルでの hint コマンドの使用
Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
roo> hint
Welcome to Roo! We hope you enjoy your stay!
Before you can use many features of Roo, you need to start a new project.

To do this, type ’project’ (without the quotes) and then hit TAB.

Enter a --topLevelPackage like ’com.mycompany.projectname’ (no quotes).
When you're finished completing your --topLevelPackage, press ENTER.
Your new project will then be created in the current working directory.

Note that Roo frequently allows the use of TAB, so press TAB regularly.
Once your project is created, type ’hint’ and ENTER for the next suggestion.
You're also welcome to visit http://forum.springframework.org`for Roo help.
roo>

hint コマンドの提案に従って、project コマンドによってプロジェクトを作成します。このコマンドの必須属性は、ルート・パッケージの名前を指定する topLevelPackage だけです。この必須属性の他、ここではオプション属性として java 属性 (Java のバージョンを指定) と projectName 属性 (プロジェクトの名前を指定) の 2 つを使用します。入力するコマンドは、以下のとおりです。

	project --topLevelPackage com.dw.roo.conference --java 6 --projectName conference

上記のコマンドによって、以下の出力に示されているように、Maven V2 で管理された Spring ベースのプロジェクトが作成されます。

	Created C:\Users\xebia\demo\conference\pom.xml
	Created SRC_MAIN_JAVA
	Created SRC_MAIN_RESOURCES
	Created SRC_TEST_JAVA
	Created SRC_TEST_RESOURCES
	Created SRC_MAIN_WEBAPP
	Created SRC_MAIN_RESOURCES\META-INF\spring
	Created SRC_MAIN_RESOURCES\META-INF\spring\applicationContext.xml
	Created SRC_MAIN_RESOURCES\log4j.properties

再び「hint」と入力して Roo に次のアクションを尋ねると、今度は永続化メカニズムをセットアップするように提案されます。シェルで「persistence setup」と入力し、Tab キーを 3 回押してください。すると、--provider オプションが選択され、さらに「H」キーを押してから Tab キーを押すと、「HIBERNATE」と入力されます。プロバイダーを指定した後は、データベースを選択するために Tab キーを押します。数々の選択肢があることがわかりますが、このアプリケーションでプロバイダーとして使用するのは Hibernate なので、Google App Engine のような非リレーショナル・データベースを選択することはできません。そこで、とりあえずは HYPERSONIC_IN_MEMORY データベースを使用することにします。

	persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY

他にもユーザー名とパスワードなどのオプション属性がありますが、このサンプル・アプリケーションでは指定する必要はありません。

永続化メカニズムのセットアップが完了したら、再び hint コマンドを利用します。今度は、entity コマンドを使用してエンティティーを作成するように指示されます。実際のドメイン・オブジェクトを作成するために使用する entity の必須属性は、エンティティーの名前を指定する class 属性だけです。このサンプル・アプリケーションでは、必須 --class 属性の他に、--testAutomatically 属性を指定してドメイン・オブジェクトの結合テストを作成します。Speaker と Talk という2 つのエンティティーを作成してください。

	entity --class ~.domain.Speaker –testAutomatically
	
	entity --class ~.domain.Talk --testAutomatically

上記の ~ は、プロジェクトの最上位レベルのパッケージのプレースホルダーとして使用しました。

entity コマンドは、柔軟で機能が充実した JPA エンティティーを作成します。作成されるエンティティーには、ID、バージョン、EntityManager、そして引数なしのコンストラクターが含まれた JPA @Entity クラスがあり、persist、merge、remove、flush、count、find、findById などのメソッドを持つことになります。このコマンドの出力を見てみると、コマンドは (Speaker、Talk それぞれの) Java ファイルを作成しているだけでなく、名前が *Roo_*.aj で終わる AspectJ ファイルも作成していることがわかります。これらの *Roo_*.aj ファイルは、ITD (Intertype Declaration: インタータイプ宣言)、Mixin、または Introduction と呼ばれます。ITD は、Roo がコード生成による成果物として使用します。Roo は ITD を使用して、別個のコンパイル単位でコードを生成することができますが、コンパイル時には、各 ITD が同じ 1 つのコンパイル済みクラスに合成されます。AspectJ インタータイプ宣言は、ID およびバージョン・フィールド、そしてドメイン・クラスの永続化フィールドのゲッターとセッターを自動的に生成するために使用されます。

再び hint コマンドを使用すると、field コマンドを使ってエンティティーにフィールドを追加するように提案されます。そこでまずは、Speaker エンティティーにフィールドを追加します。

	field string --fieldName firstname --class ~.domain.Speaker --notNull 
	field string --fieldName lastname --notNull 
	field string --fieldName email --unique --notNull 
	field string --fieldName organization 
	field date --fieldName birthdate --type java.util.Date --past --notNull 
	field number --type java.lang.Long --fieldName age --min 25 --max 60

フィールドに追加するクラスは、--class オプションで指定することができます。

field コマンドは、--max--min などのオプションで JavaBean 検証固有のアノテーションを指定するために使用できるだけでなく、--fetch--column--unique などのオプションを使って JPA 固有のアノテーションを指定するためにも使用できます。date フィールドには、上記で使っているように、日付を過去の日付にするか、将来の日付にするかを指定することも可能です。field コマンドを使用すれば、これらのアノテーションを覚える必要はありません。

今度は、Talk エンティティーにフィールドを追加します。

	field string --fieldName title --class ~.domain.Talk --notNull 
	field string --fieldName description --notNull --sizeMax 4000

これまでの作業で、2 つのエンティティーを作成して、エンティティーにフィールドを追加しましたが、この 2 つのエンティティーの関係については指定していません。Speaker と Talk の間にある関係は、1 対多です (つまり、1 人の講演者が任意の数の講演を行えるということです)。関係を指定するには、field を以下のように使用します。

	field set --fieldName talks --element ~.domain.Talk --class \
~.domain.Speaker --cardinality ONE_TO_MANY
	
	field reference --fieldName speaker --type ~.domain.Speaker \
--class ~.domain.Talk –notNull

次に必要なのは、カンファレンス・アプリケーションの Web 層を生成することです。それには、controller コマンドを使用します。コントローラーとすべての関連 Web 成果物を生成するには、controller all と指定するのが最も便利な方法です。

	controller all --package ~.web

controller コマンドを初めて使用するときには、プロジェクトに Spring MVC や Tiles などの依存関係も追加されます。このコマンドの実行には時間がかかることがあります。それは、(依存関係が Maven リポジトリーに存在しない場合には) 依存関係のすべてをダウンロードしなければならないためです。また、このコマンドは Roo が持つ機能の 1 つを明らかにします。それは、Roo は必要な場合にだけ依存関係を追加するという機能です。

次に、logging コマンドを使用して log4j をセットアップします。

	logging setup --level INFO --package ALL_SPRING

Roo シェルを終了する前に必要な最後の作業は、entity コマンドで --testAutomatically を指定したときに生成した結合テストを実行することです。シェル内からテストを実行するには、「perform tests」と入力します。

Roo は呼び出しを Maven に委任してテストを実行するため、「perform tests」と入力するのは、mvn test コマンドを実行するのに相当します。シェルを終了するには、「q」または「quit」と入力します。

これらのコマンドによって、完全に機能するカンファレンス・アプリケーションが作成されます。次は、このアプリケーションを実行します。

アプリケーションを実行するには、「mvn tomcat:run」と入力します。これによって、jetty サーバーが起動します。Web ブラウザーを開いて、http://localhost:8080/conference/ にアクセスしてください。すると、図 2 に示す画面が表示されます。

図 2. カンファレンス・アプリケーションのホーム・ページ
ブラウザーに表示されたカンファレンス・アプリケーションのスクリーン・ショット。左側にメニュー項目、その右側にコンテンツが表示されています。

Create new Speaker (新規講演者を作成)」をクリックすると、新しい講演者を作成することができます。ユーザーを表示、編集、削除するには、「List all Speakers (全講演者を表示)」をクリックします。講演を作成する操作もこれと同様ですが、講演者が作成されるまでは、講演を作成することはできません。

単純なアプリケーションですが、この作成手順を通して、わずか数分で新しい Spring ベースの Web アプリケーションを一から作成できることがわかったはずです。この連載の第 2 回では、別の Roo 機能とアドオンを使用してアプリケーションを構築する方法を紹介します。

単純なアプリケーションを作成し終わったところで、次は Windows および Ubuntu のそれぞれで Spring Roo ソースをビルドする方法を説明します。


Spring Roo をソースからビルドする方法

Spring Roo の最新の本番リリースは V1.1.0 ですが、現在、V1.1.1 リリースに向けて活発に開発が進められています。Spring Roo をソースからビルドしなければならない理由には、以下の 4 つが挙げられます。

  1. Spring Roo の最新機能が必要な場合、Spring Roo は夜毎にビルドを提供しているわけではないので、Spring Roo のソースをビルドする必要があります。
  2. Spring Roo プロジェクト用の開発を行う場合。
  3. Spring Roo のアドオンを作成する場合。
  4. 単に Spring Roo コードをいろいろと試してみて、どのように実装または作成されているかを調べたい場合。

成果

このセクションを読み終える頃には、Windows システムでも、*nix システムでも、最新 Spring Roo ソース・コードの Maven ビルドを正常に実行できるようになるはずです。また、最新の Spring Roo を操作することも、Spring Roo プロジェクトを Eclipse または STS (SpringSource Tool Suite) にインポートすることもできるようになります。

Ubuntu 上で Spring Roo ソースをビルドするプロセス

Ubuntu (および他の *nix システム) 上でソース・コードをビルドするのは簡単です。それには以下のステップに従うだけでよいのです。

  1. Git (分散型ソース・コード管理システム) をインストールします。Git を Ubuntu システムにインストールする場合は、「sudo apt-get install git-core gitk」と入力します。
  2. Spring Roo をチェックアウトするために、Git を使用して「git clone git://git.springsource.org/roo/roo.git」と入力します。これで、ホーム・ディレクトリーに Roo ソース・コードのすべてが含まれる roo フォルダーが作成されます。
  3. データおよび通信に対して、暗号化をすることや署名を付与することができる GnuPG には、多機能の鍵管理システムと、あらゆる種類の公開鍵ディレクトリーへのアクセスを可能にするモジュールが用意されています。Roo は GPG を使用して自動的にビルド出力に署名を付けます。
  4. gpg --list-secret-keys コマンドを実行します。このコマンドにより、リスト 3 のような結果が出力されるはずです。
    リスト 3. gpg --list コマンドの実行結果
    C:\dev\roo-sourcecode\roo>gpg --1ist-secret-keys
    C:/Users/xebia/AppData/Roaming/gnupg\secring.gpg
    sec 2048R/2F96093B 2010-07-03
    uid                shekhar (spring-roo) <shekhargu1ati84@gmai1.com>
    ssb 2048R/B77E5C63 2010-07-03
    C:\dev\roo-sourcecode\roo>_
  5. 上記のような出力が表示されない場合、それは、最初に鍵を作成しなければならないことを意味します。gpg –gen-key を実行すれば、鍵を作成するための一連のステップが開始されます。鍵の作成ステップが完了したら、gpg –list-secret-keys を実行して、新しく作成した鍵がきちんと生成されていることを確認してください。
  6. 次に、作成した鍵を公開鍵サーバーに公開する必要があります。–list-secret-keys を実行して秘密鍵を表示し、その ID を書き留めて置いてください。私の場合、秘密鍵の ID は 2F96093B です。したがって、公開鍵サーバーに公開鍵を公開するためのコマンドは、gpg –keyserver hkp://pgp.mit.edu –send-keys 2F96093B となります (読者の皆さんは、最後の秘密鍵の ID の部分を変更してください)。
  7. 一部の Roo モジュールには、まだ OSGi フォームになっていない JAR が必要です。つまり、これらのモジュールには OSGi に対応したマニフェストがありません。Roo には、通常の JAR を OSGi JAR に変換できる、ラッピング (wrapping) という特殊なプロジェクトがあります。Roo を操作するには、その前にこのラッパーを実行しなければなりません。ラッパーを実行しないと、Maven が org.springframework.roo.wrapping.some_module を見つけられないというエラーが表示されることになります。ラッピングされた JAR を作成するには、ルートの Roo チェックアウト・ロケーションから、以下の内容を入力します。
    	cd wrapping
    	mvn clean install 
    	cd..
  8. 次に、mvn clean install コマンドを実行します (Maven V2 がシステムにインストールされている必要があります。インストールされていなければ、この時点でインストールしてください)。ソース・コードをビルドするときには、毎回 Maven が鍵のパスワード/パスフレーズの入力を求めるプロンプトを出します (パスフレーズは、GPG 鍵を作成するときに入力したものです)。パスフレーズを入力して Enter を押してください。ソース・コードのビルドには数分かかります。

Windows 上で Spring Roo ソースをビルドするプロセス

Windows 上でソース・コードをビルドする作業は、Ubuntu に比べると多少厄介です。以下のステップに従ってください。

  1. Git (分散型ソース・コード管理システム) をインストールします。ソース・コードのビルド・プロセスを開始するには、Windows マシン上に Git がインストールされていなければなりません。私の Windows マシンには、msysGit をインストールしました。お使いのマシンにすでに Git がインストールされている場合は、このステップは省略することができます。msysGit をインストールする際には、インストール・ロケーションを指定するように求められます。インストール・ロケーションを指定すると、コマンド・プロンプトが開き、コマンドが次々に起動されます。この状態は約 1 分間続きます。インストールが完了すると、画面にリスト 4 に示す内容が表示されます。
    リスト 4. msysGit のインストール
            { test "$bindir/" = "$execdir/" || \
                   { rm -f "$execdir/git.exe" && \
                   test -z "" &amp;&amp; \
                   ln "$bindir/git.exe" "$execdir/git.exe" 2>/dev/null || \
                   cp "$bindir/git.exe" "$execdir/git.exe"; } ; } && \
            { for p in git-add.exe git-annotate.exe git-apply.exe git-archive.exe 
    git-bisect--helper.exe git-blame.exe git-branch.exe git-bundle.exe git-cat-file.exe 
    git-check-attr.exe git-check-ref
                    rm -f "$execdirf$p" && \
                    ln "Sexecdir/git.exe" "Sexecdir/$p" 2>/dev/null ll \
                    ln -s "git.exe" "$execdir/$p" 2>/dev/null || \
                    cp "Sexecdir/git.exe" "$execdir/$p" Il exit; \
             done; } && \
            { test x"git-renote-https.exe git-renote-ftp.exe \
    git-renote-ftps.exe" = x ll \
                    { for p in git-remote-https.exe git-remote-ftp.exe \
    git-remote-ftps.exe; do \
                    rm -f "$execdir{$p" && \
                    ln "Sexecdir/git-remote-http.exe" "$execdir/$p" 2>/dev/null ll \
                    ln -s “git-renote—http.exe" "$execdir/$p" 2>/dev/null || \
                    cp "Sexecdir/git-remote-http.exe" "Sexecdir/$p" ll exit; \
              done; } ; } && \
            ./check_bindir "z$bindir" "z$execdir" "Sbindir/git—add.exe"
    
    -------------------------
    Hello, dear Git developer.
    
    This is a minimal MSYS environment to work on Git.
    
    You are in the git working tree, and all is ready for you to hack.
    
    Welcome to msysGit
    
    Run 'git help git' to display the help index.
    Run 'git help <command>' to display help for specific commands.
    Run '/share/msysGit/add-shortcut.tcl' to add a shortcut to msysGit.
    
    It appears that you installed msysGit using the full installer.
    To set up the Git repositories, please run /share/msysGit/initialize.sh
  2. Git 環境変数を設定します。Git は Windows パスにセットアップされている必要があるので、Windows パスに ${MSYSGIT}\msysgit\bin および {MSYSGIT}\msysgit\mingw\bin を追加します。ここで、${MSYSGIT} は msysGit がインストールされている場所です。新しいコマンド・プロンプトを開いて、「git」と入力します。すると、リスト 5 の出力が表示されます。
    リスト 5. Git コマンド・プロンプト
    C:\>git
    usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path]
               [-pl--paginate|I--no-pager] [--no-replace-objects]
               [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
               [-c name=value
               [--help] COMMAND [ARGS]
    The most commonly used git commands are:
       add        Add file contents to the index
       bisect     Find by binary search the change that introduced a bug
       branch     List, create, or delete branches
       checkout   Checkout a branch or paths to the working tree
       clone      Clone a repository into a new directory
       commit     Record changes to the repository
       diff       Show changes between commits, commit and working tree, etc
       fetch      Download objects and refs from another repository
       grep       Print lines matching a pattern
       init       Create an empty git repository or reinitialize an existing
       log        Show commit logs
       merge      Join two or more development histories together
       mv         Move or rename a file, a directory, or a symlink
       pull       Fetch from and merge with another repository or a local bra
       push       Update remote refs along with associated objects
       rebase     Forward-port local commits to the updated upstream head
       reset      Reset current HEAD to the specified state
       rm         Remove files from the working tree and from the index
       show       Show various types of objects
       status     Show the working tree status
       tag        Create, list, delete or verify a tag object signed with GPG
    
    See ’git help COMMAND’ for more information on a specific command.
    C:\>_
  3. Git を使用して Spring Roo をチェックアウトします。このステップでは、Git で最新のソースをチェックアウトすることによって、Spring Roo のローカル・クローンを作成します。コマンド・プロンプトを開き、Spring Roo をチェックアウトする場所まで移動します。「git clone git://git.springsource.org/roo/roo.git」と入力し、このコマンドが実行を完了するまで待ちます。コマンドが完了すると、Spring Roo をチェックアウトした場所に roo という名前のフォルダーが作成されているはずです。
  4. Windows 対応の GPG をダウンロードしてインストールします。GnuPG は、セキュアな通信とデータ・ストレージのための GNU ツールです。GnuPG を使用して、データを暗号化し、デジタル署名を作成することができます。Roo は GPG を使用して自動的にビルド出力に署名を付けます。GPG をインストールしたら、gpg –list-secret-keys を実行してください。すると、リスト 6 のような出力が表示されます。
    リスト 6. gpg list コマンドの実行結果
    C:\dev\roo-sourcecode\roo>gpg --1ist-secret-keys
    C:/Users/xebia/AppData/Roaming/gnupg\secring.gpg
    sec 2048R/2F96093B 2010-07-03
    uid                shekhar (spring-roo) <shekhargu1ati84@gmai1.com>
    ssb 2048R/B77E5C63 2010-07-03
    C:\dev\roo-sourcecode\roo>_
  5. 上記のような出力が表示されない場合、それは、最初に鍵を作成しなければならないことを意味します。gpg –gen-key を実行すると、鍵を作成するための一連のステップが開始されます。鍵の作成ステップが完了したら、gpg –list-secret-keys を実行して、新しく作成した鍵がきちんと生成されていることを確認してください。
  6. 作成した鍵を公開鍵サーバーに公開します。–list-secret-keys を実行して秘密鍵を表示し、その ID を書き留めて置いてください。私の場合、ID は 2F96093B です。したがって、公開鍵サーバーに公開鍵を公開するためのコマンドは、gpg –keyserver hkp://pgp.mit.edu –send-keys 2F96093B となります (読者の皆さんは、最後の秘密鍵の ID の部分を変更してください)。
  7. まず、ラッパー・プロジェクトを作成しておきます。一部の Roo モジュールには、まだ OSGi フォームになっていない JAR が必要です。つまり、これらのモジュールには OSGi に対応したマニフェストがありません。Roo には、通常の JAR を OSGi JAR に変換できる、ラッピング (wrapping) という特殊なプロジェクトがあります。Roo を操作するには、その前にこのラッパーを実行しなければなりません。ラッパーを実行しないと、Maven が org.springframework.roo.wrapping.some_module を見つけられないというエラーが表示されることになります。ラッピングされた JAR を作成するには、ルートの Roo チェックアウト・ロケーションから、以下の内容を入力します。
    	cd wrapping
    	mvn clean install 
    	cd..
  8. 次に、mvn clean install コマンドを実行します (Maven V2 がシステムにインストールされている必要があります。インストールされていなければ、この時点でインストールしてください)。ソース・コードをビルドするときには、毎回 Maven が鍵のパスワード/パスフレーズの入力を求めるプロンプトを出します (パスフレーズは、GPG 鍵を作成するときに入力したものです)。パスフレーズを入力して Enter を押してください。ソース・コードのビルドには数分かかります。
  9. 環境変数 ROO-DEV をシステム設定にセットアップします。この変数は、Roo プロジェクトの bootstrap フォルダーを指していなければなりません。この変数は、PATH 環境変数にも追加する必要があります (図 3 を参照)。
図 3. ROO-DEV 変数を設定する
「システム変数の編集」の入力ボックスを示すスクリーン・ショット

これで、Roo の最新開発バージョンを操作できるようになりました。コマンド・プロンプトを開いて、mkdir roo_dev_demo を実行し、新しい名前のフォルダーを作成し、roo-dev コマンドを実行してください。すると、図 7 に示す画面が表示されます。

リスト 7. ROO-DEV シェル
C:\Users\xebia\demo\conference>roo
    ____  ____  ____
   / __ \/ __ \/ __ \
  / /_/ / / / / / / /
 / _, _/ /_/ / /_/ /
/_/ |_|\____/\____/       1.1.B.RELEASE [rev 793f2b0]
Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
roo>

最新バージョンの Spring Roo を操作するために Spring Roo ソース・コードを更新したいという場合には、コマンド・プロンプトを開き、Spring Roo のソース・コードがある場所まで移動します。そして git pull コマンドを実行すると、リモートの変更がすべてローカル・クローンに取り込まれます。次に mvn clean install を実行すれば、更新されたソースがビルドされます。


まとめ

これまでの作業で、エディターを開くことも、ドキュメントを参照することもなく、単純な Web アプリケーションを作成しました。このアプリケーションでは、エンティティーで CRUD 操作を実行することができます。Roo が Java 開発者の生産性を大幅に改善することを、読者の皆さんがこの記事を読んでわかっていただけたことを願います。Roo は、ほとんどの開発者がすでに知っている、成熟度の高い安定した技術を使用します。

連載の第 2 回では、今回作成したアプリケーションをよりセキュアにするとともに、国際化対応およびメッセージング・サポート (SMTP および JMS) を追加し、アプリケーションをカスタマイズします。また、Roo に備わっているデータベースのリバース・エンジニアリング機能にも目を向け、このアプリケーションをフル装備のエンタープライズ・アプリケーションに変身させます。

参考文献

学ぶために

製品や技術を入手するために

  • IBM ソフトウェアの試用版を使用して、次のオープンソース開発プロジェクトを革新してください。ダウンロード、あるいは DVD で入手できます。
  • IBM 製品の評価版をダウンロードするか、あるいは IBM SOA Sandbox のオンライン試用版で、DB2®、Lotus®、Rational®、Tivoli®、および WebSphere® などが提供するアプリケーション開発ツールやミドルウェア製品を試してみてください。

議論するために

  • developerWorks blogs から developerWorks コミュニティーに加わってください。
  • developerWorks コミュニティーに参加してください。ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者が主導するブログ、フォーラム、グループ、ウィキを調べることができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Open source, Java technology
ArticleID=627563
ArticleTitle=Spring Roo 入門: 第 1 回 ソースからビルドする
publish-date=01252011