現在、多くのWebアプリケーションは、Ajaxと呼んでいる、一連の高度なJavaScriptの応用技術によって、リッチなユーザインタフェースを持っています。クライアント側でのプログラミングを行わず、プレーンなHTMLだけで構成されているものはほとんどなくなって来ています。そんな中、ここ最近は、さらに進化した、クライアントサイドのデスクトップアプリケーションとして動作するRIA技術が、注目されています。
RIA技術の代表的なものとしては、以下の3つが挙げられます。
- Adobe AIR
- JavaFX
- Microsoft Silverlight
この中で、Adobe AIRについて、ちょっと調べてみました。とりあえず、AIRを選定した理由にはあまり深い意味はなく、これまでのWebアプリケーション開発技術をそのまま引き継いだものなので、JavaEE系を始めとする、多くのWebアプリケーション開発者が、比較的入りやすいのではないかといったところです。
Adobe AIRのアーキテクチャを分類すると、以下の3パターンに分けることができます。
この中で採用するアーキテクチャを選択する場合、企業向けのアプリケーションを開発しているJavaEE系の開発者の場合は、まず、直感的にAjaxベースにすることが多いでしょう。「Ajaxベース」の技術要素を整理すると、以下のような感じです。
- 開発言語
HTML + CSS + JavaScript
- 実行環境
Adobe AIRランタイムに組み込まれている、WebKit HTMLエンジン上で動作する。
- 開発環境
- 無料で使えるもの
- Adobe AIR SDK + テキストエディタ
- Aptana Studio(Eclipse + Aptana用Adobe AIRエクステンション)
- 有料のもの
- Adobe Dreamweaver CS3+Adobe AIR Extension for Dreamweaver CS3
ここから見ると、従来のブラウザ上で実行されていた、Ajaxアプリケーション開発のスキルが生かせるという印象を持つことができます。あと、無料で使える開発環境でも、今までの開発作業と、あまり変わらずに行けそうな感覚もありますね。
では、「Flexベース」の方はどうでしょうか。こちらも、同じ観点で技術要素を整理してみます。
- 開発言語
MXML + ActionScript
- 実行環境
Adobe AIRランタイムに組み込まれている、Adobe Flash Player 9の仮想マシンで動作する。
- 開発環境
- 無料で使えるもの
- 有料のもの
- Adobe Flex Builder 3 Professional(Adobe Flex Builder 3.0.2 Professional Eclipse Plug-in)
FlexはふつうのGUIアプリケーションを、Flashコンテンツとして開発するためのフレームワークです。コンパイルすると、MXMLもActionScriptに変換され、最終的にはSWFファイルとなります。
すでにFlexでアプリケーション開発を経験しているのであれば、迷わずこちらを選択するでしょう。
未経験の場合は、MXML、ActionScriptという「独自言語」を習得しなければならないことが気になるところかと思います。それに関しては、HTML、XML、JavaScriptがわかっていれば、容易に習得できるので、あまり重要な条件ではないでしょう。
そういうことだけでなく、例えば、以下のようなことも考えた上で、総合的に判断することが必要です。
- 現在、Ajaxベースで、効率の良い開発ができているか?
WebアプリケーションのAjaxに比べて、明らかにJavaScriptのコーディング量は多くなるので、そのあたりのことも考慮しておくべき。稼働環境が、AIRランタイムのWebKitエンジンに限定されるので、
- クロスブラウザの考慮が必要ない
- AIRやFlushで用意されているAPIが使える。
といった部分によって、開発しやすくなる部分はあると思われる。
- 要件として、Flashの機能が必要かどうか?
クールなGUIが要求され、それがFlashだと作りやすいのであれば、無理にAjaxでがんばるのは考えもの。
- 新しい技術にチャレンジする状況かどうか?
これには、プロジェクトの状況や、会社の方針、開発者の想いなど、いろいろな要素があるが。。。
- 有償の開発環境を導入できるか?
Flexの場合、SDK + テキストエディタベースで開発するには、熟練が必要と考えられる。Flex Builderを使った方が、効率よく開発できる。
すでに、Ajaxベースの開発で、高い技術を持ち、Flushテクノロジーを使わずに機能が実現できるのあれば、「Ajaxベース」を採用するのが自然な流れです。どうしてもFlushは採用できないという事情がある(AIRを前提で、そんなものはないと思いますが。。。)以外の場合には、楽に簡単にできそうな面があるのなら、Ajaxで無理をすることばかりを考えず、Flexの採用を検討してみてもいいかもしれません。
新しい技術にチャレンジする時は、できること、やりたいこと、必要なこと、コストなど、いろいろな角度から見て判断することが重要ですね。
最近のコメント