連載:Flexのクライアントサイドをオープンソースで制覇する(1)
開発品質を均一化させるCairngorm Frameworkとは?
ダイヤモンドコンピューターサービスSI技術部 技術推進グループ
吉田 靖宏
2006/5/19
■Cairngorm Frameworkを利用するメリット
・オブジェクト指向の恩恵を享受できる
Cairngorm Frameworkは、完全にオブジェクト指向に基づいていますのでJavaやC#などと同様に継承、カプセル化、ポリモーフィズムなどオブジェクト指向のテクニックを使うことができます。
例えば、各クラスに共通して実装されている処理を親クラスとして切り出し、継承を使ってサブクラスでは親クラスと差異部分のみをコーディングすれば親クラスの再利用性が高まります。また、ポリモーフィズムを使ってインターフェイスと実装を分けるプログラミングをすれば、実装クラスを後で容易に切り替えることができ保守性が上がります。
・アーキテクチャが統一される
Flexに限らずリッチインターネットアプリケーション(RIA)においては、HTMLベースのWebアプリケーションと違ってクライアントサイドにも画面回りのロジックやクライアントサイドだけで完結できるビジネスロジックを実装します。従来のFlexアプリケーションのクライアントサイドの開発では、Flexの仕組みだけを使って開発するか、または独自のフレームワークを作るしかありませんでした。独自のフレームワークといってもJavaではなくActionScriptで作らなければならないため、“処理の枠組み”を作り出すことはかなり難しいのではないかと思います。
小規模なアプリケーションを少人数で開発する場合なら、Flexの仕組みだけで開発してもさほど問題はないと思います。しかし、大規模なアプリケーションを大人数で開発するときには、何かしらの枠組みがないと個々の開発者が自由にコーディングしてそれぞれのアーキテクチャを作り出すことができてしまいます。その結果、“作った人にしか分からないトリッキーなコード”が量産されてしまいます。これでは、プログラムが作った人に依存してしまい、保守性が下がってしまいます。もし、そんなプログラムの保守を自分がすることになったら……。もうゾッとしてしまいますよね?
Cairngorm Frameworkは、“Architectural Framework”であり処理の枠組みを定めているため、個々の開発者はフレームワークで決められたアーキテクチャに沿って開発をすることになります。アーキテクチャに沿った開発とは、例えば、フレームワークのクラスを継承してあるメソッドをオーバーライドしたり、フレームワークのインターフェイスを実装してあるメソッドを実装するということです。従って、プログラマーが自由にコーディングすることを制限し、プログラミングに関して個人の裁量の入り込む余地が少なくなっているため、誰が作ってもアーキテクチャが統一され、品質の均一化が望めます。また、プログラムから属人性が排除されるため、保守性の向上にもつながります。
・JavaエンジニアのActionScript学習コストを低減できる
Flexアプリケーション開発では、クライアントサイドをMXMLとActionScriptを用いて作り込む必要があります。クライアントサイドのロジックについては、ActionScriptを使って書きますので、ActionScriptをいかに使いこなすかがFlexアプリケーション開発の1つのポイントにもなります。ActionScriptは、JavaScriptの国際標準規格であるECMA(エクマ)に準拠しているため、JavaScriptと文法が非常に似ておりJavaScriptのスキルを持っていればActionScriptも理解しやすいということがあります。
しかし、FlexがJ2EEアプリケーションサーバ上で動作するということもあって、Flexアプリケーション開発を行う開発者の多くは、Javaエンジニアであり、それほどJavaScriptに明るい人が多いわけではないのが現状です。そのようなJavaエンジニアにとってActionScriptをマスターするのは、かなり時間がかかり学習コストは高いといえます。
Cairngorm Frameworkを使えば、Javaエンジニアにとってなじみの深いオブジェクト指向やデザインパターン(J2EEパターン)などに基づいて開発を行うことができますので、すでに持っている開発ノウハウを生かすことができActionScriptの学習コストを低減させることができます。
■Cairngorm Frameworkの今後
Cairngorm Frameworkは現在、version 0.99のものが正式版としてリリースされており、iteration::two社のWebサイトからダウンロードが可能です。
Version 0.99は、ActionScript 2.0の文法で書かれているためActionScript 2.0を採用しているFlex 1.5には適用できますが、Flexの新版であるFlex 2ではActionScriptのバージョンが3.0に引き上げられるため、Flex 2には適用できません。
そこでCairngorm Frameworkを、Flex 2でも適用できるようにActionScript 3.0の文法で書き直されたversion 2.0が先日、アルファ版としてリリースされました。こちらは、iteration::two社のブログサイトからダウンロードが可能です(February 01, 2006のエントリに掲載されています)。
筆者がソースコードを見て中身を確認したところ、version 0.99と比較してイベントの取り扱いやメタデータの使用など変わった部分もありましたが、アーキテクチャにおける大きな変化はありませんでした。ただし、文法がかなり変わっているため外見的にはだいぶ変わった印象を受けました。
Steven氏によるとFlex 2のリリースに向けて、Cairngorm Framework 2.0も正式リリースの準備を進めていくということです。Flex自体にCairngorm Frameworkのアーキテクチャが含まれていくということも考えられますので、今後の動向に注目したいと思います。
以上、今回はCairngorm Frameworkの概要についてお話ししました。Flexアプリケーション開発でネックとなっていたクライアントサイド開発にCairngorm Frameworkを使うとActionScriptに慣れていないJavaエンジニアでもFlexアプリケーションをうまく作れそうだということがお分かりいただけたのではないでしょうか。
次回は、Cairngorm FrameworkのインストールやEclipse上で開発する準備など開発環境の構築について解説する予定です。
Flex 2 Flexの新バージョンであるFlex 2は、現在ベータ版がAdobe Labsのサイトよりダウンロードできます。正式リリースは、2006年夏ごろといわれています。Flex 2は、Flex 1.5と製品体系が大きく変わり、いままでFlex(Flex Presentation Server)とFlex Builderの2つの製品で提供されていたものが、 ・ Flex Framework 2.0 の4つに分類されて提供されます。また、ActionScriptのバージョンが2.0から3.0へ、実行環境であるFlash Playerのバージョンが8.0から8.5へそれぞれバージョンアップします。 Flex 2に関してより深く知りたい方は、マクロメディアのFlex 2紹介記事や@ITの記事(参照:Eclipseで開発可能になったAdobe Flex 2)やFlex 2.0ベータ1の新機能紹介記事を参照してください。 |
2/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データの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|