Flex1.0は、2004年の3月にMacromedia(2005年にアドビに買収された)によってリリースされた。それ以来、Flexベースのリッチ・インターネットアプリケーション(RIA)開発は、ますます勢いを増してきた。そして、RIAは、広範囲に受け入れられたwebアプリケーション開発の手法となった。2010年に、アドビは、Adobe Flash プラットフォーム技術の一部であるFlash Builder 4 とFlash Catalystといっしょに、Flex 4をリリースする。Adobe Flexの状況を評価するために、InfoQは、現時点のFlex RIAの開発エコシステムを調査した。
Flexの開発環境
Adobe Flex Builder は、今なお、最も広く使用されている商用のFlex IDEである。オープンソースのEclipse IDEプラットフォームの上に作られている。Flex 4のリリースに合わせて、Flash Builderと名称変更される。これに加えて、 Adobe Flash Catalyst が、今ベータである。これは、FlashのデザイナとFlexの開発者間の橋渡しを意図したデザインツールであり、デザインのワークフローとプログラミング活動を統合している。
Adobeからのツールに加えて、Flexの開発環境は、様々な既存のIDEに統合されてきた。
- IntelliJ IDEAは、成功したJava IDEであり、バージョン7から Flexの開発をサポート し始めた。最新のIntelliJ IDEA 9は、Flexをサポートするもっと完成度の高い フィーチャセット を持っている。
- Amethyst は Flex IDE で、MicrosoftのVisual Studioに組み込むことができる。Microsoftプラットフォームの開発者が、Flexの開発を始め易いように、 馴染みのある環境 を提供している。
- Ensemble Tofino もVisual Studioのプラグインで、Windows開発者向けのFlex開発ツールである。
- FlashDevelop は、オープンソースのActionScript 2/3とwebと開発用環境であり、Adobe Flash IDE、 Adobe Flex SDK、MTASC (オープンソースの Flash), haXe (オープンソースのプログラミング言語でswf形式にコンパイルできる) と swfmill (XMLとswf の双方向のプロセッサ)を統合したものである。
アプリケーション・フレームワーク
ソフトウェアのフレームワークは、長い間開発されており、共通のソフトウェア開発のパターンを実装してきた。それにより、プログラミングの生産性を増し、品質を改善してきた。InfoQは、2008年に、 Flex/ActionScript用のフレームワークを多数紹介して、Flexが勢いを得るのに貢献した。 Cairngorm, PureMVC, Model-Glue:Flex, Foundry, Guasax Flex Framework, ARP, Flest Framework, EasyMVC そして Adobe FASTがあった。それから更にもっとフレームワークが現れ、Flexの開発を豊かにしている:
- Ruboss は Flex フレームワーク で、 Ruby on Rails と Merbを統合している。またRESTfulなインターフェースを組み込んでいるので、Adobe AIRの内蔵データベースのSQLiteと話すことができる。AdobeのLiveCycle Data Services ES とJ2EE アプリケーションの関係と同様な方法で、Rubossフレームワークは、Rails や Merbのアプリケーションにサービスを提供する。
- Mate Flex framework は、容易にイベント・ドリブンなFlexアプリケーションが開発できることを目的に、2008年に 登場した 。
- Swiz は、Flex用のInversion of Control (IoC)(制御の反転)フレームワークである。他のフレームワークに見られるような制限、例えば、J2EEタイプのパターン、フォルダのレイアウトや決まりきったコードなどを課したりしない。
- Prana もInversion of ControlタイプのActionScriptフレームワークであり、 Spring framework のXML 方言をベースに開発された。
- JumpShip は、MVC ActionScriptフレームワークで、自動化されたデータのソート、列挙そして検索のための標準のデータモデルを持っている。最近のソフトウェア・フレームワークで流行りのプラクティスであるフレームワークにおけるシングルトンの使用を避けている。
- GAIA は、Adobe Flash用のフロントエンドのActionScriptフレームワークで、Flex Builderをサポートしている。
- Razor は、ActionScriptコンポーネント・フレームワークで、共通に使われているFlexコンポーネントの代替を提供する。
- Flight Framework もActionScriptフレームワークでMVCと他のデザインパターンをサポートしている。
FlexとAIRの開発サポートツール
ソフトウェアの開発は、デバッグ、テスト、ログ取り、そしてドキュメント無しで完成させることはできない。何年にも渡ってFlexとActionScriptコミュニティにより、広範囲の開発支援ツールが作られてきた。
- RIATest は、Flex用のGUIテストの自動化ツールである。WindowsとMac OS Xの両環境をサポートしている。
- Flexcover は、オープンのソースコード・カバレッジツールでFlex, AIR そして ActionScript 3の開発で使える。
- Alcon は、軽量のデバッグツールで、ActionScript3, Flex と AIRの開発を サポートする 。
- Fluint は、Flex unit と integration(Flexの単体と統合)の略で、Flex 2 や Flex 3のアプリケーションを書いている開発者向けのテストフレームワークであり、アプリがAdobe Flash Player経由でブラウザに配信されたか、Adobe AIR経由でデスクトップに配信されたかは、関係ない。
- Arthropod は、Flex と AIR開発用のデバッグツールで、実行時におけるアプリケーションのデバッグを 容易にする。
- De MonsterDebugger は、オープンソースで軽量の、しかし本格的なデバッガでAdobe Flash, Flex そして AIR アプリケーション向けである。完全に Adobe AIRで作られている。
- ASTUce は、回帰テストのフレームワークで、jUnitのようなxUnitアーキテクチャに影響された。ActionScript 3の単体テストができる。
- AsUnit は、ActionScript 3のためのオープンソースの単体テストフレームワークで、AsUnit 2.xは、完全にFlash IDEを統合している。
- FlexMonkey は、Flexアプリ用のテスト・フレームワークで、キャプチャ、リプレイとFlex UIの機能性を検証できる。 “FlexMonkeyは、FlexUIの操作をレコードして、再生でき、ActionScriptベースのテストスクリプトを生成し、簡単に、連続的な結合プロセスの中に、テストスクリプトを含めることができます。”
- Xray は、Flashアプリケーション用の検査ツールで、アプリケーションに余分な負荷を与えずに、実行時にアプリケーションのデバッグを行う。
- FlexPMD は、Adobeが作成し、コード品質の改善に役立つ、AS3/Flexのソースディレクトリを検査して、共通の悪いプラクティスを検知する。
- Natural Docs は、ドキュメント生成ツールで、ActionScript 3を含んだ複数の言語に対応している。
エンタプライズ向けのFlex
Adobeは、エンタプライズ向けのアプリケーション・システム開発をサポートする技術の開発に、相当の投資をしている。エンタプライズ・システムの多くは、サーバー側の開発と統合が必要で、この領域では、AdobeのオープンソースのBlazeDSと商用製品のLivecycle DSが、重要な役割を演じる。更に、Flex/ActionScriptのコミュニティにより、FlexのエンタプライズRIA開発をサポートする、代替のサーバーサイドの統合ツールが、開発されてきた。
- Potomac framework は、Flex用で、Flexのモジュールフレームワークを使わない、モジュール化手法によって大規模なFlexアプリケーションを開発するためのものである。これは、 OSGiに触発されたもので、OSGiは、サーバーサイドのモジュール化された機能性をサポートする、アプリケーション・サーバーのプロバイダによって、広く使われている。
- FluorineFx は、Flex/Flash Remoting, Flex Data Servicesそしてリアルタイム メッセージングの 機能を.NET フレームワーク向けに実装したものである。
- FxStruts は、オープンソースのライブラリで、Struts のbean:writeと同じ機能を提供する、出力形式がAMF あるいは XMLであるという違いはあるが。
- X2O フレームワークは、Adobe Flexアプリケーション開発用のwebベースのデータ・モデリング フレームワークであり、リモートでホストされるフレームワークを生成するので、クライアント側でのみプログラムすることができる。
- Spring BlazeDS integration は、Springコンポーネントで、フロントエンドのクライアントとしてAdobe Flexを使い、Springにより強化されたRich Internet Applicationsを作成するのがより簡単になる。
- Spring ActionScript は、かつては、Prana framework(先述)と呼ばれた。
- Granite Data Services は、J2EEサーバー用のAdobe LiveCycle Data Servicesの代替品で無料である(LGPL)。
- Red5 は、Javaで書かれたオープンソースのFlashサーバーである。
- AmFast は、Python用のFlash remotingフレームワークで、NetConnectionクラス と RemoteObjectクラスのRPCをサポートする。
- Exadel Flamingo により、Flex, JavaFX, Swing, J2ME, そして Android SDKを Seam、Spring、 そしてJEEと連動させることができる。
- そして、色々なスクリプト言語をサポートするFlash Remotingがある: PHPObject, SabreAMF が PHP5用、 OpenAMF が JEE用、 AMF::Perl と AmFast が Python用。
前進を続けるFlex RIA開発の次の未開拓分野は、モバイル・プラットフォームであろう。一連の発表によると、次のAdobe Flash 10.1は、広範囲のスマートフォーン デバイスに搭載される予定である。例えば、もうすぐリリースされるGoogle Nexus Oneフォーンには、Flash 10.1が搭載されている。Flashのモバイル技術が出てくれば、Flexのコミュニティは、すぐさま積極的に、モバイルのプラットフォームに関与してくるはずである。
InfoQは、引き続き、Flex RIAの世界における新しい開発をチェックし、報告していく。