VB研公開ゼミ:テクノロジーバトル 開発者の選択第1回 Silverlight vs. jQuery+ASP.NET AJAXデジタルアドバンテージ 一色 政彦2009/07/01 |
|
|
■Silverlight、Ajaxのシステム・アーキテクチャ
―― 両者のシステム・アーキテクチャはどう違うのでしょうか? 例えばVB6クライアント/サーバ型システム(以降、VB6クラサバ)に馴れた開発者がWebの世界に移行する場合、データ・アクセスなどはSilverlightの方が有利なのかと想像しますが。
[]Ajax派 日立ソフトウェアエンジニアリング 宮崎 昭世 |
[]宮崎 VB6クラサバの場合、クライアントのアプリから直接、データベースにアクセスすることが多く、これをシステム・アーキテクチャとして見ると「1層」のシステムですね。ASP.NET AJAXを含んでいるASP.NET Webサイトも、実は同じようなシステム形態になっていることが多いです。ASP.NET Webサイトの開発はサーバ中心の開発モデル、つまりVisual Studioでフォーム上にコントロールをドラッグ&ドロップをするだけで開発できますので、むしろVB6クラサバのような開発者もすんなりと受け入れられると思います。
それに対してSilverlightの場合、いったんWebサーバ側でデータを受けて処理し、結果を返すようなWebサービスなどをSilverlight側に公開する必要があります。つまり、システム構造が「2層」になってしまうということです。これでは開発アーキテクチャが大きく変わってしまいますので、VB6クラサバのような開発者にとっては受け入れられにくいのではないかと思います。
[]八巻 確かにデータ・アクセスは、いまのSilverlightのボトルネックになっていると思います。データ・アクセス部分で2層を実装しなくてはならないわけですが、これを単純化してくれるのがADO.NET Data Servicesです。これを利用すると、データベースのデータ・モデルであるエンティティからデータ・アクセス用Webサービス(厳密にはREST API)を自動的に生成して公開できます。このため必要なWebサービスを個別に実装する必要がなくなり、2層を実装する手間はかなり軽減されると思います。もちろんそのWebサービスにアクセスするためのクライアント・ライブラリも用意されており、LINQクエリで通常のデータ・アクセスのように記述することもできます。
ただし課題もあって、Silverlightでのデータ・アクセスは非同期になるため、従来のVB6クラサバのような「クエリをかけるとデータが取得され、次の処理に進む」という同期通信によるデータ・アクセスが行えません。というのも、SilverlightはあくまでWebブラウザの上に乗っているものなので、Webブラウザのアクセス手法しか使えない、つまり非同期通信しかできないという制限があるのです。このため、非同期通信への対応が必要になります。例えば、データがいつ取得できるのか分かりません。1秒後かもしれませんし、10秒後かもしれませんので、その間、ボタンがクリックされて別の処理が実行されないように、ボタンを押させないような対策などが必要です。
[]一色 ADO.NET Data ServicesはASP.NET AJAXなどでも利用でき、それを利用した場合、同様の問題が発生しますね。このほかに気になっているのが、通信時のセキュリティです。SilverlightではBasicHttpBindingによる通信のみが利用可能で、よりセキュアなWsHttpBindingはサポートされていないので、セキュリティを高めるにはSSL通信にするしかありません。
さらに現バージョンのADO.NET Data Servicesの使い勝手はまだまだな感じです。確かに手軽に標準的なWebサービスを公開できますが、テーブルの一部の列の情報公開を制限しようとしたり、公開サービスの仕様をカスタマイズしようとしたりすると、その度合いにより徐々に煩雑となってきてしまいます。そんなに苦労するのであれば、最初からASP.NET Webサービスなり、WCFによるREST API(=「[WebGet]」のような属性をメソッドに付与することで外部にREST APIとして公開できる開発技術)なりで作った方が手軽だと感じています。
[]菅原 話を戻しますが、わたしは2層で作ることは悪くないと思います。2層にしておけば、フロントエンドをSilverlightから別のテクノロジに変えるのも容易ですので。2層で作るという方向に発想を転換していただければよいと思います。
[]宮崎 では、表側はAjaxに変えていただくということで(会場:笑)。というのは冗談で、2層で作るのは悪くはないのですが、いまの開発テクノロジの流れを見ると単純化する方向に進化しており、例えばRuby on Railsは定義ファイルを複雑に書きすぎないように名前をある程度固定して作りましょうとする考え方があるなど、単純化が意識されています。そういう流れからすると、1層で作る方が時代の流れに乗っているのかもしれません。
■Silverlightの将来性とバージョン3
―― それでは最後の話題に入ろうと思います。Silverlight 2が正式公開されたのが去年の秋(10月14日)なのに、もう「3」が秒読み段階(2009年7月10日リリース予定)になっているとのことです。良くいえば急速に改善されつつあるということですが、悪くいえば落ち着いていないともいえます。これから先、どうなっていくのでしょうか?
[]八巻 Silverlight 3で注目すべきポイントのうち、これまで触れていないのはオフライン実行です。インターネットへの接続ができない状況ではオフラインで作業ができ、作業データはローカル環境のデータ・ストレージに保存しておけます。そして後でオンライン状態になったときに、その作業データを同期するというようなシナリオを、Silverlight 3では実現できます。
「バージョン・アップが早すぎる」という意見もあるようですが、下位互換性は恐らく保たれているので、Silverlight 2でマスターしたことがSilverlight 3で使えなくなるわけではなく、実際にはバージョン・アップがマイナスになることはないと思います。
■Ajaxの将来性とHTML 5
―― Ajaxは今後、どのようになっていくのでしょうか?
[]一色 Ajax技術に将来性を感じる理由は、グーグルを初め、マイクロソフトも取り組んでいるHTML 5という新技術があるからです。(現在はHTML 4ですが)HTML 5になると、2Dグラフィックス(Canvas)や、より高度な通信(Web Sockets)、クライアント環境ストレージ(Web Storage)などが実現可能になります。OperaのCEOが「HTML 5でFlashは不要になりつつある」と発言したらしいですが、それとまったく同じことがSilverlightにもいえるのではないでしょうか。
―― しかしHTML 5はまだ草案です。いつ正式な勧告としてリリースされるのでしょうか?
[]一色 勧告の時期はよく分かりませんが(2010年9月ごろという話もある)、Google I/O 2009やGoogle Developer Day 2009によるとHTML 5の一部の機能は、Firefox、Safari、Opera、ChromeなどのWebブラウザにはすでに実装されているようです。もちろんマイクロソフトのIE8にもHTML 5仕様が部分的に採用されています。例えばクライアント環境ストレージのDOM Storageはその1つです。
[]八巻 HTML 5仕様がいつ正式勧告になるのか、それがいつすべてのWebブラウザに実装されるのか、そしていつHTML 5対応Webブラウザが広く普及するのかというのが問題です。正直、それは5年後でも難しいのではないかと思います。HTML 5を活用したWebアプリを作れるのはその後なので、そのころにはSilverlightはバージョンも上がって機能も増え、いまよりもっと普及して、より採用しやすくなっていると思います。
■各パネラーによる最後の一押し
司会 株式会社デジタルアドバンテージ Windows Server Insider編集部 編集長 小川 誉久 |
―― それでは時間になりましたので、最後にひと言ずつお願いします。
[]遠藤 やはりSilverlightの方が単純に作れそうな気がしています。さらにもうすぐSilverlight 3が正式リリースされ、その開発環境のVisual Studio 2010とExpression Blend 3が年内リリースされると見られますので、それを機にSilverlightが爆発的にブレイクするのではないかと予想しています。
しかしながら、両方をマスターする必要性も感じています。両方を学ぶことができれば、両者の利点や欠点もよく見え、よりうまく使い分けができるようになるのではないかと思います。
[]一色 議論形式だったので、Ajaxの利用メリットを中心に話しました。しかしながら本心は両者には一長一短があり、適材適所で使い分けるべきだと考えています。UI構築に関しては、ユーザビリティが高いUIをデザインしやすいAjax系がベストだと思います。しかし通信に関しては、クロスドメインの問題はSilverlightの方がより手軽に対策できるので、その部分にだけSilverlightを使うような方式で、うまく使い分けるのがいいのではないでしょうか。
[]菅原 Silverlightの方が開発者にとって魅力的なRIAプラットフォームであると考えています。その理由は、開発方法が簡単であると考えていることと、開発環境が無償で手に入ることです。ぜひ無償のVisual Studio Express EditionでSilverlight開発を試してもらえるとうれしいです。
そして開発者の方々には、Silverlightがはやるのを待つのではなく、「自分がはやらすのだ」という意気込みで、主体的かつ積極的にSilverlight開発にかかわってほしいと考えています。余談になりますが、例えばWindowsマーケットプレースのような開発者に直接利益が還元される仕組みなどがSilverlightアプリ向けに提供されると、開発者のモチベーションが高まり、きっとSilverlight開発者が爆発的に増えるのではないかと考えています。
[]宮崎 いま「Silverlightは開発環境が無償」という話がありましたが、もちろんASP.NET AJAX開発も同様に無償で行えます。しかしSilverlightは、デザイン・ツールのExpression Blendが有償ですので、そういったことを考えるとAjax開発の方が敷居は低いと思います。また、業務アプリの開発の容易さを考えると、環境がある程度固定される面では、2層で作るよりも1層で作るASP.NET AJAXの方がトータル・コストは下がるでしょう。これからも当分、Ajaxは、現役の技術であり続けるだろうと思います。
[]八巻 業務アプリという観点では、本当に必要なものを簡単に作れるのはASP.NETかもしれません。ですが、やはり凝ったUIを作るのであれば、Silverlightの方が圧倒的に作りやすい。HTML 5の話でSilverlightの将来を心配される方もいるかもしれませんが、ご心配には及びません。SilverlightのUIテクノロジは、WPFというWindowsプラットフォーム向けのUIテクノロジと共通デザインの下に成り立っているUIフレームワークですので、このテクノロジが将来なくなるということはあり得ません。このUIフレームワークへの投資では絶対に損をすることはないので、ぜひSilverlightやWPFで開発していただきたいと思います。
[]山田 ASP.NET AJAXとSilverlight、どちらも発展途上という印象を受けられたと思いますが、発展度合いからいうと、一般的なAjaxという機能はすでに熟成された枯れた機能になってきていると思います。基調講演でASP.NET AJAX 4.0の新機能を紹介しましたが、根本的な機能はほとんど追加されていません。あまり新しいことがないわけですが、裏を返せば、現時点で必要な機能が十分に実装されているということです。つまり現時点で、いますぐ安心して始められるというのが、ASP.NET AJAXやAjaxの強みだと思います。
あと開発者の視点から見たときに、開発者がどのようなキャリアを積んできたのかが、Silverlightなのか、Ajaxなのかを決める大きな判断材料になると思います。Windowsアプリを開発してきた方であれば、VB/C#で開発できるSilverlightはなじみやすいかもしれません。一方でJava/PHP言語などでWebアプリを開発してきた方であれば、JavaでもPHPでもAjaxはそのまま使えて特別な知識が必要ないわけですから、Ajaxの方が圧倒的になじみやすいです。そもそもASP.NET AJAX自体がAjaxという基本技術の上で動作するライブラリですので、その考え方はJavaやPHPでも有効です。Webアプリ開発者として活動してこられた方、これからも活動される方はAjaxが非常に使いやすい技術だと思います。
最後に、基調講演の中でAjaxの欠点も多く挙げましたが、わたしは欠点が明確になっていることこそ大事だと思っています。Silverlightの欠点を挙げろといわれたとき、確かにいくつかは挙げられるのですが、「細かいところは、まだなかなか挙げられない」という人が多いのではないでしょうか。Silverlightで実際の開発を行ってどれだけ大変なことがあるのかというのは、まだほとんど分かっていないと思います。逆にAjaxの場合は、欠点を挙げようと思えば、わたしはいくらでも挙げられます。欠点が挙げられるということは、当然、その対処策も考えられているわけで、それは情報として蓄積されています。その蓄積こそが、業務アプリ開発においては最大の強みなのではないかと思います。
―― 皆さん、ありがとうございました。
■
この後、最後のジャッジを行った。申し込み時のアンケートで答えた「Silverlight派」と「Ajax派」と「どちらでもない派」ごとに集まり、まずSilverlight派とAjax派の人で議論を聞いてスタンスが変わった人が数人移動した。そして最終ジャッジとしてどちらでもない派にどちらかに移動していただいた。その結果、ほとんどの人がAjax派に移動した。人数はカウントしていないが、その移動率から考えて、運営者判断で今回は「Ajax」の勝利となった。
ただし、いうまでもないと思うが、今回のジャッジはテクノロジに優劣を付けるものではなく、その場にいた聴講者たちが今回の議論を聞いて純粋にどちらで開発したいと感じたかにすぎない。さらに最初からAjax派の人数がかなり少なかったので、盛り上げなければという「空気を読んだ」人も多かったのかもしれない。そういう意味でこの結果をあまり重大に受け取らないでいただきたい。
運営者側としては、今回のVB研ゼミは成功だったと認識しており、できれば再度、このようなバトル形式を開催したいと考えている。記事に書けないような話も会場では多数聞けるので、興味のあるテクノロジで、かつ時間の都合が付けば、ぜひ次回は/次回もご参加いただければ幸いだ。
INDEX | ||
VB研公開ゼミ:テクノロジーバトル 開発者の選択 | ||
第1回 Silverlight vs. jQuery+ASP.NET AJAX | ||
1.Silverlight、Ajaxのできること/できないことの対決 | ||
2.リッチUI/開発言語/開発環境の対決 | ||
3.クライアント環境/対応OS/クロスブラウザ/SEO対策問題の対決 | ||
4.システム・アーキテクチャ/将来性の対決 | ||
「VB研公開ゼミ議事録」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|
- - PR -