Seamの今後についての発表
(原文へのリンク)
Seam.Next 計画の第1フェーズに関する詳細をご報告します。私たちがこの作業に取り組んでいる間、辛抱強くお待ちいただき、 e-メール、 IRC 、 Seam フォーラムでフィードバックを下さったすべての方々に深く感謝します。この計画をまとめるのにご尽力いいただいた、モジュール開発リード、主要なコミュニティメンバー、そして、その他の方々に対して感謝します。それはまさに協調作業と言えるものでした。私たちは議論してきたこのアイディアとゴール、これからの方向性について胸を踊らせております。
その肝心な詳細に入る前に、まず最初にそのような変更をすることに至った動機を説明し、その次に、私たちのゴールの全体像についてお話したいと思います。これを説明するのに最良の出発点は Seam 2 でしょう。
Seam 2
Seam 2 で私たちがやってきた事を振り返ってみると、そのフレームワークの多くの側面において成功してきたと言ってもよいと思います。その成功の最も決定的な要因の一つはその統合にあります。Seam 2 はコアフレーワーク機能(依存性注入、コンテキスト、イベント、など)と、アプリケーション開発が生産的な活動になるようなそのコアフレームワーク上に構築された十分便利な機能を提供してきました。
また、Drools、jBPM、Wicket、Spring などのいくつかのサードパーティ技術との統合も提供しました。その上に、すべてを一緒に結びつける優れたドキュメンテーションも提供し、新しい開発者がスピーディに開発できるようにしました。seam-gen や JBoss Tools といった非常に優れたツールについては言うまでもありません。
全体として見れば、Seam 2 は開発者が現代的な Web アプリケーションを構築するときに直面する問題の多くを開発解決する、成熟した、バランスの取れたフレームワークであることを証明しています。
CDI がやって来た
CDI がすべてを変えました。型の安全性と拡張性に集中してSeam のコアフレームワーク機能の多くを標準化し、それらを Java EE プラットフォームの一部としました。これにより、もはや独自フレームワークというものは必要なくなりました。つまり、任意の Java EE 6 互換コンテナは理解しやすいプログラミングモデルを最初から提供します。コアサービスを提供するために追加ライブラリを補う必要はありません。
これは偉大な一歩でした。あなたのアプリケーションが独自の標準に反して書かれるということは良いことです。それはベンダーロックインを避ける助けになりますし、開発者としてのあなたの知識が移植可能になるということを意味しているからです。それは、あなたにとって拡張機能とツールのエコシステムの成長に参画するための良いポジションを獲得することにもなるのです。
どこでも CDI を
CDI がリリースされてからというもの、私たちの仕事の原則の一つは「どこでも CDI を」というものです。私たちのゴールは、できるだけ多くの箇所で CDI を使えるようにすることによって、開発者の生産性を今まで以上に高めることです。そのために、私たちは他のプロジェクトチームに対して彼らのチーム自身が CDI への統合を直接提供するように働きかけ、支援してきました。私たちは、これこそが CDI エコシステムを強化するものであり、開発者がツールと格闘するのではなく、よりビジネスの問題解決に集中できる環境を提供する主な要因だと信じています。
このことは、もちろん、Drools、jBPM(CDI サポートは対応中)、GWT、 Wicket、などのCDIが利用可能になったテクノロジーに対してサポートを提供するSeam のような統合フレームワークが必要なくなったことを意味しています。さらに、Seam 2 で提供したツール(例えば、sem-gen や JBoss Tools)は、プロプライエタリなコアフレームワークをベースとしているため、これから出される新規のツールは、自然の成り行きとして、CDI によって提供される新しい標準ベースのコンポーネントモデルに焦点を合わせるべきです。これが Forge が、 Java EE アプリケーションの構築に集中する、単独でトップレベルのプロジェクトになった理由です。
Seam 3
前の図を見ると、標準化の結果として Seam を構成する多くの部分がオリジナルのプロジェクトの範囲の外へ移動したことがお分かりになるかと思います。これは Seam に明らかに変化があったことを意味しています。Seam 3 は残った部分を CDI のポータブル拡張機能の集合体として作りなおしたのです。本質的には、私たちがやってきたことは、 Seam 2 の中に存在した最も便利なものの多くを実装するのと同時に、新規機能を追加したことです。しかも、Java EE 開発者がこれらの機能をプロジェクトに jar ファイルを追加するだけでアプリケーションに簡単に追加できるようにモジュラー構造でそれらを実現しました。
この時点で、これは後から分かったことですが、プロジェクトの性質が前のバージョンから劇的に変化したのに、この新しいプロジェクトを Seam 3 と呼ぶという愚かな選択をしてしまったとのだと思います。CDI のための便利な拡張の集合を作るのは間違いなく価値のあるゴールではありますが、Seam 3 自身は Seam 2とは違ってもはや完全に統合されたフレームワークスタックではありません。この変化の直接の結果として、多くの方々はそのドキュメンテーションや新しいユーザー向けの開発ガイドに失望してしまいました。
ユーザーが望むものは?
コミュニティから得たフィードバックには、広い範囲の懸念が含まれていましたが、次のような共通の領域にまとめることができました。
- 入門ガイド(Getting Started Experience)
これらの背後には2つの強いメッセージの存在を感じる取ることもできます。
- 開発者の中には移植性に主に関心がある人たちがいます。アプリケーション実装が特定のコンテナ実装にロックインされることを望まず、異なる環境においてフレームワークを自由に使えるということを重視する人たちです。
- 多数の開発者は単に動作する end-to-end のフレームワークを望んでいます。構成要素を自分で組み合わせたり、統合の仕方について苦労をすることは望みません。異なるプロジェクトからの複数のドキュメントを読まなければならないことを望まず、アプリケーションフレームワークに対する主な要求は生産性、つまり仕事を速く効率的にこなすこと、と考えている人たちです。
ここで問題となるのは、いかにして Seam 2 が提供してきたような完全に統合されたフレームワークスタックの開発へ戻るのか、ということです。そしてそのフレームワークは、ポータブル拡張機能(または、それらの組み合わせ)を提供し、CDI が提供される任意の環境上で実行されるのです。私たちはコミュニティリーダーやモジュール開発リードたちと作業をし続け、これらの懸念に対してチャレンジをするという提案をまとめ上げました。
最初のステップはコミュニティがオーナーとなってポータブル CDI 拡張機能を作るということです。つまり、それは開発者が自分自身のアプリケーション内で利用できるデファクトの機能セットであり、どのコンテナに対してもデプロイできるようなものです。このプロジェクトの一つの主要なゴールは Java EE コミュニティを成長させ、統一させることです。Apache MyFaces CODI チームや CDISource チーム、Java EE コミュニティの主要メンバーなどの他の CDI 機能拡張開発者と力を合わせ、別々のコミュニティの集まりよりも強力なコミュニティを作ろうとしています。
これは、プロジェクトが中立であり続けられることを保証するために企業に属さないので、本物のプロジェクトになるに違いありません。私たちは Apache がこのプロジェクトをホストするするのに非常に良い場所であると見なしています。企業の政治に関係の無い非営利団体で、コミュニティで数々の成功したオープンソースプロジェクトを生み出してきたという確固たる評判があるからです。さて、難しい話は抜きにして、さっそく、 Apache DeltaSpikeプロジェクトの紹介をしましょう。
Apache DeltaSpike
あなたがこれを読むときまでには、Apache DeltaSpike は Apache インキュベーターに提出され、トップレベルの Apache プロジェクトになるためのプロセスを開始していることでしょう。DeltaSpike はポータブル CDI 拡張機能の集まりで、Java EE コミュニティでのコラボレーションによって構築されます。それは、さまざまな Java EE オープンソースベンダーからのコードのコントリビューションによって生まれ、エンタープライズアプリケーションを構築するための数々の本質的な機能を提供します。移植性はこのプロジェクトの主原則で、多くの異なる環境で実行可能なフレームワークを開発する多くの開発者の要求を満たします。
それが最初にリリースされた後には、現在の Seam 開発チーム (フルタイムとボランティアのコントリビューターから構成される)は、 MyFaces CODIチーム、 CDISource チーム、他の Java EE コミュニティメンバーと一緒になって、新規機能の開発、イノベーション、バグ修正、その他の改善といった DeltaSpike の開発を遂行します。DeltaSpikeのリリーススケジュールについて言及するのは私の役割ではありませんが(これはApache DeltaSpike Podling Project Management Committee (PPMC)によって決定されるものです)、私はそれが活発なプロジェクトになるであろうということに 100% の確信があります。それは、価値があるプロジェクトなので、世間の注目を浴び、コントリビューションを得て、多くの進行中のリリースを生み出すことでしょう。
Apache DeltaSpike の最初のリリースは、共通のコア、すなわち、機能拡張のベースとなる機能拡張のセットから構成されます。それは複数の Java EE コンテナにわたって移植性を保証するために広範囲にテストされ、他の機能群を開発するための強固な基盤を提供します。最終的にはこの計画は Apache DeltaSpike が Seam に現在見つけることができる機能の多くを組み込めるようにするものです。
統合フレームワーク
私たちは end-to-end の開発スタックを要求する開発者のニーズについても言及しておきたいと思います。この詳細についてはまだ作業中ではありますが、Seam 2 の精神を引き継ぎつつ、しかもより生産性の高い、完全に統合されたフレームワークを提供するということは私たちの中では高い優先度の作業になりますので、どうかご安心いただきたいと思います。ニーズに沿った完全に統合されたフレームワークを提供するための進行中の良いアイディアがいくつかあります。あなた方は私たち同様にこれから起こることにきっと興奮することでしょう。詳細については、数ヶ月の間に起こることに注意していただきたいと思います。
Seam はどうなるのか?
私たちはSeam にすでに多大な投資をしてきた開発者に対してもケアしていきますので、どうか心配しないでください。私たちは見通し得る将来において、Seam 3 の開発を継続します。実際、近々リリースされる Seam 3.1では数多くの興味ある新規モジュールや改善が含まれています。繰り返しになりますが、私たちは Seam コミュニティに対して、上で述べた新たな取り組みがあなた方すべてにとっての利益となるよう全力を傾けたい思います。これから数ヶ月の間、このビジョンを公開するのに今しばらくご辛抱いただくことをお願いし、引き続きご支援をいただくことに対して感謝いたします。