OpenLaszloアドバンスド・テクニック
連載:Flexのクライアントサイドをオープンソースで制覇する
(1)

開発品質を均一化させるCairngorm Frameworkとは?

ダイヤモンドコンピューターサービス
SI技術部 技術推進グループ
吉田 靖宏
2006/5/19

大規模なWebアプリケーションを大人数で開発するときに便利なFlexのクライアントサイドのフレームワーク「Cairngorm Framework」を紹介する(編集部)

フレームワークであるFlexに、フレームワーク追加は不要という誤解

 Cairngorm Frameworkとは、Macromedia Flex(以下、Flex)を使用したアプリケーションにおけるクライアントサイドのフレームワークです。Flexはプレゼンテーション層のみを対象とする製品のため、Flexアプリケーションを開発する際には、ビジネス層にSpringやSeasarなどのフレームワークを適用することも多いかと思います。また、Flexと同じプレゼンテーション層のフレームワークですが、既存のアプリケーションを生かすためにStrutsをFlexと併用させるケースもあると思います。

 このようにサーバサイドにフレームワークを適用することはあっても、クライアントサイドにフレームワークを適用することはあまりないのではないでしょうか。「そもそもFlexの仕組みそのものがフレームワークなのだからこれ以上どのフレームワークを入れるっていうの?」とか「Flexアプリのクライアントサイドに適用できるフレームワークなんてないでしょ? 聞いたことないよ」とお思いの方がほとんどではないでしょうか。

 本連載では、Cairngorm Frameworkを使ってFlexアプリケーションを構築する方法をサンプルアプリケーションの作成を通して、全5回の連載で解説していきます。Flexについては基礎知識があることを前提にしていますので、Flexを知らない方や触ったことのない方はまず、XMLでリッチクライアントを実現「Macromedia Flex」Flashベースのリッチクライアントを体験を参照してください。

 第1回は、Cairngorm Frameworkの概要ということでCairngorm Frameworkとは何か? やCairngorm Frameworkの特徴・利用するメリットなどについてお話ししていきたいと思います。

Cairngorm Frameworkとは?

 Cairngorm Frameworkとは、冒頭でも書いたとおりFlexアプリケーションにおけるクライアントサイドのフレームワークです。オープンソースであるため、誰でも無償で使用することができます。また、Apache License 2.0で配布されているため商用利用も可能です。スコットランドにあるiteration::twoという会社のSteven Webster氏が中心となって開発しました。昨年、Macromedia(現Adobe)がこのiteration::two社を買収したため、Flexの新バージョンであるFlex 2にはCairngorm Frameworkのアーキテクチャが少し入ってくるのではないかともいわれています。最近では、Steven氏が米MacromediaのWebサイトにCairngorm Frameworkに関する記事を寄稿しており、MacromediaもCairngorm Frameworkに注目している様子がうかがえます。

 Cairngorm Frameworkは、クライアントサイドのフレームワークのため、動作環境はTomcatなどのアプリケーションサーバ上ではなく、Webブラウザ上のFlash Playerになります。また、StrutsなどのWebアプリケーションフレームワークと違って画面制御やバリデーション、例外ハンドリングといったアプリケーション開発を行うための基盤の機能を提供するフレームワークではありません。アーキテクチャを統一するために処理の枠組みだけを提供するフレームワークです。この点についてSteven氏は、以下のように述べています※1

※1Steven氏:「フレームワークには、Application FrameworkとArchitectural Frameworkの2種類がある。前者はFlexのように履歴管理、レイアウト管理、例外ハンドリング、ログ出力などアプリケーションレベルでのサービスを提供するものを指し、後者は特定のサービスを提供するのではなく開発においてアーキテクチャのスケルトンを提供するものを指す」

 Cairngorm Frameworkは、Steven氏の言葉を借りれば“Architectural Framework”に分類されることになります。Cairngorm Frameworkのアーキテクチャについては、この後の連載で詳しく解説する予定です。

Cairngorm Frameworkの名称の由来

Cairngormとは、日本語で「煙水晶」という意味です。これはスコットランドにあるCairngorm山が煙水晶の産出地であったことに由来しています。iteration::two社もスコットランドにあるので、それにちなんでフレームワークの名称にCairngormを採用したのではないかと筆者は推測しています。


Cairngorm Frameworkの特徴

 では、次にCairngorm Frameworkの特徴について見ていきたいと思います。

・オブジェクト指向

 Cairngorm Frameworkは、すべてAction Scriptのクラスまたはインターフェイスとして作成されています。スクリプトと聞くと手続き型のプログラミングをイメージしてしまいがちですが、最近ではオブジェクト指向プログラミング(OOP)の機能を搭載したスクリプト言語も増えています。Flex 1.5で採用しているAction Scriptのバージョンは2.0ですが、Action Scriptはバージョン2.0からこのOOPに対応しました。そのため、バージョン1.0までは手続き型でしか書くことができなかったAction Scriptも、JavaやC#と同じようにクラスやインターフェイスを定義するといったことが可能になりました(もちろん、従来どおり手続き型で書くこともできます)。ちなみに、Ruby On Railsの登場でいま非常に人気が高まっているRubyやWebサイトの構築によく使われているPHPもスクリプト言語ですが、OOPに対応しています。

・デザインパターンのコラボレーション

 Cairngorm Frameworkは、前述したとおり完全にオブジェクト指向に基づいています。そのため、Javaなどでおなじみのデザインパターン(主にJ2EEパターン)を多数利用しています。Cairngorm Frameworkのクラスを眺めてみると“Command”、“Service Locator”、“FrontController”、“BusinessDelegate”などパターン名がそのままクラス名やインターフェイス名になっていることが分かります。

 J2EEパターンでは、より複雑で規模の大きな問題に対処するために複数のパターンを組み合わせて使用することをMicro Architecture(マイクロアーキテクチャ)と名付けていますが、Cairngorm Frameworkはまさにこのマイクロアーキテクチャに基づいています。

・イベント・リスナモデル

 イベント・リスナモデルとは、イベントを発生させる可能性があるオブジェクトをリスナに登録しておきマウスクリックなどのイベントが発生した場合、イベントの発生をリスナに通知し処理をリスナに委譲させる方式です。リスナ(Listener)はその名のとおり、イベントの発生を聞く(捕捉する)オブジェクトです。

 例えばVisual Basicでは、ボタンの中にonClickなどのイベントをハンドリングするメソッドがあり、そのメソッドの中にボタンがクリックされたときの処理を書きました。しかし、これではビューであるボタンの中にボタンを押されたときのロジックが入り込んでしまい、ビューとロジックが密接に関係してしまいます。

 イベント・リスナモデルでは、イベントが発生すると登録先のリスナがそのイベントを処理するので、イベントを発生させるビューとイベント処理のロジックを切り離すことができオブジェクトの独立性が高まります。Flex自体にもイベント・リスナの仕組みはサポートされていますが、Cairngorm Frameworkではよりそれを使いやすくしてフレームワークとして提供しています。

・軽量で導入がカンタン

 Cairngorm Frameworkは前述したとおり、特定のアプリケーションサービスを提供するためのライブラリ群などを持たず、処理の枠組みだけを提供する“Architectural Framework”のため非常に軽量なフレームワークになっています。APIリファレンスですべてのクラスを見てもたった12個しかありません。Cairngorm Frameworkを使うために必要なものは、フレームワークを構成するクラスをアーカイブしたファイルとCairngorm Frameworkの設定ファイルの2つだけです。導入は、これらをアプリケーションの所定の位置に置き、Flexの設定ファイルを少し変更するだけですのでとてもカンタンです。

  1/2

 INDEX

連載:Flexのクライアントサイドをオープンソースで制覇する(1)
 開発品質を均一化させるCairngorm Frameworkとは?
Page1
Cairngorm Frameworkの概要/Cairngorm Frameworkの特徴
  Page2
Cairngorm Frameworkを利用するメリット/Cairngorm Frameworkの今後




HTML5 + UX フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日 月間