Spring Sourceのプロダクトと、その概要
■Spring Frameworkについて
「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を使いながら理解する
■Spring Sourceとは
以前、Rod Johnson氏は「Interface21」という企業のCEOを務めており、この企業ではSpring Frameworkの開発、コンサルティングおよびサポートを行っていました。
Spring Framework 2.5がリリースされてからしばらく後の2007年11月、Rod Johnson氏は社名を、「Spring Source」に変更しました。この辺りからSpring Sourceはオープンソース系企業の買収を行ったり、エンタープライズ系のプロダクトを発表していきます。
- 「Groovy」「Grails」を開発するG2Oneの買収
- Tomcatをベースにしたエンタープライズ向けアプリケーションサーバである「Spring tc Server」の発表
- WebアプリケーションをOSGiを用いてモジュール化できる「Spring dm Server」の発表
そして2009年、今度はSpring Sourceがヴイエムウェアに買収されました。その後も、セールスフォース・ドットコムとの提携やCloud Foundryの買収など、Spring Sourceの周りは目まぐるしく状況が動いていますが、現在は開発向けプロダクト、ミドルウェア、運用管理用プロダクトなど、さまざまな用途のOSSを開発、サポートする企業になっています。
■Spring Sourceのプロダクト
ここで、Spring Sourceが提供するプロダクトについて、代表的なものをいくつか紹介しましょう。先ほど少し紹介した、Spring FrameworkやSpring tc Server、Spring dm Server以外にも、いろいろなプロダクトがあります。
- Spring BlazeDS Integration
アドビシステムズがオープンソースとして公開している、BlazeDSとSpringを連携させるためのプロダクトです。BlazeDSを利用すると、Adobe AIR/FlexとサーバサイドのJavaアプリケーションでAMF形式の通信ができ、さらに、このSpring BlazeDS Integrationを使用することで、Springで管理されたコンポーネントとの連携が容易になります。 - Spring Security
ユーザーの認証と認可を行うためのフレームワークです。Spring Securityを使用すると、ログイン画面やロールベース認証処理の実装など、毎回同じような実装をしていた部分をフレームワークに任せられます。 - SpringSource Tool Suite(以下、STS)
EclipseベースのIDE(統合開発環境)で、Spring Source系プロダクトのサポート機能が充実しています。以前は有償でしたが、現在は無償で提供されています。Eclipseプラグイン形式でも提供されているので、Spring Source系プロダクトを使用する場合は使用して損はないと思います。 - Spring Data
これは、さまざまなデータストアへのアクセス手段をSpringアプリケーションで実現するためのプロジェクトです。このプロジェクトはさらに複数のサブプロジェクトに分かれており、NoSQLデータベースやHadoopとの連携、JPAやJDBCを用いたフレームワークなども含まれます。 - Spring Android
- Spring Mobile
- Spring Social
さらに、上記のように最近流行中の技術を取り込んだプロダクトもあります。このように、Spring Sourceが提供するプロダクトは、フレームワークからミドルウェア、開発ツールに至るまで、幅広く提供しています。それでは次に、本連載の主役である「Spring Roo」を紹介します。
アプリ開発をラピッドにする「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を使用してできることの一例です。
- Eclipse用プロジェクトとして設定ファイル生成
- CRUD機能を持ったscaffold生成
- DBやO/Rマッピングのセットアップ
- データベーススキーマからのEntity自動生成
- データベースとリンクしたEntityの操作
- 単体テストの自動生成
- Seleniumによる自動テストの生成
- Mavenによる依存性管理
- Spring Securityを使用した認証機能のセットアップ
- アプリケーションのバックアップ
このように、Rooを通していろいろな操作が可能です。次ページでは、Spring Rooをセットアップしましょう。
Copyright © ITmedia, Inc. All Rights Reserved.