Cairngormは、最も長い歴史を持つ、最も成熟したFlexフレームワークだ。これは、現在、Adobeによって所有され、オープンソース化されている。また、AdobeのRIAコンサルティングサービスによって広く使用されている。Cairngormを作成したAdobe Consultingのチームは、RIA開発のデザインパターンフレームワークを最も早くから提唱していた。Cairngormは、RIAユーザーインターフェイス開発のみを対象として存在しているミクロアーキテクチャフレームワークであるにも関わらず、Cairngormアダプタには、JEEの世界でよく見られるMVCベースのデザインパターンが多いことが特徴だ。
Cairngormは、エンタープライズRIA開発フレームワークであると考えられる。階層化されたMVC実装は、複雑な業務ロジックを持つスケーラブルRIAアプリケーションの開発に有用である。Cairngormは、非同期通信、イベントドリブン、および非スレッド化のFlexプラットフォームの上で高度な業務アプリケーションを構築する、高速で信頼性の高い手段となる。
Cairngormの特性を見れば、これが、小規模で、すぐに作成できるプロトタイプアプリケーションには適していないことも明らかである。Adobeは次のように述べている。
Cairngormミクロアーキテクチャは、エンタープライズRIA開発者向けのフレームワークとなることを目的としています。ごく単純なアプリケーション (例えば、プロトタイプアプリケーションなど) や、1つのビューしか持たないようなアプリケーションを作成する場合は、Cairngormが提唱するものと同じようなモデル、ビュー、コントロールの分離を求めない、"Model 1" ソリューションを検討するとよいでしょう。Cairngormアーキテクチャの長所が活きてくるのは、複数のユースケースやビューを持つ複雑なRIAアプリケーションを、多数の開発者がチームとして開発する場合、また開発チームが複数の分野にまたがり、設計者や技術者、デザイナーなどを含む場合です。
これは、実際にはActionScript 3フレームワークの1つである。PureMVCは、Cairngormとは異なり、Flash、Flexまたは他のAdobeのAS3クラスのいずれにも依存しない。このため、これは、FlashベースまたはActionScript 3アプリケーションのいずれを開発する場合でも使用することが可能だ。
名前が示唆しているとおり、PureMVCは、モデル、ビュー、コントローラの3層構造を含むMVCデザインパターンに従って実装されている。このフレームワークについては文書化が非常に進んでおり、Webサイトには、開発を始めるのに役立つ豊富な情報が用意されている。
PureMVCは、ActionScript (厳密な型指定を行う、完全なオブジェクト指向言語。JavaScript と同じ標準 (ECMAScript) に基づく) に完全に基づいて実装されているため、他のオブジェクト指向言語への移植が比較的簡単である。実際に、PureMVCは次のように述べている。
AS2、C#、Java、およびColdFusionの4言語へ移植版が作成されている途中であり、それらの公開が近いことをお知らせできて嬉しく思っています。これにより、PureMVCを、FlashLite、.NET、Windows Mobile、Silverlight、J2ME、SE、EE、 ColdFusion などで導入することができます。
このような移植版は、多くのデモやユーティリティと合わせて、世界中に広がる熱心な協力者によって作成されています。翻訳者の支援もあり、PureMVCの資料は、フランス語、ドイツ語、ロシア語、中国語、日本語など他の言語でも普及しています。このような多くの人のたゆみない努力によって、一人の人間で行っていた単純なプロジェクトが、真の世界的なオープンソースとなりつつあります。まもなく、皆さんは、このような知識の宝庫を作り上げている人々の作業のすばらしさを知り、彼らを賞賛することになるでしょう。いつか彼らの中の誰かに会ったときは、ビールで乾杯してあげてください!
ActionScript (ECMAScript) が、Adobeの使用するのと同じFlashエンジンと一緒に次世代のFirefoxに組み込まれることを考えると、PureMVCは、クロスプラットフォームなリッチアプリケーションを開発するRIA開発者にとって非常に有用で、使いやすいツールであると言える。
Flexも、単純なMVCベースFlexフレームワークである。これは、最初のColdFusion向けModel-Glueを、その作成者であるJoe Rinehart氏がFlexに移植したものである。Model-Glue: Flexについての肯定的なコメント(source)は、こちらを参照して頂きたい。Model-Glue: Flexのデザインは、CairngormやPureMVCなどのフレームワークよりも軽量である。このため、簡単なプロトタイプの作成や、単純なFlexアプリケーションの開発をより簡単に行うことができる。
ServeBox Foundry (sbasfoundry) は、Flex 2アプリケーション開発のために作成されたActionScript 3 / Javaフレームワークである。デザインは、いくつかのデザインパターンに基づいている。また、Flex 2開発においてよく発生する問題を解決するためのツールも含まれている。例えば、モデルとビューの同期、スクリーンブラウズ、アクセス制御リスト (現在、開発中)、ローカライゼーション、およびラベルの外部化などの問題である。
Foundryは、中規模から大規模なエンタープライズRIAシステム開発を対象として設計および実装されている。これには、Foundry Flexプラグインとサーバーサイドプロセスを密接に統合するためのJava共通モジュールが含まれる。
Guasax Flex Framework (download)
Guasaxは、適切に管理されるスケーラブルなFlexアプリケーションを提供するための、使いやすいプログラミングフレームワークである。
Guasaxフレームワークのライフサイクルでは、MVCパターンに基づきプログラムの処理が実行される。Guasaxの特徴は、業務ロジックの処理を構成するためにXMLファイルを使用することである。これは、Java Strutsフレームワークに似ている部分がある。Guasaxは、Guasaxコンポーネントを開発することにより拡張が可能だ。
当初、ActionScriptベースのフレームワークであるARP (Ariaware RIA Platform) は、Aral Balkan氏によって開発されていたが、現在では、それがオープンソースFlash(source)プロジェクトとして提供されている。ARPは、現在、ActionScript 2およびActionScript 3でのMacromedia、Flash、およびFlexベースのRIA開発をサポートする。
ARPは、Flashコミュニティのために開発された最も古いフレームワークと言えるかもしれない。ARPの最初のバージョンは、Flash 5におけるものであり、2000年に作成され、その部品はオープンソースFC-Libライブラリとしてリリースされた。これが、やがて、Flash MXまでに進化し、その部品もMooseライブラリの一部としてオープンソースでリリースされるようになった。ARPは、Flashから進化したものであるが、現在では、FlexまたはAIRのどちらでも使用できる。コードは、Flashクラスに直接的にアクセスできるため、他のFlexベースのフレームワークに比べてパフォーマンスが高いと言われている。
Flestは、エンタープライズレベルのRIAを作成するためのActionScript 3 / Flexアプリケーションフレームワークである。これは、コントローラ、ファクトリ、コマンドなどのデザインパターンを使用する。高い効率性、単純性、および実用性が、デザインの特性として必須であるとされている。Flest Frameworkは、開発環境の構築を支援する、軽量で使いやすいツールセットとして設計および実装されているが、同時に、開発者それぞれの意思を尊重できるよう最大限の自由度が提供されている。
ここで取り上げたフレームワークの他にも、あまり広く使用されていないフレームワークがいくつかある。EasyMVC(source)、Adobe FAST(source)およびJoeberkovitzのフレームワーク(source)なども調べて欲しい。
RIA UIのための開発フレームワークだけでなく、RIAの開発者を支援するフレームワークやリソースが他にもある。例えば、FlexUnit (source)(ActionScript 3向け単体テストフレームワーク)、FlexLib(source) (オープンソースのFlex 2コンポーネントライブラリ)、AS3CoreLib(source) (優れたJSONパッケージを備えた、いくつかの基本的なユーティリティのためのActionScript 3.0ライブラリ)、およびGranite DS (source)(EJB3/Spring/PojoサービスをサポートするJ2EEアプリケーションサーバー向けの Adobe Data Servicesの代わりとして使用できる無償のオープンソース) などがある。
InfoQでは、Flexオープンソース開発コミュニティの中で新たに開発されるものについて、今後もレポートを続けていく予定だ。