自覚症状の無いのAjax病について【プログラミング裏話】
2005年09月14日19:57
Ajaxが 流行っている...。 結構これまでのアプリをAjaxで作り変えたものにリプレイスするという依頼が増えているようだ。
僕がAjaxで何かを作る仕事を依頼されたら絶対に断る。 人々が考えているような妥当な工数で完成しないからだ。
ちなみに、僕は JavaScript(ECMAScript)の仕様は最初から最後まで完全に全部 頭に入っている。それも ECMAScriptEdition4 勧告とActionScript2の仕様も含めてだ。また、DynamicHTMLや ある程度のクロスブラウザの対応方法も頭に入っている。
だが、断る。 それは、何故か。
完成は取り敢えずはすぐに到達するのだが、最後のデバッグ中に、ブラウザの互換性関連で解決しないトラブルが発生して、最初から作り変えない限り、リリースできないという状況に陥る危険が非常に高いからだ。
JavaScriptには いくつかの絶対に出来ないことがある。 それは、そこらへんのプログラマでは見抜けない、結構厄介な制約なのだ。
一例を挙げると JavaScriptは いくつかの命令に関して、特にイメージのロードなどに関しては マルチスレッドによってスムーズに処理される。 問題は、ロードの完了を知ることが出来ないことなのだ。
おかげで画像が表示されたら マウスでドラッグできるようにする、なんていう基本的なことが非常に難しい。 また、それが何故大問題なのかを理解する事自体非常に困難だ。
(ちなみに、ドラッグに失敗すると、ドラッグでなくテキスト選択になってしまい画面の自動スクロール機能が働いてしまう。 おかげで画面が消えてしまう。 つまり非常に問題は目立つ。 画面が表示される前はドラッグできないという制御が必要。 しかし、画像が表示される前を検知することがそもそも不可能 ⇒ 画像が表示が完了されていようがいまいが、うまく動くロジックが必要。つまり全部作り変えない限り解決不能)
これは、最初から知っていて、ロードの完了を知らなくても実現できるように、最初から工夫しておかないと、「絶対に」解決しない問題なのだ。
JavaScriptだけでなく HTML関連の技術は全部、いったん作ってしまうと改変が難しい技術なのだ。 だから、問題に気付いたときには、既に手遅れ(=作り変えないと直らない)になっている場合が多い。
ちなみにこのあたりの性質はブラウザによって全く異なる。 だから、あるブラウザにあわせてコードを書き換えると、あるブラウザでは動作しなくなる。 志村ケンのタンスのコントの様な状況になる。
GoogleがAjaxの研究と題して 莫大な投資をしているのは、この部分の研究なのだ。
それを知ってか知らずか ほとんどの人は Ajaxで作り変えをしたがる。
ちなみに これに対する妥協案としてFlashを提案するのが定番だ。 Flashなら有限なコストで完成する。また、98%のブラウザにFlashPlayerがインストール済みである今、Ajaxと比べてもほとんどデメリットも無い。
だが、しかし、十中八九ははっきりした理由も無く断られる。
---
しかし、僕は、このことを、これまでかなりの人達に忠告してきた。だが、全く理解されない。 みんな、そして車のライトに向かって飛んでいく羽虫のように、次々と死んでいく。
一番最近忠告した人は1年近い期間 休み無く 1日20時間近く(時にはそれ以上) 奴隷のように働いた挙句、結局完成しないという憂き目を見た。 最後は病院に入院した。
僕がAjaxで何かを作る仕事を依頼されたら絶対に断る。 人々が考えているような妥当な工数で完成しないからだ。
ちなみに、僕は JavaScript(ECMAScript)の仕様は最初から最後まで完全に全部 頭に入っている。それも ECMAScriptEdition4 勧告とActionScript2の仕様も含めてだ。また、DynamicHTMLや ある程度のクロスブラウザの対応方法も頭に入っている。
だが、断る。 それは、何故か。
完成は取り敢えずはすぐに到達するのだが、最後のデバッグ中に、ブラウザの互換性関連で解決しないトラブルが発生して、最初から作り変えない限り、リリースできないという状況に陥る危険が非常に高いからだ。
JavaScriptには いくつかの絶対に出来ないことがある。 それは、そこらへんのプログラマでは見抜けない、結構厄介な制約なのだ。
一例を挙げると JavaScriptは いくつかの命令に関して、特にイメージのロードなどに関しては マルチスレッドによってスムーズに処理される。 問題は、ロードの完了を知ることが出来ないことなのだ。
おかげで画像が表示されたら マウスでドラッグできるようにする、なんていう基本的なことが非常に難しい。 また、それが何故大問題なのかを理解する事自体非常に困難だ。
(ちなみに、ドラッグに失敗すると、ドラッグでなくテキスト選択になってしまい画面の自動スクロール機能が働いてしまう。 おかげで画面が消えてしまう。 つまり非常に問題は目立つ。 画面が表示される前はドラッグできないという制御が必要。 しかし、画像が表示される前を検知することがそもそも不可能 ⇒ 画像が表示が完了されていようがいまいが、うまく動くロジックが必要。つまり全部作り変えない限り解決不能)
これは、最初から知っていて、ロードの完了を知らなくても実現できるように、最初から工夫しておかないと、「絶対に」解決しない問題なのだ。
JavaScriptだけでなく HTML関連の技術は全部、いったん作ってしまうと改変が難しい技術なのだ。 だから、問題に気付いたときには、既に手遅れ(=作り変えないと直らない)になっている場合が多い。
ちなみにこのあたりの性質はブラウザによって全く異なる。 だから、あるブラウザにあわせてコードを書き換えると、あるブラウザでは動作しなくなる。 志村ケンのタンスのコントの様な状況になる。
GoogleがAjaxの研究と題して 莫大な投資をしているのは、この部分の研究なのだ。
それを知ってか知らずか ほとんどの人は Ajaxで作り変えをしたがる。
ちなみに これに対する妥協案としてFlashを提案するのが定番だ。 Flashなら有限なコストで完成する。また、98%のブラウザにFlashPlayerがインストール済みである今、Ajaxと比べてもほとんどデメリットも無い。
だが、しかし、十中八九ははっきりした理由も無く断られる。
---
しかし、僕は、このことを、これまでかなりの人達に忠告してきた。だが、全く理解されない。 みんな、そして車のライトに向かって飛んでいく羽虫のように、次々と死んでいく。
一番最近忠告した人は1年近い期間 休み無く 1日20時間近く(時にはそれ以上) 奴隷のように働いた挙句、結局完成しないという憂き目を見た。 最後は病院に入院した。
コメント一覧
あのい 2005年09月15日 04:01
僕がAjaxなアプローチで一番びっくりしたのは、GoogleMapsでもなんでもなくて、実はこれなんですよ。
http://orto.accelart.jp/
驚くのは、これが2001年頃に一人の開発者によって作られたこと。
当時はもちろんAjaxなんて概念は無かったし、それゆえ世間の理解も得られなかった。
ライセンスも色々あって結局フリーに落ち着いたりした。
あと、やはりJavaScriptの実行環境に依存することは解決していない。(ブラウザ対応表を見てもらうと初期よりはかなり良くなってるけど)
環境依存はブラウザ毎にコンパイルスイッチを設けるなどして吸収できたかもしれない。
けど、残念なことに開発が止まってるみたい。
会社組織にしちゃって本業が忙しくなったのか、それともやっぱり一人でやり続けるのは無理だったのか。
http://orto.accelart.jp/
驚くのは、これが2001年頃に一人の開発者によって作られたこと。
当時はもちろんAjaxなんて概念は無かったし、それゆえ世間の理解も得られなかった。
ライセンスも色々あって結局フリーに落ち着いたりした。
あと、やはりJavaScriptの実行環境に依存することは解決していない。(ブラウザ対応表を見てもらうと初期よりはかなり良くなってるけど)
環境依存はブラウザ毎にコンパイルスイッチを設けるなどして吸収できたかもしれない。
けど、残念なことに開発が止まってるみたい。
会社組織にしちゃって本業が忙しくなったのか、それともやっぱり一人でやり続けるのは無理だったのか。
あのい 2005年09月15日 04:10
あー、結論が無いや...
おかあつ 2005年09月15日 05:18
みました。凄い。
また、ある意味多くの示唆を含んでいるような気がします。
今日はネット動向のことで頭がいっぱいで寝られません。
http://japan.cnet.com/news/tech/story/0,2000047674,20087199,00.htm
フォトアルバムブログが林立していますが、マイクロソフトはMSNにフォトアルバム機能を 取り込むつもりみたいです。
世の中は緩やかに メッセンジャーとSNSが統合されていくと思われます。 MSNかjabberか ... 実際にはどういう形になるでしょうか。
結局は、現実的で、オープンの大切さを知っていて、イマジネーションが一番豊かな人が勝つのだと思います。
また、ある意味多くの示唆を含んでいるような気がします。
今日はネット動向のことで頭がいっぱいで寝られません。
http://japan.cnet.com/news/tech/story/0,2000047674,20087199,00.htm
フォトアルバムブログが林立していますが、マイクロソフトはMSNにフォトアルバム機能を 取り込むつもりみたいです。
世の中は緩やかに メッセンジャーとSNSが統合されていくと思われます。 MSNかjabberか ... 実際にはどういう形になるでしょうか。
結局は、現実的で、オープンの大切さを知っていて、イマジネーションが一番豊かな人が勝つのだと思います。
mishi 2005年09月15日 16:14
>>GoogleがAjaxの研究と題して 莫大な投資をしているのは、この部分の研究なのだ。
なるほど、説得力があります。
この研究結果をどこまでGoogleさん(と中の人)はオープンな形で表に出してくれるんでしょうね、Googleはマイクロソフトの方面か、それともRedHatの方面か、もしくはIBMやVASoftwareか、とか言うのは意地が悪いかな。
なるほど、説得力があります。
この研究結果をどこまでGoogleさん(と中の人)はオープンな形で表に出してくれるんでしょうね、Googleはマイクロソフトの方面か、それともRedHatの方面か、もしくはIBMやVASoftwareか、とか言うのは意地が悪いかな。