.NETラボ6月勉強会に参加しました

.NETラボ6月勉強会で「マイクロソフトのオープンソース戦略を考える」というテーマでスピーカーを担当させていただきました。

http://www.dotnetlab.net/dnn/Events/NET%E3%83%A9%E3%83%9C%E5%8B%89%E5%BC%B7%E4%BC%9A2012%E5%B9%B406%E6%9C%88/tabid/116/Default.aspx

1週間前にプレゼンテーションをほぼ完成させたのですが、その際に事実だけを淡々と載せて自分の考察を書いていなかったので、当日の資料にもあまり自分なりの考察がない状態になってしまいました。当日使用したプレゼンテーションはSlideShareにアップしてあります。

何でマイクロソフトがこんなに「オープン」「オープン」と声を大きくして言っているのか、と考えてみると、結局は自社のテクノロジーであったりサービスを使って欲しいってことが根底にあるんだと思います。こんなことを言ってしまうと元も子もありませんがw ASP.NET WebFormはこれまでのVB/VBAを使っていたエンジニアを移行させやすくするために、イベント駆動/ViewState/PostBackを採用しました。今までVBをやっていたエンジニアを囲い込むことにはある程度成功しました。そして当時2001~2002年の最大のライバルであったJavaを倒すこと(Javaエンジニアを取り込むこと)が至上命題だったのだと思いますが、ViewState/PostBackに代表されるWeb,HTTPを隠蔽した超独自仕様のおかげで、他のテクノロジーのエンジニアを取り込むどころか「Java派vs.NET派」に近い相容れない構図が生まれてしまったように感じます。Sun Microsystemsの凋落とともにJavaが衰退し始め、Java/Strutsに替わるものとして勢いが出てきたのが、ASP.NETではなく、PHP/Ruby on Railsでした。ASP.NETはある一定のエンジニア(昔からVBを使っていた人たちを中心に)を囲い込むことはできましたが、Java/PHP/Ruby on Railsからの乗り換え対象とはなりませんでした。

じゃ、どうするか?ASP.NET WebFormを他のテクノロジーのアドバンテージを取り込んで進化させられるかといえば、超独自仕様がウリになっているためそれは不可能です。ということで、Struts/Rails(特にRailsを意識した)に似せたASP.NET上のMVCフレームワークを作って、他のテクノロジーからの乗り換え対象としたいと考えました。それがASP.NET MVCです。他のテクノロジーがオープンソースになっているためASP.NET MVCもオープンソース化し、パブリックなリポジトリを使用して開発を行うようになりました。独自のJavaScriptライブラリを使用せず、デファクトスタンダードとなっているjQueryを採用しました。すべて、今までASP.NETを使ったことのないエンジニアにASP.NET MVC+C#を使って欲しいからです。WebアプリケーションフレームワークとしてはASP.NETは弱者な訳ですから、他のテクノロジーが採用している技術、思想、開発方法などはどんどん取り入れました。結果「オープン」になりました、なのかもしれません。

Windows Azureもほぼ同様です、クラウドではAmazonというビッグプレーヤーがいます。AmazonはOSやアプリケーションフレームワークに対するしがらみがないので、WindowsもLinuxも動きます、JavaもPHPもRailsも.NETも動きます。MongoDBも動きますが、MySQLだって、SQL Serverだって動きます。こんなビッグプレーヤーに対抗するためには、「AzureはWindows+.NETしか対応しません キリッツ」とは言えないわけです。いろんなテクノロジー、いろんなソフトウェアが動作する必要があります、自社テクノロジーを使ってくれるのが一番うれしいのはそりゃそうでしょうが、そんなことは言ってられないのでしょう。インメモリキャッシュやHPC(BigData)では後発の自社開発テクノロジーではなく、デファクトスタンダードに近いソフトウェアを動作させることを優先させています。結果「オープン」になりました。

OSやデスクトップアプリケーション開発ではマイクロソフトは強者です(たぶん、OSはApple/Googleがいるので今後どうなるかは分かりませんが)しかし、Webアプリケーション開発フレームワーク、クラウドプラットフォームでは、それほど強者ではありません。では強者とどう戦うかというと、まずは現状の強者ができることは少なくともできるようになっていなければなりません。スキルを移行しやすくするために自社開発にこだわらず、スタンダードな技術は積極的に採用していく必要があります。結果「オープン」になり、「オープンであること」アピールしているのかもしれません。「オープンであること」それ自体は目的や果たすべきものではなく、ビジネスである以上、自社のテクノロジー・サービスを多くの人に使ってもらい、お金を落としてもらうことが最大の目的です。そのためにやってきたことが、結果として「オープンになってしまった」のかもしれません。

当日、自分のセッションを終えて休憩時間になってふとそんなことを思いました。もっと早く真剣に考えれば、自分なりのいろんな考察ができたのかと思うと、悔いが残りました。

尾上さんのMVVM/MVCの話を聞いていて、ASP.NET MVCアプリケーションを作っているとMの部分がどんどん大きくなる(クラスが増えていく)ことに不安を感じていましたが。そうあるべき(UI、Web/HTTP以外ごと、つまりビジネスロジックはMに集まる)と理解することができ、非常に勉強になりました。ちょっと大きめのソース(Project Silk/EFMVCとか)を読んで勉強しようと思います。

コメントを残す