JavaWorld DAY 2005にて、ロッド・ジョンソン氏の基調講演を聴いた。「Trends in J2EE」ということで、J2EEの世界について、これまで5年とこれからの5年の概要という内容だ。
トピックスとしては、DI、AOP、Agileというところから、オープンソースやコミュニティ、そしてオフショアもからめたこれからエンジニアに必要なスキルといったところ。J2EEの現状をうまく概観した内容である。個人的には、驚きも無く、目指しているものと変わらなかったということで一安心。とはいえ、いくつかトピックスを。
J2EE and OOP
やはりDomain-Driven Developmenetに言及。これまでのデザインパターンは真のデザインパターンではなかったという切捨て具合がステキ。ここは、個人的にも興味あるところで、過去のエントリ(賢いデータは必要なのか その1 その2)で激論があったが、どういった場合にOOP的な実装が有効なのかは見極めたいところである。
最近では、ランタイムではOOP的ではあるが、実装時にはデータと振る舞いを分離すれば良いのではないかというアイデアを試行中。ようは、わかりやすければどっちでもいいのだが。
Community Innovarion
オープンソースの話題から「イノベーションはコミュニティから」というメッセージ。過去は仕様ありきであったが、それは机上の空論。アプリケーション実装に関しては、コミュニティでこそイノベーションは作られると。ただし、プラットフォームレベルのAPIについては標準化が必要。例えばトランザクション系やJMS、JMXをあげていた。
AOP
特にAOPについて時間を割いていたように感じた。ここ数年でAOPによってアプリケーションの実装が変わるであろうと。なお、AOPのAPIというのは、AOP Allianceが決定したものを実装するのが一般的だ。つまりJavaで標準化されるような話ではないため、.NETでも採用されているはずだ(Spring .NETがあるので)。そういう高いポータビリティが実現できるのは面白いところだろう。バイナリ織り込み型AOPツール(AspectJ/AspectWerkz)の力を100%使い切ったアプリケーションというのを早く見てみたいものだ。
DI
DIについてはテストが強調されていた。Unit TestとTDD(Test Driven Devepoment)については、さらに真剣に取り組む必要性があるだろう。
Aglie
この数年でAgileは、Coolなものから普通なものへと変わっていくだろうと。ここでのキーワードが、Unit Test/TDD、DI、AOPというもので、こういったツールがAgileを支えているわけだ。
最後に、ロッド・ジョンソン氏が言っていたのが、
Look beyond technical skill. "Communication skills" and "Understand how to deliver value to business"
すべては、ここに集約される。
