Hatena::ブログ(Diary)

IT-Walker on hatena このページをアンテナに追加 RSSフィード

2007-05-16 Sun、Adobe、MSをRIAプラットフォームとして比較する

Sun、Adobe、MSをRIAプラットフォームとして比較する

この日記は、前日の「Javaがやばい」という日記の中で触れていたRIAプラットフォーム比較記事を抜き出し、さらに考察を加えたものです。日記をがちゃがちゃいじってしまい、読んでる方にはほんと申し訳ないです。

今日は、RIA(リッチ・インターネットアプリケーション)のビッグウェーブを間近に控えた現在の状況を自分なりにまとめてみたいと普段から考えていましたので、少し書いてみようかと思います。Ajaxについては、ベンダ中立な技術ですし、RIAという範疇からは少し外れる気がしますので、この記事では触れません。

RIAプラットフォーム比較を、試しに表にしてみましょう。

ベンダーUI記述言語手続き記述言語ブラウザ内実行環境スタンドアローン実行環境備考
SunJavaFXJavaアプレットJVMアプレットはもう使われない。ランタイムはそこそこ配れている。携帯電話に強み
AdobeMXML/FlashActionScriptFlashApolloFlashプレイヤーの普及率はほぼ100%。Apolloはこれから配る必要あり
MSXAML/WPF.NET言語SilverlightCLR.NETフレームワークの配布は少しの不安もなし。Silverlightはこれから配る必要あり

こんなところでしょうか。こうして見ると、「これから」の技術が目白押しですね。

SunのJavaFXAdobeApolloMSSilverlight。これらはまだ、クライアントマシンにランタイムを配ることすらできていません。それらの配布戦略も、これからの動向を大きく左右するのは間違いないでしょう。


では、各社の状況を見ていきたいと思います。

Adobe

Adobeの強みは、いくつかあります。一つはデザイナからの指示が絶大だということ。特に、開発畑のデザイナだけではなく、写真やイラスト、動画を取り扱う「クリエータ」と呼ばれる職種の人間と一番近い場所にいるのがAdobeです。Acrobat8では、PDFCADドキュメントを埋め込むこともな可能になったようで、2D/3Dを問わず、設計業務でも利用されることになりそうです。デザイナ・クリエータたちの感性が活かされ切った、独創的で美麗なアプリケーションが登場する可能性が一番高いと言えます。

他の強みとしてはFlashプレイヤーの普及率が非常に高いことです。これは、これからFlexが爆発的に普及する可能性を秘めているということです。一瞬にして世界中のWebアプリケーションFlexだらけになる・・というのは非常に現実めいて聞こえます。

しかしスタンドアローンで動作させるためのApolloランタイムは、現在のところ普及率ゼロだということが挙げられます。ということは、RIAに限ってはブラウザ上を制したAdobeが、次に行うべき最大のミッションはApolloランタイムの配布ですが、Adobe ReaderFlashプレイヤーを普及させたベンダーだという実績を考えると、成功させる可能性はかなり高いと言えるのではないでしょうか。

Flex Builderがすでに完璧に動作するのも大きな強みです。ヴィジュアル重視のアプリケーションをすばやく作るには、WYSIWYGエディタがあると非常に助かります。VBライクな開発もし易く、業務アプリケーションを作るのに使用したって少しも問題ありません(「VBの開発性をRIAアプリケーションに」ってキャッチフレーズ、いいかもしれませんよ、Adobe様)。微妙なのはFlex Builderが有償なこと。Adobeや元Macromediaは開発用ツールを無料で配布したことがないので、非常な冒険に思えるということでしょうか。ツールを無償にすればJavaプログラマは確実に飛びつきます。それで得られる市場シェアと、Flex Builderの売り上げを比較するのは僕の仕事ではありませんが。


MS

MSについては、何よりクライアントOSを制していて、.NETフレームワークの配布に絶対的な強みを持っていることがまず特徴です。WPFの実行には.NETフレームワークのバージョン3が必要ですが、Windows Vistaにはすでに同梱されていますし、他のOSに対してもMicrosoft Update経由で配れることを考えると、MSランタイムの配布で失敗することはなさそうです。ただそれは、Windows上だけの話です。

Silverlightについては現在のところ、JavaScriptコードを用意して「Get Silverlight」のバナーを表示するという配布戦略しか見えていません。しかし近い将来、SilverlightプリインストールしたりMicrosoft Update経由でインストールできるようにするのはおそらく間違いありません。ランタイムの配布について一番不安がないのがMS技術でしょう。それもWindows上だけの話ですが(でもWindowsのシェアを考えると以下略)。

MS技術で弱点があるとすると、スタンドアローンで動作するRIAアプリケーションを作る環境であるWPFWindows固有の技術であることが挙げられます。そのサブセットを同梱したSilverlightプラットフォームを選ばないのに、です。

要は、

ということです。

ポータビリティが重視される(ことになるであろう)RIAアプリケーションにとって、スタンドアローンというだけでWindowsに限定されてしまうのは不要な制約に思えます。

とはいえ、この制約を緩和するのはもはや簡単です。Silverlightスタンドアローンで動作し、ローカルファイルシステムにもアクセスできるようにしてしまえばよいのです(もしかすると既に可能かもしれません)。こうしておいて、Silverlightが持つ.NETフレームワークのサブセットのみを用いて開発を行えば、ブラウザ上でもスタンドアローンでも、プラットフォームを選ばず動くRIAアプリケーションが作れます。まさにWPF/E (Everywhere。Silverlightの昔のコードネーム)ですね。

もう一つのMSの弱みは、デザイナ/クリエータからの支持を取り付けていないということです。

こちらの方がむしろ、非常に大きな影響を及ぼしそうです。ただその代り、.NET開発者がすんなり移行できるという強みも持っています。短期的にこれらが及ぼす影響としては、「美麗で独創的なアプリケーションAdobe技術で」「ビジネスユースのRIAアプリMS技術で」ということになるでしょうか。ただ、どちらのプラットフォームも潜在能力は非常に高く、表現力も豊富です。デザイナ/クリエータがMS技術を習得することに抵抗がなくなれば、こうした垣根は取り払われていくでしょう。


Java

RIAにおけるJavaの特徴としては「XMLベースではないUI記述言語」「JREの普及率は結構高い(どのバージョンが一番普及しているのかは不明ですが)」「アプレットは現在使われることは稀。ただ、JREが入っていれば動くので見捨てるには惜しい(Java開発者にとっては)」といったところでしょうか。アプレットが現在封じられている時点で、JavaRIA配布はJavaWebStart一本に絞られると思われます。

JavaFXは、用途を絞った良い言語(ある意味DSL)だと思います。UIを手書きするなら、Swingのように手続き型で書くよりはるかにわかりやすく、MXMLやXAMLのようにXMLで書くよりはるかに簡潔です。ただし、「手書きするなら」です。

ドラッグ&ドロップでUIを構築できるWYSIWYGエディタを作成するなら、UI部品とスクリプト部分が明確に分かれているXML+スクリプトベースのアプローチの方が楽なはずです。JavaFXは、全てがスクリプト言語のコード断片となります。一見して、UIコンポーネントを表すクラスかそうでないかは区別が付きません。これではWYSIWYGエディタの作成が難度の高い作業になるのは仕方ありません。


ここが他の二つとの大きな違いではないでしょうか。JavaFXのページを見てみると、「デザイナのための」という言葉が見当たりません。RIAアプリケーションにおけるUIの重要性を真から重く受け止め、WYSIWYGエディタJavaScript/ActionScriptマークアップ言語に慣れ親しんだデザイナと正面から向かい合うために、XMLスクリプト言語を採用した他の二つの技術とは、少し観点が違う気がします。デザイナがJavaFXを学ぶのは、そのデザイナにとって有益かどうか、少し疑わしく思えます。


おそらくSunは、JavaFXを使うのは開発者以外にないことは承知しているような気がします。少なくとも僕にはそう思えます。

その前提であれば、JavaFXのメリットを「デバイスを選ばず実行でき得るほどソースファイルがコンパクトに」「既存のSwing開発者にとっては画期的な生産性」「Java2D、Java3Dも宣言的に扱えるので、リッチなコンポーネントの登場が期待できる」といったところに設定しているのではないでしょうか。

他の二つが「デザイナがフルにセンスを発揮できるようなUIプラットフォームを」「RIA体験をブラウザでも、スタンドアローンでも」「RIAアプリケーションオフラインでも」という方向で競い合っているのとは違います。


つまり、RIAという概念とかなり重なるところはあれど、デザイナによるコミットメントはそれほど期待しておらず、それ以外の上で述べたようなメリットに期待をかけている製品、という点で他の二つとは全く異なるものだという気がしています。そのアプローチが今後成功を収めるかどうかは、まだ誰にもわかりません。ただ少なくとも、Sun自らがFlexWPF/Silverlightとの方向性の違い、重点を置く箇所の違いを明確に宣言する必要があるのではないかと思います。他の二つと同じ視点で比較されては、JavaFXを誤解されたまま失敗に陥る可能性があるのではないでしょうか。


それにしても、SunはJavaFXの配布をどのように行うつもりでしょうか。僕としては、Java 7に入れてしまうのが手っ取り早いと思うのですが・・ただし、Java UpdateがJDKのメジャーバージョンアップを自動で行わないという現在の状態では、それでもあまり意味がないか。

まあ、普通に考えられるのはJarファイルとしてアプリケーションごとに添付する、という伝統的なアプローチですが、そうなるとダウンロードサイズがとんでもないことに・・・Java 7で採用されるJamファイルは、そうした「Jarアプリケーション間で共有したいけどできない問題」に光明をもたらすのか?こうした問題についても、これから非常に注目したいところです。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

Connection: close