ひょっとして、マイクロソフトさん、焦っています?

いま使うべき、学ぶべき.NETテクノロジはどれ?(1/4) - @IT を読んだ。
screenshot
この記事、私個人にとっては衝撃的な記事だった。何が衝撃だったかというと、実に個人的なことで、のどに突き刺さった小骨のように、もやもやした嫌な気持ちが晴れた思いがあったのだ。「ああ、そういうことかと。」と。

マイクロソフト、および、そこからでてくる技術、それは、たとえば、Windowsだったり、Officeだったり、.NETだったり、C#だったりするが、それらは、マイクロソフトゆえ、最先端のものを出してくるようなイメージがある。シェアも大きい。なのに、私はまったく興味がわかなかった。
私は、Macユーザなので、もともとアンチマイクロソフトなところはある。でも、それはいちユーザの話であって、技術者としては別の話。技術者として興味があればマイクロソフトだろうがアップルだろうが、手を出す。だから、マイクロソフトの技術を習得していてもおかしくないのだ。なのに、興味がまったくわかない。なぜか?
それがもやもやとしてずっと残っていた。それでも、前職では、Linuxベースの開発となるので、そのもやもやと面と向き合う必要はなかった。
ところが、今の職場は全てがマイクロソフトで固められている。しかも、業務の大半がカビが生えたクラサバ。そうなると、マイクロソフトの技術というのは無視できない。当然自分の中にあるもやもやとも面と向き合わないといけない。常になぜ興味がわかないのだろうというのと戦いながら日々すごしていた。
その日々に異変がおき始めた。それが、Azureなのだ。
そして、先の記事。
興味が起きなかった原因がはっきりわかったのだ。そう、マイクロソフトの技術って、5年ぐらい遅れているのだ。だから、習得しようと思っても「何をいまさら」という気持ちで興味がわかないのだ。

マイクロソフトの開発技術で真っ先に思いつくものいえば、VB、あるいはVB.NET。そして、VB(.NET)でくまれたクラサバシステム。もちろん、C#C++スタンドアロンアプリやASP.NETのWEBアプリもあるにはある。これらの、実行環境も基本はWindows上と限定できる。この「限定」があだとなったのではないかと思う。閉じた世界ではマイクロソフトも開発者も時流というものを考える必要がない。あるいは、マイクロソフト自身が時流を作り出せていた。競争する必要がない。

ところが、インターネットの世界とかかわろうとしたとき、そのモデルが破綻したように思う。ネットの世界はオープンソース系が跋扈している。その中で、マイクロソフトが今までどおり時流を作ろうとしたのだと思う。たぶん最初はマイクロソフトも何とかなるだろうと思っていたと思うのだが、無理だった。Windowsのシェアにものを言わせようとした時期もあるが、結局、オープンソース系の人たちが作り出す時流に逆らえなくなった。もっと言うなら、逆らっていてシェアが獲得できなかった。その逆らっている期間、オープン系の人間からすると「当たり前」のことをマイクロソフトは取り入れてこなかったように思う。ここにマイクロソフトの開発技術、開発手法、開発アーキテクチャの「遅れ」の原因があるように思う。
たとえば、MVCいま使うべき、学ぶべき.NETテクノロジはどれ?(2/4) - @IT にもかかれてあるが、ASP.NET MVCVisual Studio 2010から正式に導入される。ところが、MVCなんてものは、オープンソース系の世界では古くから言われてJavaで本格的なMVCフレームワークStrutsがでたのが2001年。2003年には普及しており、2004年ごろにはデファクトスタンダードとなっていた。5年遅い。
データアクセス(いま使うべき、学ぶべき.NETテクノロジはどれ?(3/4) - @IT)にしても、O/RマッパーやPOJOなんてのが流行したのも2005年ごろ。Javaの世界では今は当たり前。
リッチクライアント(RIA)にしても、マイクロソフトSilverlightを大々的に掲げているが、すでにFlashが圧倒的なシェアを誇っている。先鋭的な技術者は、view部分を全てFlashで作ったものを2004年には製作している(知人にいた)。Flashが戦っている相手はSilverlightではなくてAJAXのようにも思う。

考えてみれば、もともと、OSの先行度合いではWindows自体がMacに負けていたから、そういった意味でマイクロソフトの技術というの二番煎じが多いのだろう。ただ、マーケティングがうまいからシェアを獲得できてしまう。ネットの世界もその手法をとろうとしたのだと思う。ところが、そうは問屋がおろさなかった。ネットの権化のGoogleが増益なのに、マイクロソフトは減益。まったくの憶測だが、数年前からこのことをマイクロソフト自身はわかっていたのだと思う。そこで、「自分たちで時流を造る」という考え方を捨て、「時流に乗る」という選択をしたのだと思う。だから、最近マイクロソフトが出してくる技術は確かに標準に近く、以前よりも扱いやすくなってきてる。ただ、遅い。
つまり、よくみると、マイクロソフトはあせっているように見えるのだ。さらに憶測が許されるなら、マイクロソフトは早く旧態依然の技術に見切りをつけたいのではないかとさえ思う。Windowsフォームがメンテナンスモードに入ったというのはその証左にも思える。
ここで、マイクロソフトの意図を大胆に予測してみる。

  • スタンドアロンアプリ: WPFを使ってリッチインターフェースなものを主流にする。主に、ゲームなどをターゲットとしている。
  • クラサバ: なくす。
  • WEBアプリ: WEBフォームをやめ、MVCベースにする。
  • RIA: クラサバの代わりとしてSilverlightを推し進める。
  • 言語: C#をメインとし、新しい潮流としてF#(関数型言語)も推していく。

さて、どうなるやら。

さてさて、実のところ、今のマイクロソフトの技術には興味があるのだ。WEBフォームはまったくする気が起きないが、ASP.NET MVCは習得したい。Silverlightも(もちろん、同時にFlexも)。特に、Azureとの関係を考えると、必須だろう。