特別企画
Windowsにこだわらない、サティア・ナデラのMicrosoft
(2014/12/4 06:00)
11月12日に開催されたMicrosoftの開発者向けバーチャルイベントのConnect();において、.NET Frameworkやサーバーサイドの.NET Core Runtimeなどのオープンソース化が発表された。このオープンソース化と同時にMicrosoftでは、.NET Frameworkのマルチプラットフォーム化を進めるため、LinuxとMac OS X用の.NET Frameworkを発表した。
今年の4月に開催されたMicrosoftのイベント「Build 2014」でも、.NET Frameworkのオープンソース化が発表されていたが、限定的なモノだった。今回の発表では、.NET Frameworkをクライアント/サーバーサイドともにオープン化して、マルチプラットフォーム化を進めていくことになった。
そこで、今回は、Connect();の発表から、今後サティア・ナデラ氏がCEOとなったMicrosoftがどのように変化していくのかを分析する。
.NETはマルチプラットフォーム化される
Connect();で発表された.NET Frameworkのオープンソース化は、4月のBuildで発表された.NET Frameworkのオープンオープンソース化を進める「.NET Foundation」を介して、GitHubでソースコードが公開されている。
.NET Core Runtimeと.NET Core Frameworkのオープンソース化により、Buildでオープンソース化が発表されたASP.NETやC#などのコンポーネントを合わせれば、.NET Frameworkのほぼ90%に近いコンポーネントがオープンソース化されたことになる。残りの10%は、WPF/WinFormなどのクライアントの画面表示にかかわる部分だ(WPFやWinFormはWindows OSにディペンドしている)。
面白いのは、古いバージョンだけでなく、2015年にリリースが予定されている次世代の.NET Framework環境や、C#などのプログラミング言語が利用する.NET Compiler Platform(Roslyn)など、最新バージョンに関するソースコードもオープンソース化されている点だろう。ここまで広く対応していることを考えれば、Microsoftが.NET Frameworkをマルチプラットフォーム化していくために、本気で取り組んでいるんだ、ということがわかる。
また、これらのオープンソース化に従って、Microsoft自体が、LinuxやMac OS Xに.NET Server Frameworkを移植・公開している。これにより、Windows Serverなどで動作している.NET Frameworkベースのアプリケーションを、LinuxやMac OS X上のプラットフォームで動かすことができるようになった。
Linux版の.NET Frameworkに関しては、オープンソースのMono Projectがあった。今回は、Mono Projectを進めていたXamarin社とMicrosoftが協力して、Linuxへの移植を行ったようだ。Microsoftが関与することで、オリジナルのWindows版.NET Frameworkが完全にLinux上に移植されている。
Linux上で.NET Frameworkがサポートされることは、多くのでデベロッパーにとっては大きなメリットとなるだろう。現在、Windows Server上でしか動作しなかったアプリケーションが、簡単にLinux上で動作するようになる。このことは、アプリケーションのマルチプラットフォーム化を目指すサードパーティにとっては大きなメリットになるだろう。またクラウドを利用する上では、多くのLinuxベースの仮想マシン(VM)上でアプリケーションを動かすことができるようになる。
Linuxに.NET Frameworkを移植することは、Windows OSビジネス的には不利になってしまうかもしれない。しかし、Microsoft自体が、.NET FrameworkをLinuxやMac OS Xに移植して、マルチプラットフォーム化を進めているのは、Microsoftのビジネスが大きく変わり始めているからだ。
確かにMicrosoftのビジネスの中では、OSの販売やOfficeの販売などによる利益は、大きなウエイトを占めている。しかし今後10年で考えれば、ソフトウェアのパッケージ販売ではなく、Microsoft Azureのようなクラウドプラットフォームや、Office 365のようなクラウドベースのサービスで利益を得るようなビジネス形態に変化していくのだろう。
こういった変化に対応し、さらにMicrosoft独自のテクノロジーを生かしていくためには、.NET Frameworkをスタンダードにして、マルチプラットフォームで動作できるようにしていく必要があるのだと思われる。
実際、Connect();のセッションでは、Microsoft Azure上のLinux VMに、Dockerエンジンによりコンテナ化された.NETコアランタイムとASP.NETで開発したアプリケーションを載せ、動かすデモを行っている。
ただ、Linuxのサーバーサイドのフレームワークに関しては、OracleのJavaがスタンダードとなっている。これを.NET Frameworkでひっくり返すのは、並大抵の努力では実現できない。このあたりは、今後の成り行きを注視していく必要がある。