OSS Javaフレームワークはどんどん高度化している
以前、いつまでStruts1を使い続けるの?という記事を書きました。技術から離れているSEの方は、いまだにJavaのオープンソースフレームワークと聞くとStrutsくらいしか思い浮かばないという人も多いと聞きますが、その記事では、Strutsの問題点をあげて、そろそろ新しいフレームワークを使いましょうという話をしました。
しかし、単にSpring MVCに移行しましょうということではなくて、OSSを利用したエンタープライズJava開発の世界*1では、もっと根本的なレベルで進化が起こっているのではないかということを最近考えます。単純にOSSのJavaフレームワークといっても、時代によって考え方が大きく変わってきているという事実があるのです。この点についてちょっとまとめてみたいと思います。
第1世代(2000年〜2003年)
いわゆるStrutsとかHibernateといったフレームワークで、多くの人はいまだにJavaのフレームワークと聞くとこの世代のフレームワークを想像するかもしれません。この世代のフレームワークはWeb層とか、データアクセスなど特定の機能やレイヤーを対象としたフレームワークでした。実際のアプリケーションを作成するためには、独自に組み合わせるなどの工夫が必要でした。
第2世代(2004年〜2008年)
Spring Framework、Seasar2、JBoss Seamなどの時代です。このようなフレームワークは、一般にはDIコンテナとして知られていますが、DIだけやっているわけではなくて、実際には画面フレームワークやデータアクセスなど数多くのOSS(商用も)フレームワークを統合して組み合わせることができる仕組みになっています。複数のフレームワークを組み合わせるフレームワークとして一種のメタフレームワークと呼んでもよいかもしれません。だから、技術を分からない人にSpringとは何をするフレームワークなのか聞かれるとちょっと説明が難しいところがあります。StrutsならWebアプリのプレゼン層の作成を行うためのフレーワークですよとか説明できるのですが。
なお、このころからMavenやIvyを利用したライブラリの依存性管理を使うことが一般的となりました。OSSフレームワークが別のOSSフレームワークを利用しているなど大量かつ複雑な依存関係を手動で管理することが困難となってきたからです。
第3世代(2009年〜)
現在ではSpringなどは既にデファクトスタンダードとして空気のような存在となり、一般的に利用されるようになりました。(少なくとも海外では。)さらに、JavaEE 6なども標準化され、DIコンテナやデータアクセスなど多くの部分の標準化もされています。それで特に最近になって目立つようになってきた存在として、より上位レベルのOSS製品というか、業務パッケージのような製品が出てきたということがあります。こうしたOSSの製品の多くはSpringなどの既存のOSSをベースに作成されています。いくつか代表的な例をあげると
- エンタープライズサービスバス(ESB Mule、Servicemix、Spring Integration、JBoss ESBなど)
- エンタープライズポータル(Liferay、JBoss Portalなど)
- ビジネスインテリジェンス、帳票(Pentaho、Jasper Report)
- ビジネスプロセス管理(jBPM、Activiti、Buriなど)
- ビジネスルールエンジン(Droolsなど)
- 文書管理(Alfrescoなど)
などがありますね。日本語だと書籍が非常に限られるのですが、洋書だとこうした分野の本がたくさん出ています。
私がこれから読もうと思っているものを含めていくつか参考書籍を紹介しておきます。
- 作者: David Dossot,John D'Emic
- 出版社/メーカー: Manning Publications
- 発売日: 2009/08/07
- メディア: ペーパーバック
- クリック: 9回
- この商品を含むブログ (4件) を見る
Open-Source ESBs in Action: Example Implementations in Mule and ServiceMix
- 作者: Tijs Rademakers,Jos Dirksen
- 出版社/メーカー: Manning Publications
- 発売日: 2008/11/07
- メディア: ペーパーバック
- クリック: 1回
- この商品を含むブログ (1件) を見る
オープンソース徹底活用Alfrescoによるドキュメント管理入門
- 作者: 奥野章人
- 出版社/メーカー: 秀和システム
- 発売日: 2010/03/09
- メディア: 単行本
- 購入: 5人 クリック: 141回
- この商品を含むブログ (6件) を見る
- 作者: David Caruana,John Newton,Michael Farman,Michael Uzquiano,Kevin Roast
- 出版社/メーカー: Wrox
- 発売日: 2010/05/03
- メディア: ペーパーバック
- クリック: 1回
- この商品を含むブログ (1件) を見る
Business Process Management with JBoss jBPM
- 作者: Matt Cumberlidge
- 出版社/メーカー: Packt Publishing
- 発売日: 2007/07/30
- メディア: ペーパーバック
- クリック: 4回
- この商品を含むブログ (2件) を見る
- 作者: Mauricio Salatino
- 出版社/メーカー: Packt Publishing
- 発売日: 2009/12/16
- メディア: ペーパーバック
- クリック: 3回
- この商品を含むブログ (1件) を見る
Liferay Portal 6 Enterprise Intranets
- 作者: Jonas X. Yuan
- 出版社/メーカー: Packt Publishing
- 発売日: 2010/05/07
- メディア: ペーパーバック
- クリック: 4回
- この商品を含むブログ (1件) を見る
- 作者: Paul Browne
- 出版社/メーカー: Packt Publishing
- 発売日: 2009/03/30
- メディア: ペーパーバック
- クリック: 9回
- この商品を含むブログ (2件) を見る
Drools Jboss Rules 5.0 Developer's Guide
- 作者: Michal Bali
- 出版社/メーカー: Packt Publishing
- 発売日: 2009/07/13
- メディア: ペーパーバック
- 購入: 1人 クリック: 5回
- この商品を含むブログ (1件) を見る
The Definitive Guide to JasperReports (Expert's Voice)
- 作者: Teodor Danciu,Lucian Chirita
- 出版社/メーカー: Apress
- 発売日: 2007/08/27
- メディア: ペーパーバック
- 購入: 1人 クリック: 1回
- この商品を含むブログ (1件) を見る
海外にはプログラミングをしないSE専門職という仕事が限られるという背景もあるのか、こうしたOSSのパッケージの多くは商用製品と比較すると現状プログラマーを対象としたものが多いですね。だから、見栄えのよいGUIツールやマニュアルは商用製品と比べると劣っていることが多いようです。その代わり、OSSなのですからプログラミングができれば、容易にカスタムアプリケーションに組み込んだり、拡張したりすることができます。
まだまだ本格的に普及するには日本語化対応など問題がいろいろあると思いますが、こうした製品が出てきているということは知っておいてもよいと思います。いつまでもStrutsでカスタムWebアプリケーションを開発している時代ではないということです。この勢いだと5年後にはどういうことになっているのでしょうか?
(追記)
ちなみに、このエントリーでは第一世代や第二世代のフレームワークが必ずしも既に時代遅れということが言いたいわけではありませんのでご注意ください。高級言語が出てきてもアセンブリ言語が必要無いわけではないのと同様です。Hibernateなどの低水準のライブラリーの知識は依然として重要だと思います。ただ、OSSがどんどんソリューションよりの上流の世界に進出してきたということがポイントかと。OSSには国境がないから、今後SEとPGの境界もどんどんあいまいになっていかざるを得ないのではないでしょうか?