理想は理想、現実のコストを見据えて

最近、ちょっとクロスプラットフォーム実現の難しさを感じる機会が少々。

で、ちょうど2chで「JavaはWrite once, run everywhereとかいうけど、そんなの実際可能か」って話が上がってたんでその話に触れてみる。

思えば、Javaはそれで失敗してるんですよね。run everywhereのためには、あらゆるプラットフォームに対してVMを書かなきゃいけない。それを売り文句にするのは、かかるコストが大き過ぎだろうと。自社のSolarisで手一杯で、シェアダントツのWindows版がないがしろになって、そのせいでJavaは遅いし不安定というレッテル貼られたわけです。

(SUN の立ち位置からすると、最初はサーバーって分野に限って言えばrun everywhere狙えたのかも。Javaの受けがあまりにもいいから、やたらと範囲を増やし過ぎたのか。)

MSはその辺り、現実解を取ってますよね。.NET Frameworkは、シェアードソースでMac版のソース提供するし、monoを後援はするけど、力を入れてやるのはWindows上のみ。

Silverlightも、IE・火狐・サファリを押さえればシェア9割超えるんだから、それだけ対応すれば十分という判断。機能的にも、無理に色々載せずにかなりコンパクトに。その代わり、開発のスタイルはWindows専用のWPFに似せたスタイルで作ってある。

MS信者の利点

ちょっと余談。

同僚曰わく、「MS信者の一番おいしいところは、過去の失敗から学ぶ過程が見れることだ」なんて言うんですけど、その通りかも。

MSって言えば、不振技術は容赦なく切り捨てて新しい技術に移っちゃうことをよく批判されますけど、その失敗の原因はよく分析されてて、新しい技術ではちゃんと改善されてる。
90年代に、「後だしジャンケンでおいしいところを持って行く」ってスタイルで急成長しただけあって、不満の声を汲み上げて改善するっていうのは圧倒的に巧い。
MS信者は実のところ、アンチ以上にMSに文句を言うんですよ。でかい企業だし足並みは遅いものの、いずれはその怒りの声がちゃんと届くから。