本稿では、Anvilプロジェクト(リンク)の発起人であるRyan Knight氏に、このオープン・ソース・プロジェクトについてInfoQと情報共有して頂く。AnvilはEnterprise Flexの開発の容易化に役立てるために設立されたオープン・ソースのプロジェクトである。加えてこれは、現行のFlexアプリケーションにポータル環境を提供する。
まず、RyanはInfoQにAnvilの概要を語った。
Anvilの説明には、少し背景に触れるのが助けとなるでしょう。2007年5月、私はWilliams社のGas Pipelinesのためのプロジェクトをスタートし、新しいEnterprise Flexプロジェクトを書きました。当時Flexはその企業の大型アプリケーションに使用するためにちょうど始まりつつありました。Flexで大型アプリケーションを作るには多くの困難が待ち受けるであろうことがわかりましたので、私達はFlex推進者であるAdobe社のJames Ward氏(リンク)の協力を求めました。彼はアプリケーションのモジュール化の方法やアプリケーションの異なる層でのイベントの取り扱い方などについて多くの初期指導を行ってくれました。この共同努力の一環として、私達はこのコアのフレームワークに関するオープン・ソース・プロジェクトを開始することにしました。
実プロジェクトのコア・フレームワークの一環としてAnvilがあったということのメリットは、Williams社で私が行った多くの仕事をオープン・ソース・コミュニティに寄与できたということです。またそれは頻繁に使われたため、この上なく明らかなバグの大部分が解決されました。またこの間、私達は何回かJamesに会い、アーキテクチャの方向性やコーディングの助けを得ました。そして現在、開発者が大型Flexアプリケーションを構築する際に直面する大きな困難を解決するハイレベルなフレームワークがあります。今日Anvilは、レイアウト環境、Spring Securityと統合するセキュリティ、モジュール・ローディングと管理といった、いくつもの有益なものを提供しています。またAnvilはFlex MDIプロジェクトをベースとしたポータル・フレームワークも提供しています(現在はFlexLibの一部)。これはレイアウトとウィンドウ管理を提供しています。
次にRyanはAnvilが他のFlexフレームワークとどのように違っているかを説明した。
Anvilでは、MateやCairngormといったフレームワークより様々な問題に取り組んでいます。これらのフレームワークではMVCのより下位の事柄に対処しています。Anvilは、どのようにFlexでの大型アプリケーションを効率的に設計するかという大きな構想にさらに焦点を当てています。ほとんどの場合、Mateのような他のフレームワークと共に使用できます。しかしCairngormでは1つのMVCだけをとるため、うまくいかないことがわかりました。複数回ロードして既に同じモジュールがある可能性があるモジュールは、実質的に各モジュールに対してミクロのMVCを持っていることになります。Cairngormにおいて、例えばあるモジュールがモデルを更新するためにあるイベントを取りやめにする場合、このパラダイムは成り立ちません。この更新は1つのモジュールに分離されなければいけないのですが、Cairngormはイベントを全体に伝えてしまうのです。
Anvilの使用許諾について
Apache 2.0 - ご自由にお使いください、ただしApache 2.0で何を行っているかをお知らせください。
Ryanはそれから、他のものがどうAnvilから利益を得られるかについて説明した。
私は常に他のコードから多くを学んできました。例えばプロジェクトの最も難しい部分の1つはantの組み込みプロセスを統合することでした。この方法を見出すため、実際に私はGoogleのGWTプロジェクトの構築プロセスに多くのアイディアを倣いました。従ってもし順調に進行しているアプリケーションが既にあるとしても、Anvilから得られるものは多くあると私は考えます。用法を集約することは非常に勉強になりましたし、私達は若干の技術的な困難に直面しました。
新しいアプリケーションに対して、私達はAnvilを考察し適合するかどうかを検討することを推奨します。Anvilはポートレットを表示や配置するシンプルなポータル環境の提供に役立ちます。またユーザがどのポートレットを表示するかを選択できるメニューシステムも備えています。
InfoQはまた、RyanにFlexモジュールおよびAnvilがどうそれらを使用するかについて論じるように頼んだ。
これは私達がJamesから学んだことのうち最も大きなものの1つで、いかにModuleと共に機能するかということでした。私達はロード・管理モジュールを扱うユーティリティを供することでこれらの成功事例の記録を試みてきました。アプリケーションをモジュールに分割することで、開発者がアプリケーションの独立したパートで作業できるなど、いくつかの利益を得られます。これは優れたことで、全プロジェクトをFlex Builderにロードする必要はありません。AnvilはまたFlexアプリケーションを簡単にコンパイルするためのantスクリプトを提供します。これはモジュールと結合されアプリケーション全体をコンパイルする際に別の利点が発生します。モジュールにより、コンパイル時間をスピードアップするためにコンパイルはスレッド化されます。
ランタイムや展開となったときモジュールは新たな利点を得ます。アプリケーションの小さな部分がスタートアップにロードされ、素早いユーザ・レスポンスが提供されます。その後アプリケーションの他の部分がオンデマンドでバックグラウンドにロードされます。このようにして、個々のモジュールは保証され、あるいはロード・バランシングやフェイルオーバーのため違うマシンに配布されます。
最後に、InfoQはRyanに読者が他に知っておく必要があることは何かを尋ねた。
私達は現在、コミュニティからのフィードバックを切望しています。Anvilがどこに向かうべきかのアイディアはたくさんありますが、私達はAnvilをより幅広い人々にとって有用なものにしたいと望んでいます。私は最近ビデオインタビューでいくつかの点について論じ、それをDrunkOnSoftware.com(リンク)に提供しました。
また私は最近Gorilla Logic (www.gorillalogic.com)に参加し、どのようにFlex Monkey (http://code.google.com/p/flexmonkey)の取り組みをそこで具体化させるかについて検討しています。私達はFlex Monkeyを用いてAnvilのそれぞれのモジュールをテストする方法を検討しています。
主に私達はコミュニティから、何が最も有用かというアイディアを得たいと考えています。
Ryan、ありがとうございました。
Anvil利用のRyanのチュートリアルを始めるにはAn Introduction to Anvil(リンク)にアクセスを。
原文はこちらです:http://www.infoq.com/news/2009/02/enterprise-flex-with-anvil