オープンソース化され、MacOS XとLinuxに対応する「.NET Core」とは何か?
マイクロソフトは昨年11月、.NETのオープンソース化と、MacOS XおよびLinux対応のディストリビューションをマイクロソフト自身がリリースすることを発表しました。この発表は同社にとって大胆な戦略として注目されています。
このとき、マイクロソフトは「.NET Framework」ではなく「.NET Core」をオープンソース化すると発表しています。この.NET Coreとは何でしょうか?
その説明は、オープンソース化を発表した11月16日付けのマイクロソフトの.NET Framework blogにポストされたエントリ「.NET Core is Open Source」や、さらに詳しく紹介した12月5日付けのエントリ「Introducing .NET Core」などで読むことができ、また1月16日に都内で行われたイベント「GoAzure」の基調講演でもその内容が触れられました。
マイクロソフトがオープンソース化する「.NET Core」とは何であり、従来の「.NET Framework」と何が違うのか、現時点での情報をまとめてみました。
.NET Core 5とは、.NET Frameworkのサブセットである
まず、現在の.NETの全体像から見ていきましょう。これは.NET Coreが発表されたときに.NET Frameworkブログにポストされた図です。
現在.NETは「.NET 2015」というブランドによって全体が表されています。.NET 2015には大きく3つの構成要素があります。
1つ目は一番下の紫色の四角で、.NET 2015の稼働環境を支える枠組みです。左から、ランタイム、コンパイラ、パッケージマネージャ。ランタイムには、新しいジャストインタイムコンパイラの「RyuJIT」が、コンパイラには「Roslyn」が、そしてパッケージマネージャには「NuGet」が採用されます。この3つはオープンソースとして開発されており、Windows、Linux、MacOS Xのクロスプラットフォーム対応になるとされています。この点は改めて後述します。
2つ目が左側の緑の四角で、Windows対応の「.NET Frmawork 4.6」です。ASP.NET 5、ASP.NET 4.6、WPF、Windows Formsといったフレームワークから構成されています。いわゆる、フルスペックの.NET Frameworkがこれです。
3つ目が右側の緑の四角で、オープンソース化が発表された「.NET Core 5」です。.NET Core 5は.NET Frameworkのサブセットと説明されており、Windows対応の「ASP.NET Core 5」と「.NET Native」。LinuxおよびMacOS X対応の「ASP.NET Core 5」から構成されています。
最近の資料では「ASP.NET Core 5」が単に「ASP.NET 5」と書かれており、またイベントGoAzureで来日し、基調講演を行った米マイクロソフトのScott Hanselman氏もブログで「ASP.NET 5 will work everywhere.」と書いているため、ASP.NET 5とASP.NET Core 5は実質的に同じもののようです。
このASP.NET 5も、すべてオープンソースで開発されています。
ところで、.NET Coreの中にある「.NET Native」とは何でしょうか。これは、アプリケーションをネイティブのマシン語コードにコンパイルする機能です。特にタブレットやスマートフォンといった非力なデバイスでマネージドコードより性能向上に貢献するのが目的です。
.NET 2015の全体像から見ると、マイクロソフトがオープンソース化すると発表した「.NET Core 5」とは.NET Frameworkのサブセットであること、そしてASP.NET 5がWindowsでもLinuxでもMacOS Xでも共通して使える、というところがポイントとなりそうです。
しかも.NET 2015には.NET Coreとは別に、もう1つ重要なオープンソース群があります。ランタイムやコンパイラといった部分です。
C#とASP.NETがLinux、MacOS Xで動くようになる
マイクロソフトは.NET Coreのオープンソース化の発表と同時に、.NETサーバフレームワークのLinuxとMacOS X用オフィシャルディストリビューションを提供することも発表しています。
前述のように、.NET 2015を構成するランタイムのRyuJIT、コンパイラのRoslyn、パッケージマネージャのNuGetの3つもオープンソースとして開発されており、LinuxとMacOS Xにも対応する予定になっています。LinuxとMacOS X用のディストリビューションには.NET Coreと合わせて.NET 2015に含まれるランタイム、コンパイラ、パッケージマネージャが含まれることは間違いないでしょう。
つまり.NETはこれから、WindowsだけでなくLinux、MacOS Xでもライブラリやフレームワークとコンパイラ、そしてランタイムが揃ったマイクロソフト純正のソフトウェアスタックが提供されることになるわけです。
ここに1つ前の記事でも紹介した、MacOS XやLinuxのテキストエディタにVisual Studioが持つIntelliSenseの機能を追加するオープンソースのツール「OmniSharp」が加わることで、マイクロソフトは.NETの開発環境、実行環境、デバッグ全体のクロスプラットフォーム対応を実現しようとしている、という方向性が明らかになってきます。
マイクロソフトはすでに、Linxu上で実行しているASP.NETに対してVisual Studioでリモートデバッグを行う、というデモも披露しています。おそらくVisual Studioを、WindowsだけでなくLinux、MacOS Xのサーバアプリケーションにも対応した最強の開発環境にしようとしているのでしょう。そのために.NETのクロスプラットフォーム対応を推進しているという見方もできます。
1月16日に都内で行われたイベント「GoAzure」の基調講演で、米マイクロソフトのScott Hanselman氏はこう言っています。「.NETはLinux、Mac、Windowsにおいて、ほかの言語と同じレベルで競えるようになった。Ruby、PHP、Java、Pytonといった話題の中に、.NETを選択肢として入れたいのだ」
コピーするだけでデプロイ可能なアプリケーション
.NET 2015にはオープンソース化だけではなく、もう1つ大きな変更がありますので、それにも触れておきましょう。それは、パッケージをコピーするだけでデプロイできるようになる、ということです。
これまでの.NET Frameworkはモノリシックで、基本的にランタイムおよびライブラリやフレームワークを丸ごとOSの上にインストールし、その上でアプリケーションを走らせる、というものでした。
しかし.NET 2015からはアーキテクチャを見直し、アプリケーションごとにランタイムやコンポーネントを選んでパッケージングできるようになります。具体的には、1つのフォルダの中にアプリケーションの実行に必要なファイルがすべて詰め込めるようになり、それをターゲットマシンにコピーするだけでデプロイが完了するようになるのです。
つまり、MacOS XやLinuxにいちいち.NETディストリビューションをインストールしなくても、まっさらなOSの上にアプリケーションをフォルダごとコピーすれば、すぐにアプリケーションが実行可能になるはずなのです。クラウドにおいてアプリケーションの大量デプロイなどが求められる場面で便利になりそうです。
イベント「GoAzure」の基調講演では、Hanselman氏がもともと予定になかったデモを披露しました。それはASP.NET 5の基本アプリをパッケージングし、それをその場で名乗り出てくれた観客のPC(.NET Framework 4.1がインストールされていたとのこと)にUSBメモリ経由でコピー。それだけで無事にASP.NET 5の画面表示に成功しました。
これも.NET Coreの発表とほぼ同時に登場した.NETの新しい機能です。.NET Coreの発表は単にオープンソース戦略にマイクロソフトが大きく踏み込んだだけではなく、.NETがクラウドを見据えてクロスプラットフォーム対応へ変化する、という大きな出来事を象徴するものでもあると言えるのではないでしょうか。
あわせて読みたい
Amazonクラウド、データセンターの運用に50万メガワットアワーの風力発電を利用すると発表
≪前の記事
Sublime、Vim、Emacs、AtomなどにIntelliSense機能を追加する「OmniSharp」、マイクロソフトがデモ