ひがやすを技術ブログ

電通国際情報サービスのプログラマ

Seasar2.4開発秘話

Seasar2.4の開発は、去年の今ぐらいからやっているので、ほぼ1年間開発に費やしたことになります。これは、Seasar2の歴史(3年弱の短い歴史ですが)の中で、最も開発に時間がかかったバージョンです。
2.4は当初、EJB3,JPA,JSFを使うためのAll in Oneプラットフォームの土台として開発を開始しました。今年の5月くらいには、実装を終えていたのですが、リリースはしませんでした。予想以上に、EJB3,JPA,JSFの人気がなく、あまりインパクトがないと考えたためです。
実際に(EJB3,JPA,JSF)使ってみて(今開発で使っています)も、標準という安心感はありますが、開発工数が削減されるようなものではありませんでした。ある開発者にSeasar2.3、S2DaoS2JSFの時と比べて書かなければいけないコードが2倍になったと聞いたときには、正直ショックを受けました。EJB3,JPA,JSFをプロジェクトに積極的に導入したのは私ですから。
そのようなときに、Railsが単なる流行から、本流へと進んでいるのを見て、「Javaはやっぱり重いじゃん、Rails並みの軽さと開発生産性の高さがなければ、今後Javaは生き残っていけない」と考えるようになっていました。
そこで、JavaRails並みの軽さと開発生産性の高さを実現するために考えたのが、「HOT deploy」です。HOT deployを使うと、アプリケーションサーバを稼動させたままで、ソースコードの変更を即座に認識できるので、非常にAgileに開発を進めることができます。また、設定ファイルを書く必要がないので、これまで以上に高い生産性を得ることができます。
生産性を高めるためには、DIコンテナだけではなく、Webのフレームワーク、データアクセスのフレームワークもそれぞれ生産性を高める必要があります。そのために、できるだけソースコードを書かずにすませるようにするフレームワークとして、TeedaのExtensionとUuji(うーじ:データアクセスのフレームワーク)が開発されました。TeedaJSFの実装であるCore部分は、かなり前に出来上がっていたのですが、JSFだけでは生産性がそれほど高くなるわけではないので、Extension部分を開発したのです。
Uujiはまだ開発中で、今年中のリリースを予定しています。
このSeasar2.4,Teeda,Uujiの開発生産性をさらに高めるために開発したのが、EclipseプラグインであるDolteng(どぅるてん)です。開発の中で、ちょっとたるくて機械的に行えそうなところは、できる限りDoltengで自動化することを狙っています。
Seasar2.4,Teeda,Uuji,Doltengを1セットにしてChuraのSuper Agileファミリーと読んでいます。ChuraはAll in Oneの総称です。
EJB3,JPA,JSFを見捨てるわけではありません。Super Agileで確立した技術は、順次EJB3,JPA,JSFのほうにポーティングしています。EJB3,JPA,JSFをより使いやすくするためのセットがEasy Enterpriseファミリーです。Easy Enterpriseファミリーは、Seasar2.4,Teeda,KuinaDao,S2Hibernate-JPA,Doltengで構成されます。中核は、使いづらいJPAを使いやすくするKuinaDaoになります。Seasar2.4は実はEJB3のコンテナでもあります。TeedaJSFを実装しています。
Seasar2.4とあわせて開発されたChuraファミリー(Seasar2.4,Teeda,Uuji,KuinaDao,S2Hibernate-JPA,Dolteng)を今後ともよろしくお願いします。