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の構成(ひが氏の講演資料を撮影) |
「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のWebサイトのドキュメントも英語が使われている。また、セッション後にひが氏に、Slim3には別の章で触れたDoltengのようなScaffold機能はないのかを尋ねてみたところ、「Scaffold機能はMavenのプラグインで実現する。Mavenも標準的な技術だから」という答えをいただいた。セッション中も「標準」というフレーズが多用されたことからも、Slim3は日本発で世界標準へと向かおうとしているフレームワークなのだろうという印象が残るセッションだった。
Slim3 - Slim3 via kwout
■ 関連リンク
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エンジニア処世術 自分戦略研究所 > コミュニティ活動支援室 2009/3/25
|
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全記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|