さて、まさかのMSの大鉈連発に、TL大騒ぎでございます。まさかOSS化まで入ってるとは僕も思ってなかった。シアトル組もそこはざわざわである。 んで、今回の決定が意味することをちょっと考察してみたいなーと。備忘録的にね。
あくまで 私的感想です。鵜呑みにしないように。
何が起こったのか
11/12日(米国現地時間),Microsoft Connect();というイベントの中での発表でございました。
詳しくは、Public Keyさんを参照するのが良いと思います。
- [速報]マイクロソフト、サーバサイドの「.NET Core Rutime」と「.NET Framework」のオープンソース化を発表。C#コンパイラやASP.NETなど
- [速報]マイクロソフト、「.NET server framework」のLinuxとMacOS X用オフィシャルディストリビューションを発表。.NETアプリケーションのビルド、実行が可能に
- [速報]マイクロソフト、フル機能の無料版「Visual Studio Communiti 2013」公開
英語をですが、Scot HanselmanのBlogのほうが技術的な内容は詳しいです。まぁ、MSの中の人ですしね。
抜粋すると、以下の様なことが起こりました。
.NETコアライブラリのOSS化
「サーバーサイド.NET」と呼ばれていますが、WPF/WinFormなどのClient描画に関わる部分を除いた、エンジン部分のOSS化と思ってもらえればOKですね。 画像をはっつけておきましょう。
- from .NET Framework Blogs
.NETコア部分のマルチプラットフォーム化
そして、.NETのコアライブラリは、Linux/MacOS で動作するようになります。いままでMonoがあったじゃん、という人には、こう言い換えましょう。Microsoftがオフィシャルにサポートするようになります。今後追加される.NETコアは、クロスプラットフォームで動くことを大前提とされるはずです(そうでないものはコアから外れるのでは)
大きなインパクトとしては、要はASP.NETがLinux/MacOSXで公式サポートされるってのがでかいトピックとなります。
あとはJITコンパイラもRyuJITとしてOSSとなりました(というか前からなってたけど次の.NETから公式採用)
Visual Studioの非エンタープライズ無償化
そしてVisual StudioはPro版相当が、エンタープライズで使わない限りは無償となるCommunity Editionが発表されました。これ単体では、個人的にはそんなにメリットはないのですが・・・
Visual Studioにマルチデバイス対応が標準同梱される
なんと、最新のVisual Studioは、インストールすると勝手にJavaとAdbとApache Cordovaが入ります。ついでにAndroidのエミュレータも入ります。つまり、Visual StudioってのはもはやWindowsアプリを開発するためのもの、ではなくなるのです。Visual Studioを使う = iOS/Android/Windows 3デバイス対応のアプリを作るとほぼ同義になります
Visual Studio以外の開発環境のサポート
これ、あんまり騒がれていないんですがもう一つのでかいトピックとしてOmniSharpがあります。OmniSharp自体は割と前からあったものですが、要はVim/Emacs/SublimeなどにVisual Studioばりのコード補完機能を導入するものです。これが今回のサミットでも大きく紹介されました。そこら辺の内情は、OmniSharp中の人のBlog見ると分かりますが、MSはこいつにも大きくコミットしようとしているようです。
これは、「サーバーサイド書く分にはVS使わなくていいよ。すきなEditor使いな!MSがサポートしてやるからさ!」ってことかなと。
さて、何が起こったのか
結局今回のトピックは、
- .NETでのサーバーサイドアプリケーションはほぼほぼどんな環境でも(Win/Mac/Linuxで)動くようになった*1
- Community Editionにより、クライアント開発の敷居ががくっと下がった(小さい企業/フリーの人/After 5プログラマ にとっては)
- さらに、何もしなくてもマルチデバイス開発環境がついてくる。
- OmniSharpなどのサポート強化により、サーバーサイドに関しては、動作のみならず開発にもWindows/Visual Studioが必須でなくなった
あたりが大きいのかと思います。
ココらへんに透けて見えるのは、Windowsというのは、もはやMicrosoft技術で開発する中でもOne of themの選択肢でしかなくなった、ということになります。 今回の発表で、Windowsを使い続ける必要が必ずあるのは、もはやVisual Studioで開発したい開発者でしかありません。その開発者すらも、他の環境に移ることをもはや許容しているように思えます(特にサーバーサイドに関しては)。
じゃあMSがどんな会社になるのかというと、
- Microsoft Azureという強力なクラウド基盤を保持している
- .NET Frameworkというコア技術をドライブしている
- さらにそれが動作するPaaSをAzureとして保持している
- もちろんLinuxなどのの他の環境でも動作する
- Visual Studioという生産性の高いツールを用意している
- 特にクライアントアプリの開発の生産性に定評がある
- Windowsという同社製の特殊なOS上で動作する
- Onlineサービスとしても一部機能が利用できる
- C#/F#/Visual Basic/TypeScript というOSS言語群のメインコントリビュータである
という、どちらかっていうとGoogleとかAmazonみたいな企業になっちまいました(妄想)
ここまでは言い過ぎとしても、もはやMicrosoftはWindowsの企業ではなく、サービス/アプリ基盤を提供しつつ、それを最大限活かせるOS(Windows)/ハードウェア(Surface)を生産している企業、みたいな話になるんではないでしょうか。*2
そうなると、我々開発者としても「どこがオープンでどこがWindowsスペシフィックなのか」を考えながら、サービスを考えて行けなくなったのかなと。
なので、僕の考える現状での立場としては
- ほとんどのサーバーサイドロジックを.NETコア内で動作させるようにしてどんなプラットフォームでも動くようにする。むろんAzure上でも。
- クライアントアプリの開発環境は、生産性を考えてWindowsを採用し、Visual Studio + Xamarinでマルチデバイス対応を進めていく。
みたいな技術選択をしていくのかな、と思っています。いやぁ、考えることが多くなって大変だ。
ちなみに、僕は明日も色々大きな発表があることを期待してます。おもにVisual Studio Online周りで。