Adobe FlexとAIRのコミュニティはJavaコミュニティの黎明期における流行を取り込み続けようと、多くの個人がFlex開発を単純化したり改良するためのフレームワークを提供している。この記事ではSwiz Framework(リンク)のレビューを行う。このフレームワークはJavaのSpringFrameworkが採用している多くの原理を真似る形で作られている。Swiz FrameworkはChris Scott氏(リンク)によって開発され、Apache License 2.0の下で提供されている。
AdobeのTechnical EvangelistであるChristophe Coenraets氏(リンク)は最近、Swiz Frameworkと詳しい使い方についてブログで論じた(リンク)。Christophe氏はまずSwiz Frameworkを下記のように表現している。
Swizは根本的に単純な制御の反転(IoC)を実装したフレームワークです。IoCフレームワークを使うと、アプリケーションのあるコンポーネント(例えばビュー)は自身が依存する他のオブジェクト(協調するオブジェクト)をインスタンス化したり探し出したりする必要がなくなります。フレームワークがそのコンポーネントを生成する際に依存するオブジェクトを注入します(従ってこの方法を“Dependency Injection(依存性の注入)”と呼ぶこともあります)。これによって疎結合が促進され再利用性の高いコンポーネントを生み出すこととなります。Swiz IoC フレームワークで管理されるコンポーネントはbeans(ビーンズ)と呼ばれます。
Christophe氏のサンプル・アプリケーションでは(オブジェクトの)注入に使うSpringに似た記法を紹介している。
Swizは[Autowire]という独自のメタデータを使って、あるbeansを他のbeansやビューに注入します。
inSyncの例では、contactServiceというRemoteObjectが下記のようにしてContactController.asに注入されています。
1 2 [Autowire(bean="contactService")] public var contactService:RemoteObject;そして、contactControllerはビューに注入されます。例えばContactForm.mxmlは下記のようになっています。
1 2 [Autowire(bean="contactController")] public var controller:IContactController;
Swiz Frameworkに対する最近のレビューでTony Hillerson氏はAutowiring機能について下記のように論じている。
もしこの機能の存在を知らなかったとしたら、Autowireはとても素敵なものに思えるでしょう。(注入する)モデルがどこから来たものなのかを心配する必要はないのです。シングルトンであるかどうかを気にする必要もありません。そのモデルが必要であるということさえ知っていれば、あとは私達が必要とする時に確実にフレームワークがそれを用意しておいてくれるのです。一つだけ注意することがあります。注入しようとするプロパティはpublicにしておかないとSwizがそれを注入することが出来ません。
Tony氏とChristophe氏は両名ともSwizは簡単に使えるフレームワークであると結論付けている。Christophe氏は以下のように述べている。
Swizを使うのは簡単で楽しいことでした。押しつけがましいこともなく、確かに興味深いアイディアを提供してくれます。
Swizとその機能に関する詳細を知るにはプロジェクトのチュートリアル(リンク)を確認されたい。