ゆーたんのつぶやき

株式会社ノークリサーチにてIT関連のシニアアナリストとして活動しています。

AjaxとFlashは競合関係ではなく補完関係



ちょっと前までは「Ajaxにするか、Flashにするか?」
みたいな話も聞かれましたが、ここ最近ではタイトル
のような認識で落ち着いてきている感じがします。


OreillyのEJB本で著名なRichard Monson-Haefel氏も
自身のブログでFlex-Ajax Bridgeについて触れており、
両者を併用することにメリットがあると語っています。
http://rmh.blogs.com/weblog/2006/03/pbj_the_ajaxfla.html


6月のAdobeニュースレターでも、Flex-Ajax Bridgeが
取り上げられており、競合関係ではないという主旨が
展開されています。
http://www.adobe.com/newsletters/edge/may2006/index.html?sectionIndex=4


以前はAjaxというとプログラミングが煩雑になるという理由から、
Flashの優位性を説くパターンが良く見られましたが、GWTを筆頭
とするJavaなどからJavaScriptへのコンパイルも含めた開発環境
が登場したこともあり、その観点ではむしろAjaxの方が進んでい
る感もあります。
http://blogs.zdnet.com/web2explorer/index.php?p=197
http://journal.mycom.co.jp/news/2006/05/18/102.html


Flashが元来Webコンテンツの中に動きや音声を入れ込むことを
目的として開発されたことを踏まえると、リッチなUIを開発する
際に全画面をFlashにするよりは、AjaxをベースとしたUIに
必要に応じて適宜Flashを入れ込む方が自然な感じがします。
現にFlex-Ajax Bridgeも現時点ではAjax側からFlashを呼び出す
一方向のみに対応しています。その方が実装上も自然で無理が
ないということなのでしょう。一方、Flash本来の強みである
動画や音声、容量の大きいコンテンツの配信といったときには
Flash Playerの助けを借りるのがベストです。
無理に全画面FlashのUIにするのではなく、必要に応じてAjax側から
そうした処理を呼び出すというスタンスが素直ですし、特に企業向けの
情報システムにおいては下位互換性という視点からもメリットが高いと
考えています。


ただし、Flexを使うかどうか?という点においては上記とはまた
違う観点が必要になってくるかと思います。Flexは単にMMLから
Flashコンテンツを変換するプレゼンテーションサーバーではなく
Flex Data Servicesなどの優れたミドルウェアも持っています。
これらはUIをFlashにするか?どうかという事とは切り離して考える
べきポイントです。実際、今年後半にはFlex Data ServicesのAjax
クライアントがリリースされる予定です。
Flexに関してはコストと機能の比較検討が重要になってくると思われます。
Flex Data Servicesのメリットの一つにサーバーからのPushがありますが
DWR2.0などでもPushには対応してきていますので、ビジネス要件と照らし
合わせてどのツールやミドルウェアを選択すべきかを冷静に考えることが
大事になってきそうです。
Flashを使うことと、Flexを使うことが混同されてしまっていて、どの技術
をどのような場面で適用するのか?なぜその技術が必要なのか?という点
がきちんと議論されないまま、「Flash採用」「Flex採用」という技術名称
だけが叫ばれてしまうケースもあるように感じます。
良く言われることですが「なぜ、その技術を使うのか?ユーザーの視点で
見たときにどんなことがしたいのか?」をきちんと抑えることが肝要だと
あらためて思います。


個人的にはFlashはWebコンテンツの構成要素のレイヤーの中ではGIF/Jpeg
といった画像やAVI/QuickTimeといった動画といったものと同じ位置づけ
に見えています。一方のAjaxはHTMLも含めたコンテンツ全体を制御する
ためのコントローラの役割と見なすことができます。そう考えると、


AjaxFlashは二者択一される対立技術ではなく、FlashはWebコンテンツ
やWebアプリケーションを開発/作成する上での表現手段の一つであり、
サーバー側との通信も含めたそれらを全体を制御するためのJavaScript
を使った開発スタイルがAjaxである


という捉え方がボクとしては一番スッキリするように感じています。