オンラインイベント「Connect();」で、マイクロソフトが明らかにした.NET 2015構想。本稿では、.NET 2015を構成する主要素について概観していく。
マイクロソフトが先日開催したオンラインイベント「Connect();」では、.NET関連の発表が多数行われた。Visual Studio(以下、VS)の最新バージョン、VS 2015 Preview、VS 2013 Communityなど、注目すべきトピックは多々あるが、ここでは.NETの新バージョン「.NET 2015」にフォーカスを当て、そのPreview版を基に.NET 2015の構成要素を概観していく。
もう1つの大きなトピックであるVS 2015については、山本康彦氏による記事「VS 2015の新機能をプレビュー版で見てみよう」を参照していただきたい。
.NET 2015の話をする前に、これまでの.NETについて簡単に振り返っておこう。そこからは、なぜ.NET 2015が誕生したのかが見えてくるはずだ。
.NETには2つの側面がある。1つはWeb技術を基盤とすることで、異なるアーキテクチャのマシン間での相互運用を実現することだ。もう1つはWindows OSの上に仮想的な実行環境を提供することで、オブジェクト指向的なプログラム開発を、さまざまな言語で行えるようにすることだ。
前者の例を挙げると、.NET構想と同時に提唱されたSOAP/WSDL/UDDIなどの技術を使用したRPCのWebサービス化がある。後者は言うまでもなく、.NET Frameworkのことだ。仮想実行環境であるCLR(共通言語ランタイム:Common Language Runtime)、基本クラスライブラリ(BCL:Base Class Library)、これらの上に構築された各種のライブラリやフレームワークなどで構成されることは説明するまでもないだろう。
ここで重要なのは、マイクロソフトは当初からクロスプラットフォームを念頭に置いていたことだ。Webアプリのプラットフォームとして見たときの.NETはベンダー間の相違を吸収して、相互運用性を実現することを目標としていた。一方、ローカルマシンで動作するアプリの実行環境(=ランタイム)として見た場合も、当初はWindowsだけをターゲットとしていたが、その後はさまざまなデバイス(Windows Mobile、Silverlightなど)をターゲットとして成長していった。Windowsストアアプリ用の.NET Frameworkもこうした流れの延長線上に存在する。
そして、.NET 2015は.NETが誕生当時から描いていたクロスプラットフォーム性やターゲットとなるデバイスをさらに広範なものとすべくして生まれたものである。これはマイクロソフトが掲げる「モバイルファースト、クラウドファースト」という全社戦略と無関係なものではない。「クロスプラットフォーム」「相互運用性」などの用語が意味するところは、2000年代初頭と2010年代で大きく変わり、.NETもそれに合わせて、多様なモバイルデバイス、広く普及したクラウドの世界に対応すべく大規模なアップデートが行われたのである。
以上を踏まえて、.NET 2015がどんなもので構成されているかを見ていこう。
Connect();では、.NET Frameworkやそこに含まれるさまざまな要素を包括する名称として「.NET 2015」が発表された。すでに見たことがある人も多いだろうが、次世代の.NETである.NET 2015の構成図を以下に示す。
図にある通り、.NET Frameworkに加えて.NET Coreが含まれるようになったのが大きな特徴だ。.NET Framework 4.6は.NET Frameworkを継承する「安心と信頼」のフレームワークである。もう一つの.NET Core 5は「新世代」のフレームワークであり、(少なくともVS 2015のリリース時点では)フル機能の.NET Frameworkを軽量化したサブセットとなる。そして、その両者を共通に支える基盤としてランタイム/コンパイラー/NuGetパッケージと書かれた共通部分が存在する。最後の部分についても.NET 2015では大きな進化が見られる。
.NET 2015の最大の注目ポイントはもちろん「.NET Core 5」だ。その特徴をざっくりとまとめると次のようになる。
中でも特徴的なのが、モジュール化、Mac OS XやLinuxをサポートといった部分だ。これらは従来の.NET Frameworkが持っていた制限を打破し、クロスプラットフォーム性を高めるために必要な要素である。そしてこれを実現するために、オープンソースでの開発が行われるとともに、新機能は従来の.NET Framework(.NET 2015リリース後は.NET Framework 4.6)よりも迅速にリリースされるようになる。また、.NET Core 5のランタイム(CoreCLR)とそこで使われる基本クラスライブラリは極めて小サイズなものであり、クラウド上で実行されるアプリが、それぞれのアプリに固有な実行環境やライブラリを配布できるようになっている。
つまり、マルチデバイス/クロスプラットフォーム/クラウドが当たり前のものとなった現在のコンピューティング環境に合わせて軽量化/モジュール化された、新しい世代のフレームワークが「.NET Core 5」なのである。
なお、上の図には.NET Core 5の構成要素として「ASP.NET 5」と「.NET Native」という記載もある。これらについては後述するとして、上記の特徴について何点か掘り下げてみよう。
.NET Core 5はCoreCLRと呼ばれる実行環境と基本クラスライブラリ(BCL)を提供する(実際には、BCLとこれらのランタイムの間に「Runtime Adaption Layer」と呼ばれるレイヤーも存在する)。
CoreCLRはフル機能の.NET Frameworkが提供するCLRの軽量なサブセットであり、そのBCLも同様にサブセットだ。CoreCLRには通常のCLRと同様に、ガベージコレクター、JITコンパイラー(RyuJIT)は含まれるが、アプリケーションドメイン/コードアクセスセキュリティなどの機能は含まれない。また、これらはともにNuGetを介して、アプリごとに必要なものを入手する。
CoreCLR、基本クラスライブラリの上には、これを使用するアプリの種類ごとに異なるフレームワークやクラスライブラリが乗る。
また、後述するモジュール化と関連するが、.NET Core 5アプリでは、必要なコンポーネントはそれぞれが独自にNuGetを介して入手するようになる。どんなコンポーネントが必要になるかはアプリごとに異なり、それら必要最小限なものだけを組み合わせてアプリが活用する形になる。
そして現在、この新しいフレームワークが適用される領域となっているのが上の図の「.NET Core」という部分に含まれているASP.NET 5と.NET Nativeだ(これらは.NET Framework 4.6でも利用可能)。
Copyright© Digital Advantage Corp. All Rights Reserved.