VB研公開ゼミ:テクノロジーバトル 開発者の選択

第1回 Silverlight vs. jQuery+ASP.NET AJAX

デジタルアドバンテージ 一色 政彦
2009/07/01
Page1 Page2 Page3 Page4

Silverlight、Ajaxのクライアント環境

―― Silverlightを使うには、クライアントPCにランタイムのインストールが必要ですが、社内システム環境への追加コンポーネントのインストールを一切認めない会社も多いようです。その場合、Silverlightは選べないのでしょうか?

]菅原 RIAを利用したい会社であれば、ランタイムの導入くらいは認めてくれるのではないでしょうか。実際、例えばFlexを使ってきれいなグラフを表示するアプリを利用している会社は「Silverlightを導入してもいいよ」という考えを持っていました。

―― とはいえ、追加コンポーネントのインストールに対するアレルギー反応がある会社は多いとよく聞きます。

]宮崎 アレルギー反応がある会社は現実に多いと思います。確かにインストールに前向きな会社もありますが、特に公共機関や金融関係などはインストールに対して本当に厳しく、アレルギー反応は強いです。それに比べ、Ajaxであれば、Webブラウザは最初からインストール済みですので、「それでできるんでしょ」という話の流れになり、技術の採用は比較的スムーズに進みます。ちなみにjQueryについてもサーバサイドに配置するJavaScriptライブラリなので、クライアントへのランタイムのインストールなどはありません。また、JavaScriptをオフにする企業はあまりなく、むしろオンにすることを推奨している顧客企業の方が多いので、やはりSilverlightのようなWebブラウザ・プラグインよりは敷居が低いと思います。

]八巻 アレルギー反応があるのはもちろん理解できます。しかしそれは、現時点でSilverlightの一般的な認知度や評価がまだあまり高くはないことからくる結果であって、時間が解決してくれると思います。例えば、Flashは98%以上のクライアントにインストールされており、Flashのインストールは認めているという企業は多いです。通常、パソコンを買った段階でFlashはプレインストールされているケースが大半なので、Flashのインストールに抵抗がない企業が多いのでしょう。だから今後、Silverlightも認知度と実績が高まってくれば、Flashと同じように導入のハードルは下がってくると思います。

]Ajax派
株式会社デジタルアドバンテージ
Insider.NET編集部
副編集長

一色 政彦

]一色 「Rich Internet Application Statistics」というWebアプリで市場シェアを調べてみると、Flashは先ほどおっしゃられたとおり98%で、Silverlightは34%、Javaは72%でした。現状、SilverlightランタイムはJavaランタイムよりも普及度が低いです。導入に関して今後はFlashと同じような状況になるという話ですが、それは希望的な憶測であって何の確証もないですよね。特に現時点で、これだけ導入率が低いと、なかなか現実的なソリューションとして選択しにくいのではないでしょうか。

 しかもSilverlightランタイムの導入のハードルはけっこう高いと思います。Silverlightが未インストールのPCでサイトを開けば、Silverlightコントロールの表示位置にインストールを促すリンクが表示され、そこからインストールできます。しかし全社員にそれを同様に実施してもらうのは、社員数が多ければ多いほど難しい。それをきちんと自動化して管理しようとすると、Active Directoryのようなシステム管理技術が必要になりますが、実際にActive Directoryを導入して、これをフル活用してきちんとシステム管理している企業は必ずしも多くないのではないでしょうか。そこがSilverlight最大のボトルネックになっていると思います。

会場 実際には急激にSilverlightの普及率は上がっています。登場から1年半という短期間で34%普及したのなら、ペースはかなり速いといえるのではないですか。30%台もあれば、中長期的に見ても、すぐに消えてなくなるプラグインではないと判断できます。また、Flashの普及率が高いといいますが、必ずしも最新版がインストールされているわけではなく、98%というのは過去の全バージョンを含めた数字です。

]菅原 Silverlightはまだ始まったばかりです。.NET開発者なら簡単に開発できるので、Silverlightで作る開発者が増えるに従い、SilverlightとAjaxの利用比率は逆転していくのではないかと考えています。つまり、やはり時間の問題だということです。

Silverlight、Ajaxの対応OSや対応ブラウザのカバー率

―― それぞれの対応OSや対応ブラウザのカバー率はどうなっているのでしょうか?

]宮崎 現時点では、Webブラウザがあれば何もインストールしなくてよいAjaxの方がカバー率は高いです。社内を見てもWebブラウザがインストールされていない端末はないので、すぐに使えます。

]八巻 もちろん、カバー率はAjaxよりは確かに小さいですが、これからは意識を変えていく必要があるでしょう。「インストールによって何か問題が起こるのではないか」「大きいサイズのコンポーネントをインストールするとPCが重くなるのではないか」などと根拠のない迷信を信じている方もいらっしゃいます。そのような方の意識改革を進める対策が、カバー率を上がるためには必要でしょうね。

Silverlight、AjaxのクラスOSやクロスブラウザの問題

]一色 Silverlightで開発したら、Webブラウザと完全に切り離された世界で、OSなどの環境を何も意識せずに開発できるという印象を持っている人が多いようですが、そんなことはありません。実際にMac(Macintosh)とWin(Windows)では微妙に違うところがあり、例えばMacにはUInt32型がありません。

]Silverlight派
シグマコンサルティング株式会社
菅原 英治

]菅原 わたしはjQueryで作った経験があるのですが、jQueryのクロスブラウザ対応は完ぺきではありません。例えばアニメーションの動作が、Webブラウザによって微妙に違ったりして、対応に苦労することがありました。

会場 実際の業務アプリ開発では、総合テストの工数が最も大きくなりがちです。特にクロスブラウザでIEとFirefoxの2つのブラウザでテストすると、それだけでテスト工数が2倍になってしまいます。Ajaxはクロスブラウザのテストが必要だが、Silverlightでは不要だと思っていますが、実際はどうなんでしょうか?

]八巻 Win上のブラウザ間での問題はほとんどありません。ただし、MacとWinについてはそもそもIMEなどがまったく同じではないので、動作に違いが出る可能性があります。あとは、SilverlightアプリはHTMLコード内に埋め込まれ、HTML側のJavaScriptコードとやりとりする場合があるので、そこでブラウザ間の互換性の影響を受ける可能性はあります。

AjaxにおけるJavaScriptエンジン

]八巻 ところで、jQueryのアニメーションはJavaScriptエンジンの実行速度に影響を受けたりしないのでしょうか?

]宮崎 当然、受けるとは思います。

]八巻 Silverlightであれば、例えば3秒で移動するアニメーション処理は、環境によらず正確に3秒で完了します。

]一色 一応、jQueryもミリ秒単位で指定できます。恐らくほぼ正確なタイミングで動作しているだろうと思います。なおかつ、JavaScriptの実行速度は年々向上してきています。特に近年はWebブラウザ間の競争が激化しており、飛躍的に速くなっています。だからJavaScriptの実行速度が問題になることは、将来的にもうないだろうと考えています。

会場 特別なケースですが、JavaScriptの根本的な問題は知っておくべきです。例えばJavaScriptは、浮動小数演算の精度が低く、0.01を100回足して1にならないという問題があります。このようにJavaScriptは万能な言語ではありません。必要に応じて演算はサーバサイドのC#/VB言語などで行うなどの工夫が必要になると思います。

<script language="javascript">
var test = 0.0;
for (var i = 0; i < 100; i++)
{
  test += 0.01;
}
document.write(test);
</script>
実行例:
浮動小数演算で0.01を100回足して1にならないJavaScriptのコード

Silverlight、AjaxのSEO(検索エンジン最適化)対策

―― 業務アプリではあまり問題にならないかもしれませんが、コンシューマ向けのサイトの場合ならば、SEO対策が必要になりますね。Silverlightはこの点、不利ではないのでしょうか?

]八巻 間もなくリリースされる予定のSilverlight 3から、Navigation Frameworkというページ分割とページ遷移ナビゲーションを管理する機能が追加され、その各ページに対して個別のURLアドレスを割り当てるディープ・リンクという機能が提供される予定です。これがSEO対策になるとされています。

―― 普通に作れば、SEO対策ができるということでしょうか?

]八巻 いいえ。SEOを意識してNavigation Frameworkのディープ・リンク機能を使う必要があります。

会場 それはちゃんと検索エンジンで検索されるのでしょうか?

]八巻 Google検索のクローラはちゃんと拾っているそうです。

]一色 Ajaxの立場にいるのでSilverlightのSEO対策方法を説明するのはおかしいのですが、.NET RIA Services開発者のブログによると、<object>タグ内にHTMLコンテンツを書き込めば、それを検索エンジンのクローラが拾ってくれるので、SEO対策になるそうです。ちなみに.NET RIA Servicesとは、フロントエンドをSilverlightにして、中間層からバックエンドまでの包括的なシステム構築を支援するためのフレームワークで、2010年のリリースが予定されています。

―― Ajaxの方は、SEO対策は問題なく対処できるのでしょうか?

]宮崎 ベースがHTMLコンテンツですので、基本的には問題ありません。ページ内でタブ切り替えを行っている場合は、一部が検索エンジンにうまく拾われない可能性もあります。その辺はページ自体の作りで解決可能です。

]一色 Ajaxでも、ページ内のタブごとにURLアドレスを割り当てるなど工夫すれば、Silverlightのディープ・リンク機能と同じようなことは実現可能かもしれません。

―― 業務アプリケーションの話に戻しましょう。


 INDEX
  VB研公開ゼミ:テクノロジーバトル 開発者の選択
  第1回 Silverlight vs. jQuery+ASP.NET AJAX
    1.Silverlight、Ajaxのできること/できないことの対決
    2.リッチUI/開発言語/開発環境の対決
  3.クライアント環境/対応OS/クロスブラウザ/SEO対策問題の対決
    4.システム・アーキテクチャ/将来性の対決

インデックス・ページヘ  「VB研公開ゼミ議事録」


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH