FlexとかでRIA作ることに勝る利点が何かあるんでしょうか?
Ajaxのコンポーネントが沢山公開されてるので車輪の再発明をしないで済むとか、そういうことですかね……?
後はFlexよりはAjaxの方が開発難易度が低いとか? でもいくらAjaxのライブラリで互換性が高まったとはいえ、複数ブラウザでしっかりテストしなきゃいけないだろうしなー。開発難易度は低くてもテストで時間を取られてコスト高くなっちゃいそうだし。なんだか欠点ばかり気になってしまいます。
「Ajaxのコンポーネントが沢山公開されてる」ということもあるでしょうが、技術者が多いということが最大の理由ではないでしょうか。
Ajaxといっても、所詮はJavaScriptですから、ちょっとXMLの勉強をさせれば使い物になります。技術者が多ければ人月単価は下がりますから、多少テスト工数が多くても予算内に収まります。
一方のFlexは後発ですから、下手をすると技術者を一から養成しなければなりません。
ActionScriptはJavaScriptをベースにしているものですが、制約が多く、それだけではAjax並の機能を表現することができません。どうしてもFlex固有の技術を学ぶ必要があります。
以上はビジネスのお話です。俺様スクリプトを公開するときは、逆にAjaxだとテストが大変ですから(俺様ひとりでテストしなければならないから)、Flex をマスターした方が楽ですね。
なお、RIAは、AjaxやFlexをも含んだメタ概念なので、ここで比較すべきものではないと思います。
「Ajaxのコンポーネントが沢山公開されてる」ということもあるでしょうが、技術者が多いということが最大の理由ではないでしょうか。
Ajaxといっても、所詮はJavaScriptですから、ちょっとXMLの勉強をさせれば使い物になります。技術者が多ければ人月単価は下がりますから、多少テスト工数が多くても予算内に収まります。
一方のFlexは後発ですから、下手をすると技術者を一から養成しなければなりません。
ActionScriptはJavaScriptをベースにしているものですが、制約が多く、それだけではAjax並の機能を表現することができません。どうしてもFlex固有の技術を学ぶ必要があります。
以上はビジネスのお話です。俺様スクリプトを公開するときは、逆にAjaxだとテストが大変ですから(俺様ひとりでテストしなければならないから)、Flex をマスターした方が楽ですね。
なお、RIAは、AjaxやFlexをも含んだメタ概念なので、ここで比較すべきものではないと思います。
あー、書いたときはRIAはWPF, Flex, JavaFX辺りを気にして書いてました。言われてみればAjaxもRIAとは言えますね。
どちらかというとAjax=JavaScriptを非同期で動作させたもの……という印象が強いので考慮が抜けておりました。
JavaScriptがちょっと使える(その手の技術者は多い) → コンポーネント使わさればとりあえずAjax使い
という理屈はわかりやすいですね。テストも技術者が多くても短期集中で終わらせればトータルコストは安くなる……と。
Ajaxの利点は、GoogleがGoogle Maps等で採用したことによる「知名度」が一番大きいと思います。
要するに「Flexを使って作りました」というより、「Ajaxで作りました」という方が
よりインパクトがある、というそれだけのことじゃないかなーと。
あとAjaxは基本的に無料なので、とっかかりやすさもあると思います。
FlexとAjaxの差などについては、以下のサイトでもっと詳しく説明されています。
Flex2,ActionScript3.0が優れている9の理由とAjaxとの差
http://zapanet.info/blog/item/932
ちなみに、私はFlexは使ったことはありませんが、Ajaxでの開発経験はあります。
ご質問内で欠点として挙げられている通り、複数ブラウザ対応により開発コスト増は
ものすごいものがありました・・・・もう二度とやりたくない、と思える程に(汗)
もちろん悪いことばかりじゃなく、面白い技術には違いないのである意味楽しみながら
開発できた、というのはあります(笑)
Flex、Ajaxのどちらが優れているというのではなく、お互いの弱点を相互補完する形で
技術を使っていくのが、正しい姿なんじゃないかなーと思いますね。
まあFlexはいまだにビルダーは有料(高い)ですからねー。そのあたりですか。
知名度は納得できるのですが、逆に、『何故GoogleはFlex(やAjax以外のRIA)を使わなかったのか……というのは気になります。AIR(Flex)は使ってるのに……。
それにしても、やっぱりテストは大変なんですね。ライブラリ互換とか謳われてるほどあるんですかね。。。?
相互補完できれば一番良いのはわかるのですが、イマイチ棲み分け具合が難しくて。結局、全部Flexで作っちゃえとかなりそうで……。まあGUI系をFlexにして、入力系はAjaxで連携とかかなあ(普通だなw)。
HTMLとかCGI系も、PDFとRIA系に移行していくのかなあと。まあPDFは未だにリンク先がそうだとわかるとウザイと思いますが。
リンク先、参考にさせていただきます。自分で探してた時は上手い具合に見つからなかったので。ZAPAさんの記事か。
AjaxならiPhoneやiPod touchで使えます。
ARMベースの携帯電話やガジェット類だと、フル機能のFlash Playerは載せていないけど、JavaScriptはそれなりに動くOperaやSafariなんか載る端末が増えてくるので、なるべく多くの端末のサポートするには端末側にはJavaScriptのみを要求するAjaxの方が広くサービスを使えて良いという考え方もあります。
まだハードがソフトウェアテクノロジーに追いついてないという感じですかね。
今後、機器がAIRやらSilverLightやらJavaFXなんかに対応してくると、Ajaxは駆逐されちゃうかもなのかー。
ただ機器の容量が少なければAIR(Webkit+JavaScript)みたいな環境も生き残るのかな。
Ajaxの大きな利点の一つは、決して新しい技術ではないことです。
XHTML、CSS、JavaScriptなどのこなれた技術を組み合わせただけでRIAを構築できるということです。
もちろん、CSSブラウザ間の互換性などで、苦労することは多いのは、おっしゃる通りです。
ですが、こなれた技術なので、ノウハウは比較的豊富にあります。
個人的には、ある程度の複雑さまでであれば、Ajax(JavaScript)を採用した方がコスト的に得な場合が多いかなと思います。
例えばですが、サイトのメニュー部分なんかは、JavaScriptで対応した方が、ページ自体のデザインの変更に伴う対応や、項目の追加・変更なども容易ですので、Flexなどで対応するよりもよいかなと思います。(Flexでこれが難しいかと言われると、決してそうではないですが、対応が容易な仕組みを構築するために求められるスキルは大きく違うと思います)
まとめると、以下の2点が利点かと思います。
何かの参考になれば。
レガシーにはレガシーなりの良さがあるってことですね。
Flexビルダーは有料だけどAptanaは無料だしなー。設備的にも優しいのかもしれません。
AjaxはXMLを用いた非同期メッセージングを実現したフレームワークです。Ajaxの本質にJavaScriputの存在価値はあまりありません。なのでJavaScriput以外の言語でもOKなはずです。これに関しては、私は一切の実戦経験がありませんので、知識のみです(知ったか鰤!?)
Ajaxとは何か、という質問ではなく。
何故RIAを構築するのにFlexではなくAjaxを使うのか。
それらのRIAと比較して、Ajaxの方が優れている利点があるのか……というのが質問です。
あー、書いたときはRIAはWPF, Flex, JavaFX辺りを気にして書いてました。言われてみればAjaxもRIAとは言えますね。
どちらかというとAjax=JavaScriptを非同期で動作させたもの……という印象が強いので考慮が抜けておりました。
JavaScriptがちょっと使える(その手の技術者は多い) → コンポーネント使わさればとりあえずAjax使い
という理屈はわかりやすいですね。テストも技術者が多くても短期集中で終わらせればトータルコストは安くなる……と。