DI×AOPのこれまで、 Seasarの今、
そしてSlim3へ…


「Seasar Conference 2009 White」レポート

@IT編集部
平田修
2009/4/2


「Seasarは2.4を安定したバージョンとしたい」

 SeasarプロジェクトのもたらしたプロダクトSeasar2の最新形はどのような恩恵を開発者にもたらすのか。ひが氏のセッション「Seasar2の今と未来」からお届けしよう。

 ひが氏は、EclipseプラグインのDoltengでSAStrutsとS2JDBCを使ったWebアプリケーションをScaffold(自動生成)して作成し、ソースコードの変更もアプリケーションサーバの再起動なしで実現するHOT deploy機能のデモを行った。データベースにはPureJavaのRDBMS「H2」を使い、エンティティクラスやサービスクラス、テストクラスまでも自動生成される様子や再起動なしでコードの変更が反映される様子が、まさに「さくさく感のある開発」という印象を受けた。

デモ中のひが氏
デモ中のひが氏

 上記Seasar2の最新プロダクトがいかに便利かは、連載「Java初心者が超俊敏にWebアプリを作る方法」を参照していただいた方が理解しやすいと思うので、ここでは割愛する。最後に、今後のSeasar2についてひが氏が述べたことを紹介しておこう。

「Seasar2は行き着くところまで行った。開発するにもう十分なので、Seasar 2.4を安定したバージョンにして機能はあまり増やさない。バグフィックスは行うが、Seasar 2.5は出ない。機能追加はサブプロジェクトで行われるだろう」

Seasarの成果を基に世界標準へと向かうSlim3とは?

 ここでは、Seasar2の後継プロジェクトとしてもうすぐ完成するという「Slim3」の最新情報について、ひが氏のセッション「Slim3のすべて」からお届けしよう。

 Slimは「Simple and Less Is More」の略で、Slim3はアジャイル(俊敏)な開発のためのフルスタックのWebアプリケーションフレームワークだ。フルスタックとは、Webのビューとビジネスロジック、データベース操作の部分を含む。ライセンスはSeasar2と同様Apache Software License 2.0となっている。

 Slimのコンセプトは「簡潔さによって良いデザインが導かれる」というもので、近代建築の三大巨匠の1人でドイツ建築家のルートヴィヒ ミース ファン・デル・ローエ(Ludwig Mies van der Rohe)の名言「Less Is More(より少ないことは、より豊かなこと)」を基にしていて、現代美術の考え方の1つミニマリズムにも通じる。ひが氏は「ミニマリズムの源流には、日本建築や庭園、茶道など極力余分な装飾はせずに、本質的なものだけを浮かび上がらせるという日本的な考え方がある。だからこそ、日本人がLess Is Moreなフレームワークを作るのは意味があることではないかと思っている」と付け加えた。

 Slim3のポイントは3つある。1つは別の章で述べた「HOT deployment」。もう1つは、「Less configuration(少ない設定)」だ。これはCoC(Convention over Configuration)とアノテーションの適切な組み合わせによって設定ファイルを減らそうということ。CoCは「設定よりも規約」という意味でWebアプリケーションフレームワークRuby on Railsによって広まった考え方で、コードの書き方などで規約を守っていれば、フレームワークが自動で設定を行うというものだ。CoCを使うと設定ファイルは減るが、多用し過ぎると、規約を知らない人には分かりづらく、生産性も上がらないという面がある。

「CoCは誰が見ても納得しやすい部分は規約にして、それ以外はアノテーションで行うのがより良い方法だ。CoCが流行したように、Java 5のアノテーションも流行することによって1行のコードに5つものアノテーションを付けるようなこともたまに見かけて、アノテーション地獄という状況が発生してしまった。しかし、CoCとアノテーションは適切に組み合わせることによって面倒な設定ファイルを減らすことができる」(ひが氏)

 最後のポイントが「Less Learning Cost(少ない学習時間)」だ。Slim3は、Struts 1.2系の上に「Slim3 Struts」が、JDBCの上に「Slim3 JDBC」が、そして、それらの基盤DIコンテナとしてSeasarではなくSpringの上に「Slim3 Container」が乗っかっているという構成になっている。

Slim3の構成(ひが氏の講演資料を撮影)
Slim3の構成(ひが氏の講演資料を撮影)

「StrutsやJDBCの開発経験がある人は短期間で使い方を学習できる。多分、経験者なら1日もかからず使うことができるだろう。標準技術を極力使うことにしてあまり独自性を出していない」(ひが氏)という。

 Slim3 Containerは、Seasar2から設定ファイルをなくしたイメージで、設定ファイルを使う場合はSpringの機能を使うことができ、Seasar2のSMART deploy(HOT deploy)機能を搭載している。ビジネスロジックなどユーザーからの変更が入りやすい要件は、HOT deployによってSlim3 Container上のコンポーネントとして動かす。トランザクション管理やコネプションプール管理など非機能要件は、Springをそのまま使うことを想定しているという。

 Slim3 StrutsはSeasar2のSAStrutsにかなり近いイメージだ。Strutsを使いつつ、struts-config.xmlやvalidation.xmlなど面倒なものを書く必要がない。また、フィールドごとにスコープを持つことも可能だ。

 Slim3 JDBCはSeasar2のS2JDBCからSQLを自動生成する部分を削ったものだ。JDBCを使った開発で面倒な、ConnectionやStatement、ResultSetのクローズやJavaオブジェクトとのO/Rマッピング、SQLのパラメータ/引数のセットを解決することに徹している。Seasar2のS2DAOとS2JDBCを組み合わせたイメージだが、S2JDBCのメソッドチェーンによるSQLの自動生成とは異なり、よく使われるものはメソッドを使うことは例外に基本的にSQL文を書くことになるという。

 セッションでは、Slim3を使ったWebアプリケーションを実際に開発するデモが行われた。Slim3の開発はEclipseのWTPを使って行う。HOT deploy機能があるため、まずはアプリケーションサーバを立ち上げるところから始まる。何も作っていない状態でWebブラウザのアクションクラスへのURLを入力する。すると、当然何もないのでTomcatが「Not Available」のエラーメッセージが表示される。そこで「action」フォルダの下にURLを基にした命名規約でHelloActionクラスを作成する。

Slim3開発のデモの様子
Slim3開発のデモの様子

 その後、エラーが出たページを再読み込みすると、「メソッドが何もありません」というエラーメッセージが英語で表示される。エラーメッセージに従ってメソッドを作成した後にページを再読み込みすると、別のエラーメッセージを表示する。このように、Slim3開発では、エラーメッセージにはエラーを修正するにはどうすればよいかの説明が詳細に表示されていて、開発者はそれに従って開発を進めていけばよいという「エラーメッセージ駆動開発」とでもいうべきアドバイス機能があるのが特徴的だ。

 セッションのプレゼンテーションは基本的に英語で、Slim3のWebサイトのドキュメントも英語が使われている。また、セッション後にひが氏に、Slim3には別の章で触れたDoltengのようなScaffold機能はないのかを尋ねてみたところ、「Scaffold機能はMavenのプラグインで実現する。Mavenも標準的な技術だから」という答えをいただいた。セッション中も「標準」というフレーズが多用されたことからも、Slim3は日本発で世界標準へと向かおうとしているフレームワークなのだろうという印象が残るセッションだった。

関連リンク


Seasar Projectの全貌を探る
国産オープンソースプロダクトのコミュニティとして急成長するSeasar2。大手SIerもサポートを表明したJ2EEプロダクトの全貌を探る
業務用RIAの本命!? Flex+Java開発入門
本連載では、サーバサイドとしてJava、リッチなクライアントサイドとしてJavaと相性の良いFlexを用いたRIA開発の基礎を解説します。EclipseベースのIDEであるFlex Builderを使って、Tomcatで動くRIAをいくつか作成しましょう
Flex/AIR開発でデザイナとの協業を楽にする「yui」
デザイナとプログラマを“結”ぶオープンソース(前編)
 
Flex/AIR開発でデザイナと協業することになったら、ぜひ試してみてほしいオープンソースのフレームワークがあります

リッチクライアント & 帳票」フォーラム 2008/10/1
yuiを使ったFlexアプリを作って、便利さを体感しよう
デザイナとプログラマを“結”ぶオープンソース(後編)
 
ChartやDataGrildでデータが編集できるグラフアプリを実際に作成しながらyuiのさまざまな便利機能を体感しましょう

リッチクライアント & 帳票」フォーラム 2008/10/30
Seasar.NETでDIを始めよう
特集:.NET開発者のためのDI&AOP入門(前編)
 DI/AOPは.NET開発ではまだあまり浸透していないが、役立つ技術だ。プログラム・コードからDIの良さをお伝えする
Insider.NET」フォーラム 2007/12/10
コードで簡単に分かる“AOP”
特集:.NET開発者のためのDI&AOP入門(後編)
 “DI”や“AOP”は説明だけ読んでも難しくていまいちよく分からない。でもシンプルなコードを動かせば簡単に分かる
Insider.NET」フォーラム 2008/1/23
ひがやすを――Seasarと「ひがやすを飲み会」
広がれ エンジニアの輪(11) 
「エンジニアは評価されづらい。会社という枠を飛び越えよう」。オープンソースを仕事にしたエンジニアが語る、現代ITエンジニア処世術

1-2

Index
「Seasar Conference 2009 White」レポート
DI×AOPのこれまで、Seasarの今、そしてSlim3へ…
  Page1
DI×AOPが流行した背景と現状を振り返る
OSSプロジェクトからNPO法人へ
Page2
「Seasarは2.4を安定したバージョンとしたい」
Seasarの成果を基に世界標準へと向かうSlim3とは?


ご意見、ご感想はJava Solution 会議室へどうぞ


Java Solution全記事一覧





Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間