結局、RIAはどれを使うべきなのか?
連載インデックスへ
検証特集:結局、RIAはどれを使うべきなのか?(最終回)

FlexとSilverlightで同じアプリを作って比較してみた


クラスメソッド株式会社
福田 寅成
2009/2/24


データアクセス

 DAOの部分を見てみましょう。DAOは単にデータアクセスに関する処理をまとめたものです。今回、DAOは埋め込んだXMLからデータを取得するだけの「モックオブジェクト」として作成しています。上記でViewHelper/コードビハインドから呼び出されたgetUserList/GetUserList内では、特に何もせず、そのままgetUserListResultHandler/GetUserListResultHandlerメソッドを呼び出しています。その「(データをサーバから取得したての)結果イベントハンドラ」の中身を見てみましょう。

Flex版ユーザー一覧データ取得結果イベント処理(UserDao#getUserListHandler)
/**
* ユーザー一覧取得の結果イベントハンドラです。
*/
private function getUserListResultHandler(event:ResultEvent):void {
    DebugUtil.debug("UserDao#getUserListResultHandler");

    // ユーザー一覧が取得できたと仮定して、
    // 結果を保持するレスポンスDTOを作成します。
    var responseDto:UserResponseDto = new UserResponseDto();

    // XMLからユーザー一覧を生成し、レスポンスDTOにセットします。
    responseDto.userList = createUserListFromXML();

    var myEvent:ResultEvent = new ResultEvent(ResultEvent.RESULT,
        false, true, responseDto);

    dispatchEvent(myEvent);
}

Silverlight版ユーザー一覧データ取得結果イベント処理(UserDao#GetUserListHandler)
/// <summary>
/// ユーザー一覧取得の結果イベントハンドラです。
/// </summary>
private void GetUserListResultHandler()
{
    DebugUtil.debug("UserDao#getUserListResultHandler");

    // ユーザー一覧が取得できたと仮定して、
    // 結果を保持するレスポンスDTOを作成します。
    UserResponseDto responseDto = new UserResponseDto();

    // XMLからユーザー一覧を生成し、レスポンスDTOにセットします。
    responseDto.UserList = CreateUserListFromXML();

    ResultEventArgs args = new ResultEventArgs();

    args.result = responseDto;

    Result(this, args);
}

 実際にサーバにデータを取得しにいった場合は、サーバからオブジェクト形式かXML、CSV、JSON形式のデータが帰ってくるので、それをオブジェクト形式に変換してレスポンスDTOにセットして結果イベントをディスパッチします(または、発生させます)。

 今回はcreateUserListFromXML/CreateUserListFromXML内でアプリに埋め込まれているXMLからユーザー一覧のArray/List<User>を作成しています(このユーザー一覧をXMLから生成する処理も、FlexではE4X、SilverlightではLINQを使うことにより簡単に実装できました)。

 DAOでは、実際はFlexではHttpServiceRemoteObjectなど、SilverlightではWCFWebClientなどを用いてデータの取得処理を記述するかと思います。

FlexとSilverlightは似ている?

 簡単ですが、ソースベースでFlexとSilverlightでのアプリ作成の流れを解説してみました。お互い非常に似てますよね? それぞれの技術特有のテクニックなどを採用すると、コーディングの“マナー”は結構変わってくるのですが、大きな流れは共通でいけそうです。また、Silverlightに関しては今回のサンプルを通して「ツカエソウ」という印象をあらためて持ちました。

 SilverlightやJavaFX(特にJavaFX)は標準UIコンポーネントがまだ少なく、その点で開発者に開発の負担が掛かるかもしれません。また、カスタムUIコンポーネントの作成方法ももっと出てきてもいいと思います。逆にFlexは、開発環境の面でまだ弱い印象があります。デザイナとデベロッパの相互運用開発の環境もFlexは比較的遅れています。

 ただ今後数年で、特にSilverlightは急速に環境を整備してきそうです。ほかのRIA技術も、毎月のように新しい技術が発表されて基盤を強固なものにしています。

標準“マナー”を作り、多くのRIA技術に触れよう

 本特集に当たって、筆者はこれまで3年近くRIAを開発しているので「Flexベースの業務RIA開発で培った“マナー”がほかのRIA技術でも流用できないか」と考えました。その“マナー”とは、以下のことなどです。

  • オブジェクト指向で開発できるか
  • 画面構築のマナー
  • ビジネスロジックの記述のマナー
  • サーバとの通信のマナー
  • XMLやデータベースなどのデータの扱い方のマナー
  • イベントのマナー
  • ビジュアルデザインのマナー

 Flexと同じような“マナー”でサンプルやプロトタイプが作成てきれば、少なくとも筆者であれば「実際の案件で使えるかもう少し踏み込んで技術を調査しよう」ということになります。この“マナー”は比較的RIA技術の細かい部分から中立なものであると考えています。連載第1回の「未曽有の不況を打開する救世主? RIAとは」で述べた、RIAに必要な3つのポイントと同様です。

 Flex以外のRIA技術でも、いままでと同じような標準化された“マナー”を使うと、後の違いは言語的な面や用意されているコンポーネントの癖といった差分になります。もちろん高度なコンポーネントを作る際は、それぞれのRIA技術の特徴が色濃く出てくるので、その部分に関しては別途深く調査する必要があります。

 複数のRIA技術を仕事で使わなくてはいけない方(今後は、そういったRIA二刀流(三刀流、四刀流……)の技術者も少しずつ増えてきそうです)や、どのRIA技術を採用するべきか検討しなければならない方は、まずは“マナー”の標準化からチャレンジしてみてはいかがでしょうか? その後、本稿のように同じ仕様のアプリを複数のRIA技術で作成してみると、大きな検証材料になると思います。

 「結局、RIAはどれを使うべきなのか?」それは、読者の皆さんがそれぞれのRIAに触れてから判断するしかないと思います。本特集がその一助になれば幸いです。

 今回のサンプルのソースコードは以下からダウンロードできます。

@IT関連記事


いまさら聞けないリッチクライアント技術
毎回1つのリッチクライアント用語・技術を取り上げて解説します。初心者から中級者まで気軽に読んでください。あなたはリッチクライアントについて本当に説明できますか?
アプリの“使いやすさ”は“数値”として見積もれるのか
「リッチクライアント・カンファレンスIV」パネルレポート 「使いやすさなんて人によって違うから」と、あいまいにしていませんか? もしも数値として目に見える形にできたら…
リッチクライアント & 帳票」フォーラム 2008/10/28
RIA/リッチクライアントの明日はどっちだ?
RIA in Developers Summit 2008 レポート 
先日開催されたデブサミのセッションの中からRIA/リッチクライアントに関するものを中心にいくつかレポートする
リッチクライアント & 帳票」フォーラム 2008/2/20
ブラウザの限界を超える「今」のリッチコンテンツ
Webオーサリングツールを使ってみよう(番外編) これまで2回にわたって紹介したWebオーサリングツールを離れてリッチコンテンツを取り巻く「今」の状況に注目しよう
リッチクライアント & 帳票」フ ォーラム 2007/5/22
デスクトップを制するのはApolloかWPF/Eか
WCR Watch(17) MicrosoftのWPFとAdobeのApolloが登場し、2007年のRIA市場で注目されるスタンドアロン型のリッチクライアントアプリに注目してみよう
リッチクライアント & 帳票」フォーラム 2007/1/12
“WPF/E”vs. Adobe Flash、ガチンコ対決!
Insider's Eye
 Webサイトの表現力を飛躍的にリッチにする“WPF/E”。あのFlashに対立する技術だ。そのCTP版が試せるようになったので、まずはその力量をチェックしよう
Insider.NET」フォーラム 2006/12/14
イベントに見る次世代リッチクライアント像
WCR Watch(11) @ITリッチクライアントカンファレンスIII開催された。登場したさまざまなメッセージは「ユーザー主導」という将来像につながっていくようだ
リッチクライアント & 帳票」フォーラム 2006/4/14
業務アプリケーションに最適なUI/UXを考える
VB研公開ゼミ議事録(8)
 WPFやSilverlight 2などの登場で、現在の業務アプリは今後どのように変わっていくのか。優れたユーザー・インターフェイスについて徹底討論
Insider.NET」フォーラム 2009/1/23

プロフィール:福田 寅成(ふくだ ともなり)
クラスメソッド株式会社 エンタープライズサービス部門 システムエンジニア
大手SIerでの長いJava開発経験を経てクラスメソッドに。 Java、JavaScript/Ajax、Flex、AIR、C#など、さまざまな分野に関する技術調査研究、および業務アプリケーション開発に携わる。
FlexやAIRの開発依頼はコチラ

1-2-3  

 INDEX
検証特集:結局、RIAはどれを使うべきなのか?(最終回)
FlexとSilverlightで同じアプリを作って比較してみた
  Page1
異なるRIA技術で同じアプリを作ってみよう
検証サンプル「マスタメンテナンスアプリ」
  Page2
ソースコードはどれぐらい違うのか?
Page3
FlexとSilverlightは似ている?
標準“マナー”を作り、多くのRIA技術に触れよう



リッチクライアント&帳票 全記事一覧へ



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

注目のテーマ

HTML5+UX 記事ランキング

本日 月間