FlexとSilverlightで同じアプリを作って比較してみた
クラスメソッド株式会社
福田 寅成
2009/2/24
□ データアクセス
DAOの部分を見てみましょう。DAOは単にデータアクセスに関する処理をまとめたものです。今回、DAOは埋め込んだXMLからデータを取得するだけの「モックオブジェクト」として作成しています。上記でViewHelper/コードビハインドから呼び出されたgetUserList/GetUserList内では、特に何もせず、そのままgetUserListResultHandler/GetUserListResultHandlerメソッドを呼び出しています。その「(データをサーバから取得したての)結果イベントハンドラ」の中身を見てみましょう。
Flex版ユーザー一覧データ取得結果イベント処理(UserDao#getUserListHandler) | |
|
Silverlight版ユーザー一覧データ取得結果イベント処理(UserDao#GetUserListHandler) | |
|
実際にサーバにデータを取得しにいった場合は、サーバからオブジェクト形式かXML、CSV、JSON形式のデータが帰ってくるので、それをオブジェクト形式に変換してレスポンスDTOにセットして結果イベントをディスパッチします(または、発生させます)。
今回はcreateUserListFromXML/CreateUserListFromXML内でアプリに埋め込まれているXMLからユーザー一覧のArray/List<User>を作成しています(このユーザー一覧をXMLから生成する処理も、FlexではE4X、SilverlightではLINQを使うことにより簡単に実装できました)。
DAOでは、実際はFlexではHttpServiceやRemoteObjectなど、SilverlightではWCFやWebClientなどを用いてデータの取得処理を記述するかと思います。
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技術に触れよう |
リッチクライアント&帳票 全記事一覧へ |
- 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データの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|