連載:Flexのクライアントサイドをオープンソースで制覇する(1)
開発品質を均一化させるCairngorm Frameworkとは?
ダイヤモンドコンピューターサービスSI技術部 技術推進グループ
吉田 靖宏
2006/5/19
大規模なWebアプリケーションを大人数で開発するときに便利なFlexのクライアントサイドのフレームワーク「Cairngorm Framework」を紹介する(編集部)
■フレームワークである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の今後 |
- GASで棒、円、折れ線など各種グラフを作成、変更、削除するための基本 (2017/7/12)
資料を作る際に、「グラフ」は必要不可欠な存在だ。今回は、「グラフの新規作成」「グラフの変更」「グラフの削除」について解説する - GET/POSTでフォームから送信された値をPHPで受け取る「定義済みの変数」【更新】 (2017/7/10)
HTMLのフォーム機能についておさらいし、get/postメソッドなどの内容を連想配列で格納するPHPの「定義済みの変数」の中身や、フォーム送信値の取り扱いにおける注意点について解説します【PHP 7.1含め2017年の情報に合うように更新】 - PHPのfor文&ループ脱出のbreak/スキップのcontinue【更新】 (2017/6/26)
素数判定のロジックからbreak文やcontinue文の利点と使い方を解説。for文を使ったループ処理の基本とwhile文との違い、無限ループなども併せて紹介します【PHP 7.1含め2017年の情報に合うように更新】 - Spreadsheetデータの選択、削除、挿入、コピー、移動、ソート (2017/6/12)
Spreadsheetデータの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|