.NET Coreは、Windows、Mac OS X、Linux上で動作する軽量/モジュール性などの特徴を持ったオープンソースなアプリ開発プラットフォームだ。
.NET Coreは、Windows、Mac OS X(以下、OS X)、Linux上で動作するオープンソースなアプリ開発プラットフォームだ。従来の.NET Frameworkを基に軽量化、クロスプラットフォーム対応、モジュール構造化などを施した、新たな.NET実装といえる。
.NET Coreの特徴としては以下のようなことが挙げられる。
.NET Coreは従来の.NET Frameworkのサブセットに相当する。.NET Frameworkをオープンソース化/クロスプラットフォーム化するために、Windows依存の部分を排除しながら、モジュール化を推し進め、.NET Frameworkの「コア」となる機能を再実装したものだといえる。この他にも軽量であること、アプリに同梱して配布され、サイドバイサイドでのインストールが可能といった特徴がある。
.NET Coreは以下のもので構成される。
ASP.NET Coreなどのフレームワークは、これらの上に位置することになる。
.NET実装としては.NET FrameworkとMono、そして.NET Coreが存在する。それぞれの実装の上にはWindows Forms/Xamarin.iOS/UWPなど、実装固有のライブラリ/フレームワークが位置する。これらの関係を図にすると以下のようになる。
上の図の「ベースライブラリ」の部分は別々のものとなっているが、将来的には.NET Standard Libraryによる基本ライブラリの共通化が進められることで、.NET実装間で共通する部分についての互換性が提供される(今でも互換性は十分に高いと思われる)。
なお、前述の通り、.NET Standard Libraryは全ての.NET実装が実装すべきAPIを統一的に定めたもので、「次世代のPCL(Portable Class Library)」と考えることもできる。例えば、.NET Core 1.0と.NET Framework 4.6.3は.NET Standard Library 1.6をサポートしている。そして、これをターゲットとしたPCLを作成すれば、それは.NET Core 1.0と.NET Framework 4.6.3で互換性があるPCLになる。
現在のところ、.NET Coreを使用して開発可能なアプリの種類としては以下のものがある。
.NET Coreの最大の特徴の1つであるクロスプラットフォーム性を考慮すると、現時点での.NET CoreはWindows/OS X/LinuxでC#を使ってWebアプリを開発するためのプラットフォームであるといえる。なお、ASP.NET Coreアプリの開発は従来の.NET Frameworkを使っても行えることには注意しておこう。加えて.NET Core上で動作するWindows固有のフレームワーク/プラットフォームとしてUWPがある。
.NET Coreではプロジェクトの新規作成、既存プロジェクトの復元、プロジェクトのビルド、実行、パッケージ化などを行うコマンドラインツールとしてdotnetコマンドが提供されている。例えば、新規にプロジェクトを開始してからアプリを実行するまでには以下のコマンドを実行する(これによりコンソールアプリが新規に作成される)。これはOS X上で実行した例だ(強調表示しているのが入力したコマンド)。
$ dotnet new
Created new C# project in /Users/<user_name>/work/devbasics/netcore.
$ dotnet restore
log : Restoring packages for /Users/<user_name>/work/devbasics/netcore/project.json...
log : Writing lock file to disk. Path: /Users/<user_name>/work/devbasics/netcore/project.lock.json
log : /Users/<user_name>/work/devbasics/netcore/project.json
log : Restore completed in 2804ms.
$ dotnet build
Project netcore (.NETCoreApp,Version=v1.0) will be compiled because expected outputs are missing
Compiling netcore for .NETCoreApp,Version=v1.0
Compilation succeeded.
0 Warning(s)
0 Error(s)
Time elapsed 00:00:02.7456019
$ dotnet run
Project netcore (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation.
Hello World!
dotnetコマンドに対して、実際に行う処理をコマンドとして渡すと、それに応じてプロジェクトの新規作成などが行われる。これらのコマンドについて簡単に紹介しておこう。
dotnet newコマンドを使う以外にも、npmを介して配布されているYeomanと.NET Core用のコードジェネレータであるgenerator-aspnetなどを組み合わせても、ソースコードのスキャフォールディングが可能だ。generator-aspnetではより細かなプロジェクト構成の指定が可能だ。
.NET Coreは、Windows/OS X/Linux上で動作するオープンソースなアプリ開発プラットフォームだ。現状ではASP.NET Coreがその主要なターゲットとなるが、これからの進化と広まりに期待しよう。
Copyright© Digital Advantage Corp. All Rights Reserved.