先ほどのSpring Rooのリファレンス(英語)にもある、「1.5. First Steps: Your Own Web App in Under 10 Minutes」を参考に、Rooアプリケーションを作成してみます。
「ten-minuts」という名前でディレクトリを作成し、移動します。そこで、rooコマンドを実行してRooを起動してください。
ここで「hi」と入力して[Tab]キーを押してみてください。「hint」と補完されたと思います。そのまま[Enter]キーを押してみましょう。
hintコマンドを入力すると、次に何をすればいいかのヒントを教えてくれます(英語ですが)。ヒントでは「『project』と入力して[Tab]キーを押せ」といっています。そのようにすると、以下のように表示されました。
roo> project --topLevelPackage
ここで、その名前の通り、アプリケーションのトップレベルパッケージとして「jp.cm.tenminutes」と入力します。
roo> project --topLevelPackage jp.cm.tenminutes
[Enter]キーを押してプロジェクトを作成しましょう。
ファイルが生成された後、hintコマンドを入力すると、今度はJPAプロバイダとデータベースをインストールしろといわれます。プロバイダは「ECLIPSELINK」「OPENJPA」も使用できますが、今回は「HIBERNATE」を使用しましょう。
また、データベースは「HYPERSONIC_IN_MEMORY」を指定しましょう。このデータベースは主にテスト用に用いられ、メモリ上にデータを保持します。
jp.cm.tenminutes roo> persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY
さて、ここからも適宜ヒントを参照しながら作成していきます。今度はエンティティを作るようにいわれました。
jp.cm.tenminutes roo> entity --class ~.Timer --testAutomatically
「~」は、トップレベルパッケージを意味しています。Timerクラスとそれに付随するファイルがjp.cm.tenminutesパッケージ直下にいくつか作成されました。
次はフィールドを追加するようにいわれます。Timerクラスにフィールドを追加しましょう。
jp.cm.tenminutes roo> field string --fieldName message --notNull
「message」という名前のフィールドをnotNull制約付きで作成しました。Timerクラスやそれに付随するいくつかのファイルが更新されました。
エンティティができたので、次はコントローラを作成しましょう。controllerコマンドを使用すると、Spring MVCを用いたクラスや.jspxファイルなどを生成してくれます。
~.Timer roo> controller all --package ~.web
必要なクラスがすべて作成できたので、テストを実行してみましょう。
~.web roo> perform tests
初回はMavenが依存するライブラリを取得するため、時間がかかるかもしれません。エンティティのテストが実行され、特に問題なく成功したと思います。
次に、アプリケーションをwarファイルにパッケージングしましょう。
~.web roo> perform package
「./ten-minutes/target」ディレクトリにwarファイルが作成されています。ここで、Rooシェルを終了しましょう。
~.web roo> quit
そして先ほど作成したwarをTomcatで実行してみます。
$ mvn tomcat:run
起動したらWebブラウザで「http://localhost:8080/tenminutes/」にアクセスしてみます。
上のような画面が表示されたでしょうか。左のメニューからTimerの作成や編集、リスト表示などもできます。
いかがでしたか?わずか10分足らずでCRUD機能を持ったアプリケーションとエンティティの単体テストが作成できてしまいました。しかも、このアプリケーションを作成する間、ソースコードや設定ファイルを記述することは一切ありませんでした。
今回は、とてもシンプルなアプリケーションだったので自分でコーディングすることはありませんでしたが、実際のアプリケーションでも初期設定や面倒な(かつ重要でない)部分をRooに自動生成させ、自分はビジネスロジックなどの重要な部分に集中できます。
次回は、Rooによって生成されたファイル内容や使用できるコマンドの詳細について解説する予定です。
Copyright © ITmedia, Inc. All Rights Reserved.