「ASP.NET Open Sourcing Discussion with Scott Hanselman」をやっと観ました

ずっとまえから観ようと思ってRead It Later(Pocket)に登録しておいた動画「ASP.NET Open Sourcing Discussion with Scott Hanselman」をやっと観ました。.NETラボ6月勉強会でこの内容に近いことを話す機会をいただいたのでやっと踏ん切りがつきました。

ASP.NET Open Sourcing Discussion with Scott Hanselman

ASP.NET MVC4のオープンソース化について基本は以下のブログに書かれていることが中心です。

ScottGu’s Blog: 
ASP.NET MVC, Web API, Razor and Open Source

Scott Hanselman’s Blog: 
ASP.NET MVC 4, ASP.NET Web API and ASP.NET Web Pages v2 (Razor) now all open source with contributions

ただ、ブログに書かれていない興味深い内容についてもしゃべっています。しゃべっている内容を全部まとめるにはガッツが足りないので、個人的に興味を持った部分を抜粋してメモを残しておきます。(英語のスキルには自信がないので、一部内容が間違っているかもしれません)

  • ソースを公開するだけのオープンソース化ではない、ASP.NET MVCはオープンな開発を行う
  • Folks, PullRequestができるようになったし、ユーザーとディスカッションを行うことができる
  • 誰でもコミットできるわけではない、PullRequestの内容をみてASP.NET MVC開発チームで判断する
  • PullRequestに対しては内容を見てディスカッションを行い、取り込むべきと判断したらコミットする
  • ASP.NET MVC開発チームは内部のTFSではなく、パブリックなGitリポジトリにコミットする
  • フィードバックやバグフィックスのリリースサイクルをもっと短くしたい
  • CodePlexがGitをサポートした、これでTFS/Subversion/Mercurial/Gitに対応したことになる
  • CodePlexはTFSのチームと密接に関わっている?

ASP.NET MVCはChromeやFireFoxのように短い周期でどんどんリリースされていくのかもしれません。しかも、WebPIやダウンロードセンターで入手するのではなく、Nugetで配布される気が。4.0.1、4.0.2、4.1.0とか登場すると胸がアツくなりますね、ただ、どのバージョンを使うかでいろいろと問題になる気も。

Channel9ってしゃべってる内容を英語でいいから字幕をつけてくれないかな…デモなしで淡々としゃべっている動画は英語圏じゃない人には辛すぎる。ただの睡眠導入動画になってしまいます。(興味があってみてるんだから寝るな、というツッコミもありますが)

.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とか)を読んで勉強しようと思います。