「Spring Framework」というフレームワークは、JavaのWebアプリケーション開発者であれば、一度くらいは聞いたことがあると思います。Strutsフレームワークが流行していた2004年、筆者が初めて使用したDIコンテナ(この時点では「IoCコンテナ」と呼ばれていました)は、このSpring Frameworkでした。
知らない方のために、Spring Frameworkについて簡単に解説しておきます。Spring FrameworkはJavaのアプリケーションフレームワークで、2002年にRod Johnson氏により開発されました。DI(Dependency Injection)機能やAOP(Aspect Oriented Programming)機能、WebフレームワークやJDBC抽象フレームワークも独自に持っていて、StrutsやHibernate、iBATISなど、当時よく使用されていたフレームワークとの連携も容易に行えたため、世界中で使用されるようになりました。
2011年現在、おそらく世界で一番使用されているDIコンテナではないでしょうか(筆者の周りでは途中からSeasar2を使用することが多くなりましたが)。
Spring Frameworkの詳細については以下の記事をご覧ください。
Spring 2.0時代の開発スタイル
開発現場で広く使われるようになってきたSpring。その最新バージョン2.0に対応したSpring IDEを使い、Spring 2.0時代の開発スタイルを解説
Spring Frameworkで理解するDI
最近よく耳にする「DI」は、オブジェクトの再利用性を高めるとして注目される新しい考え方だ。このDIをSpringを使いながら理解する
以前、Rod Johnson氏は「Interface21」という企業のCEOを務めており、この企業ではSpring Frameworkの開発、コンサルティングおよびサポートを行っていました。
Spring Framework 2.5がリリースされてからしばらく後の2007年11月、Rod Johnson氏は社名を、「Spring Source」に変更しました。この辺りからSpring Sourceはオープンソース系企業の買収を行ったり、エンタープライズ系のプロダクトを発表していきます。
そして2009年、今度はSpring Sourceがヴイエムウェアに買収されました。その後も、セールスフォース・ドットコムとの提携やCloud Foundryの買収など、Spring Sourceの周りは目まぐるしく状況が動いていますが、現在は開発向けプロダクト、ミドルウェア、運用管理用プロダクトなど、さまざまな用途のOSSを開発、サポートする企業になっています。
ここで、Spring Sourceが提供するプロダクトについて、代表的なものをいくつか紹介しましょう。先ほど少し紹介した、Spring FrameworkやSpring tc Server、Spring dm Server以外にも、いろいろなプロダクトがあります。
さらに、上記のように最近流行中の技術を取り込んだプロダクトもあります。このように、Spring Sourceが提供するプロダクトは、フレームワークからミドルウェア、開発ツールに至るまで、幅広く提供しています。それでは次に、本連載の主役である「Spring Roo」を紹介します。
「Spring Roo」(以下、Roo)は、バージョン1.0が2009年末にリリースされた、比較的新しいプロダクトです。「Rooって何?」と聞かれて簡単に答えるとすると、「コマンドラインからソースファイルを生成するRAD(Rapid Application Development)ツール」です。
Rooは「生産性の向上」と「仕様変更・機能追加も容易な開発にする」という目的で開発されています。そのため、ほぼ決まりきった設定ファイルを記述するために、いちいちXMLファイルを編集する必要はありません。特定のコマンドを実行すれば、必要な設定がされた状態でソースファイル、設定ファイルを生成してくれます。
また、Rooで開発されたアプリケーションは標準で、いままで使用されてきた実績のあるフレームワークやライブラリを使用します(Spring Framework、Hibernate、JPA、AspectJなど)。つまり、Rooを使用するために新たにライブラリやフレームワークの使用方法を覚えなくてもいいということです。
そしてRooの実行方法ですが、基本的にCUIコマンドです(※上記STSを用いて、IDE上で実行することもできます)。RooはCUIでもコマンドをタブ補完してくれる便利なシェルを使用できます。
ここまで読んで、「Rooって開発時だけに使用するもので、実行時には関係ないの?」と思った方もいるかもしれません。
Spring Rooのリファレンス(英語)ページにある「Chapter 1. Introduction」の「1.1. What is Roo?」にあるように、Rooはランタイムライブラリではありません。確かに、生成されたソースにはRooに関連するアノテーションが付いていたりしますが、プログラム実行時にクラスパスに含めなければいけない.jarファイルはないので、パフォーマンスに影響が出ることもありません。
さらに、プロジェクト途中でRooの使用を中止する場合、コマンドを実行するだけでRooの依存性を簡単に削除できます。
以下は、Rooを使用してできることの一例です。
このように、Rooを通していろいろな操作が可能です。次ページでは、Spring Rooをセットアップしましょう。
Copyright © ITmedia, Inc. All Rights Reserved.