InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

オープンソースFlex開発フレームワークが示すプラットフォームの大きな動き

作者 Moxie Zhang , 翻訳者 編集部 投稿日 2008年1月24日

セクション
デベロップメント
トピック
RIA ,
Java ,
リッチクライアント/デスクトップ
タグ
Flex
Adobe Flexおよびその周辺テクノロジは、RIAの本流となりつつある。Flexのコミュニティは、まだJavaやマイクロソフトのプラットフォームのコミュニティほど大きくはないが、熱心なFlex RIA開発者たちの協力を受けて着実に成長を続けている。この結果、以下に紹介するように、多数のオープンソース開発フレームワークが作成されている。

 Cairngorm (download)

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アプリケーションを、多数の開発者がチームとして開発する場合、また開発チームが複数の分野にまたがり、設計者や技術者、デザイナーなどを含む場合です。

PureMVC (download)

これは、実際には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開発者にとって非常に有用で、使いやすいツールであると言える。

Model-Glue: Flex (download)

Flexも、単純なMVCベースFlexフレームワークである。これは、最初のColdFusion向けModel-Glueを、その作成者であるJoe Rinehart氏がFlexに移植したものである。Model-Glue: Flexについての肯定的なコメント(source)は、こちらを参照して頂きたい。Model-Glue: Flexのデザインは、CairngormやPureMVCなどのフレームワークよりも軽量である。このため、簡単なプロトタイプの作成や、単純なFlexアプリケーションの開発をより簡単に行うことができる。

Foundry (download)

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コンポーネントを開発することにより拡張が可能だ。

ARP (download)

 当初、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 Framework (download)

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オープンソース開発コミュニティの中で新たに開発されるものについて、今後もレポートを続けていく予定だ。

原文はこちらです:http://www.infoq.com/news/2008/01/flex-mvc

特集コンテンツ一覧

GAE開発の落とし穴

Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します

イベントレポート:「Coqチュートリアル#1」

去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。

Javaの未来についてのNeal Gafter氏とのディスカッション

Choosing Options

Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。

Google Dartのエッセンス:アプリケーションの構築、スナップショット、Isolate

GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式

CSPベースのモデル検査ツール「Process Analysis Toolkit」

本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。

Jenkinsによる継続的インテグレーションのススメ(4) ~CloudBeesでJenkinsをサービスとして使う~

前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。

書籍『抽象によるソフトウェア設計-Alloyではじめる形式手法-』の紹介

Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。

Windows デバイスで開発するタッチユーザーインターフェイス

スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。