亀岡的プログラマ日記

京都のベッドタウン、亀岡よりだらだらとお送りいたします。

MSの今回の発表で何が起こるのか、の私的感想

さて、まさかのMSの大鉈連発に、TL大騒ぎでございます。まさかOSS化まで入ってるとは僕も思ってなかった。MSクラスタですらもざわざわである。 んで、今回の決定が意味することをちょっと考察してみたいなーと。備忘録的にね。

あくまで 私的感想です。鵜呑みにしないように。

何が起こったのか

11/12日(米国現地時間),Microsoft Connect();というイベントの中での発表でございました。

詳しくは、Public Keyさんを参照するのが良いと思います。

英語をですが、Scot HanselmanのBlogのほうが技術的な内容は詳しいです。まぁ、MSの中の人ですしね。

抜粋すると、以下の様なことが起こりました。

.NETコアライブラリのOSS

「サーバーサイド.NET」と呼ばれていますが、WPF/WinFormなどのClient描画に関わる部分を除いた、エンジン部分のOSS化と思ってもらえればOKですね。 画像をはっつけておきましょう。

.NETコア部分のマルチプラットフォーム

そして、.NETのコアライブラリは、Linux/MacOS で動作するようになります。いままでMonoがあったじゃん、という人には、こう言い換えましょう。Microsoftがオフィシャルにサポートするようになります。今後追加される.NETコアは、クロスプラットフォームで動くことを大前提とされるはずです(そうでないものはコアから外れるのでは)

大きなインパクトとしては、要はASP.NETLinux/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みたいな企業になっちまいました(妄想)

ここまでは言い過ぎとしても、もはやMicrosoftWindowsの企業ではなく、サービス/アプリ基盤を提供しつつ、それを最大限活かせるOS(Windows)/ハードウェア(Surface)を生産している企業、みたいな話になるんではないでしょうか。*2

そうなると、我々開発者としても「どこがオープンでどこがWindowsスペシフィックなのか」を考えながら、サービスを考えて行けなくなったのかなと。

なので、僕の考える現状での立場としては

  • ほとんどのサーバーサイドロジックを.NETコア内で動作させるようにしてどんなプラットフォームでも動くようにする。むろんAzure上でも。
    • 開発環境はWindowsでもLinux系でもOKな環境を考えておく。
  • クライアントアプリの開発環境は、生産性を考えてWindowsを採用し、Visual Studio + Xamarinでマルチデバイス対応を進めていく。

みたいな技術選択をしていくのかな、と思っています。いやぁ、考えることが多くなって大変だ。

ちなみに、僕は明日も色々大きな発表があることを期待してます。おもにVisual Studio Online周りで。


追記: もうちょっとビジネス寄りの記事も書いた。

*1:BSDな人は物を投げないで下さい・・・

*2:やっぱGoogleやん、それ。