本気でやるならクロスプラットフォームは避けてMozillaアプリを作るべき-hogehoge

うーん、そうかな。自分もクロスブラウザスクリプティングの労に嫌気が差して、Firefoxの拡張制作に逃げ込んだ経験がある。でも逃げ込んだ先のMDCのドキュメント漁ってたら仕様変更・方針転換の痕跡がゴロゴロあって、サンプルコードとか読んでも、バージョン毎に処理分けしてたりと、クロスブラウザスクリプティングと大差ない面倒を抱え込まなきゃいけないことに気づいて萎えてしまった。

何で後方互換性という基本的なことさえ担保されないのか。

色々事情は有るのかもしれないけど、ブラウザがバージョンアップするたびに動作しなくなった拡張が死屍累々・・・、という状況を許容しているMozillaとは、とてもじゃないが付き合いきれないと自分は思った。やたらと乱発される仕様変更によって、非生産的な対応作業を、ユーザーと、拡張作者に強いるMozillaのやり方は賢いとは思えない

対照的なエピソードがMSにはある。Windowsリリース時の話だ。

スポルスキー氏は2004年にマイクロソフトの基本的な戦略について興味深いことを書いている。DOSからWindowsへ移行する時期に、バギーなアプリケーションをWindows上で走らせるためにアドホックな機能追加を行っていたと証言しているのだ(参考リンク

その具体例に驚かされる。往年のヒットゲーム「SimCity」はメモリの扱いで致命的なバグがあった。開放したメモリを、開放した直後に再び使ってしまうというバグだ。これは1度に1つのアプリケーションしか動かないシングルタスクのDOSでは問題がないが、マルチタスク環境のWindowsでは重大な問題を引き起こす。開放したメモリは、すぐに別のアプリケーションによって利用されるからだ。このためSimCityはWindows上でクラッシュを繰り返したという。SimCityのバグの原因をディスアセンブルして突き止めたマイクロソフトは、SimCityの稼働を検知したらメモリアロケータを特殊なモードで走らせるという機能追加を行った。

これは特殊な話ではなく、Windowsを新バージョンにアップデートしたときに、あらゆるアプリーションが稼働するよう同社のテストチームは非常に多くの“回避策”をWindows上に仕込んでいったという。たとえアプリーション側に問題があったとしても、それはWindowsユーザーには関係ない。ユーザーは、Windowsをアップデートしたら自分のアプリケーションが動かなくなったと考える。問題のあるアプリケーション開発者全員に修正させることができない以上、Windows側で回避策を打つ、というアプローチだ。

Webブラウザ戦争でAcidレースの局地戦が白熱 - @IT

どうだろう?今でもこのカルチャーがMSに受け継がれているかは知らない。IE8では原則に反してドラスティックな変更が入るかもしれないことがこの記事でも言われている。だから、IEを勧めたいのではない。だが、自分の知る限り、.netの世界ではライブラリの後方互換性が大きく破壊されることはこれまで起きていない。設計が良いのだろう。というわけで、Silverlightはどうだろう?Silverlightなら、プレーヤーのバージョンアップが入っても、まず間違いなく後方互換性は担保される。レンタリングするのはMS製のエンジンでしか有り得ないのでクロスエンジン互換性を気にすることもない。Silverlightなら、色々な人を悩ませてきた、色々な問題を解決してくれる…筈。

何アホ言ってたんだ自分・・・。猛省。

Comments :2

Fridge Freezers  10-10-14 03:19:07 UTC

SimCity is the best, so damn addicting game. i used to play the original version when i was just a kid-:”

Lingerie sets 10-12-23 03:49:43 UTC

SimCity is a classic city simulator game which i used to play in the early 90’s (the original version) *:”