.NET Core 1.1 をリリース

本記事は、マイクロソフト本社の .NET Blog の記事を抄訳したものです。【元記事】 Announcing .NET Core 1.1 2016/11/16

 

このたび、.Net Core の最初の「Current」リリースとなる .NET Core 1.1 RTM (英語) がリリースされました。これにより、Visual Studio 2015、Visual Studio 2017 RC、Visual Studio Code、Visual Studio for the Mac で .NET Core 1.1 アプリを作成できるようになります。

今回の 1.1 リリースでは下記の点が強化されています。

  • .NET Core: ディストリビューションの追加とパフォーマンスの強化
  • ASP.NET Core (英語): Kestrel の強化、Azure のサポート追加、生産性の向上
  • EF Core (英語): Azure および SQL 2016 のサポート

最新ニュース: ASP.NET Core 1.1 と Kestrel の組み合わせが、TechEmpower のプレーン テキスト形式ベンチマーク (英語) において主要なフルスタック Web フレームワークの中で最高速度を記録しました。

最新ニュース : Google Cloud (英語) が新たに .NET Foundation Technical Steering Group に加わります。Google の参加を歓迎します!

.NET Core の変更内容の詳細は、.NET Core 1.1 のリリース ノート (英語) にすべて記載されていますのでご確認ください。3 週間前にリリースされた .NET Core 1.1 Preview 1 (英語) からそれほど大きな変更はありません。

インストール方法

新しいリリースは .NET Core ダウンロード ページ (英語) からインストールできます。今回の .NET Core は「Current」リリースです。[Current] ボタンをクリックして、表示されるリンクをご利用ください。

ディストリビューション

新たに下記のディストリビューションがサポートされました。

  • Linux Mint 18
  • openSUSE 42.1
  • macOS 10.12 (.NET Core 1.0 でも新たにサポート)
  • Windows Server 2016 (.NET Core 1.0 でも新たにサポート)

サポート対象のディストリビューションは .NET Core 1.1 のリリース ノート (英語) にすべて記載されています。

ドキュメント

今回のリリースに合わせて .NET Core のドキュメント ページが更新されています。ドキュメントは今後も継続的に更新されます。また、利用しやすく充実した内容となるように、ページのデザインやコンテンツも改善しています。

ASP.NET Core (英語)Entity Framework (英語)C# (英語)VB (英語) のドキュメントは、今回のリリースから docs.microsoft.com に移動されました。また、F# のドキュメント (英語) は数か月前に追加されています。

docs.microsoft.com で公開されているドキュメントはオープン ソースです。より充実した内容にするために、GitHub での Issue の作成や活動へのご協力をお願いします。まずは dotnet/docs (英語)aspnet/docs (英語) から参加されることをお勧めします。

パフォーマンス

先日、TechEmpower (英語) のプレーン テキスト形式ベンチマークで、ASP.NET Core 1.1 と Kestrel の組み合わせが主要なフルスタック Web フレームワークの中で最高速度を記録しました。このすばらしい結果は、大規模なエンジニアリングの取り組みの成果です。

Windows 版 .NET Core 1.1 では、ガイド付き最適化のプロファイル (PGO) と呼ばれるパフォーマンス最適化手法を CoreCLR ランタイムで採用しています。この技術は .NET Framework で長年使用されていましたが、.NET Core ではまだ採用されていませんでした。以前リリースされた .NET Core 1.1 Preview 1 では実装されていません。

PGO は、マイクロソフトのテスト環境での計測に使用するアプリの記録に基づいて、C++ コンパイラで生成されたバイナリを最適化します。マイクロソフトではこのプロセスを「トレーニング」と呼び、冬の夜明け前の午前 6 時にランニングするくらいワクワクする瞬間です。PGO は、バイナリでどのコードパスがどのような順序で使用されたかを記録します。今回のリリースに向けたトレーニングには、簡単な “Hello World” アプリが使用されました。

マイクロソフトのテスト環境では、PGO で最適化された CoreCLR を使用して実行される ASP.NET の MusicStore アプリ (英語) で 15% のパフォーマンス向上が見られました。他の Web アプリケーションでもこれと同様の効果が得られると考えています。今後はトレーニングに使用するアプリの種類を増やし、さらに高い効果が得られるように改良を進めてまいります。

Linux および macOS では、CoreCLR のコンパイルに Clang と LLVM が使用されます。次回リリースでは、Clang バージョンの PGO (英語) を使用することを計画しています。Clang PGO の収集はまだ初期の段階ですが、こちらでも同様の効果が得られると見ています。

API

.NET Core 1.1. では新たに 1,380 個の API (英語) が追加されました。新しい API の多くは、移植可能な PDB (英語) の読み込みなど、この製品自身をサポートするためのものです。.NET Core 1.1 では NETStandard.Library 1.6.0 (英語) がサポートされています。

NETStandard.Library 2.0 (英語) は 2017 年にリリースされるバージョンでサポートされる予定で、.NET Core 1.1 ではサポートされません。

.NET Core 1.1 を使用する

まずは、.NET Core 1.1 をインストールします。.NET Core 1.1 は、インストーラー (英語) やパッケージ マネージャーを使用して OS にグローバルにインストールすることも、zip 形式でダウンロード (英語) して限定的に (容易に削除できるように) インストールすることもできます。

安全な共存インストール

.NET Core 1.1 は、.NET Core 1.0 が既にインストールされているマシンに安全かつグローバルにインストールできます。

dotnet new コマンドを実行すると新しいテンプレートが作成されます。このテンプレートはマシン内の最新のランタイムを参照しますが、それが望ましくない場合もあります。その場合は、project.json のバージョン番号を手動で古いバージョン番号に変更すると回避できます。皆様からのフィードバックにお応えして、この挙動は Visual Studio 2017 の最終バージョンと同時にリリースされる新バージョンのツールで変更される予定です。dotnet new コマンドではなく Visual Studio を使用してプロジェクトを新規作成すれば、この問題は発生しません。

使用の開始

.NET Core はコマンド ライン ツールから使用できます。コマンド プロンプトかターミナルで下記のコマンドを実行します。

 dotnet new
dotnet restore
dotnet run

.NET Core 1.1 をお試しいただく場合は、Docker で .NET Core を使用している dotnet-bot サンプル (英語) もご利用になれます (Docker を必ず使用する必要はありません)。

既存の .NET Core 1.0 プロジェクトのアップグレード

既存の .NET Core 1.0 プロジェクトは .NET Core 1.1 にアップグレードできます。以下に、新しくなった dotnet new コマンドで生成される新しい project.json ファイルの内容を紹介しますので、新しいバージョン番号をご確認のうえ、既存の project.json ファイルにコピー アンド ペーストしてください。プロジェクトを新しいバージョンの .NET Core に自動的にアップグレードするツールはありません。

.NET Core 1.1 の既定の project.json ファイルは下記のとおりです。

この project.json ファイルは .NET Core 1.0 のものとほぼ同じですが、ターゲット フレームワークが netcoreapp1.1 に、メタパッケージのバージョンが 1.1.0 に変わっています。

.NET Core 1.1 に一時的に、または恒久的に移行する場合、下記のように project.json ファイルを変更します。

  • ターゲット フレームワークを netcoreapp1.0 から netcoreapp1.1 に変更する。
  • Microsoft.NETCore.App パッケージのバージョンを 1.0.x (1.0.01.0.1 など) から 1.1.0 に変更する。

.NET Standard Library プロジェクトをアップグレードする

.NET Standard Library プロジェクトを変更する必要はありません。

マイクロソフトは NETStandard.Library 1.6.1 (英語) メタパッケージを公開しましたが、ライブラリを生成する際にそれを参照しても効果はありません。最新のパッケージは、新しい Microsoft.NETCore.App 1.1.0 (英語) メタパッケージの依存関係として提供されています。

.NET Core 1.1 Docker イメージの使用

.NET Core 1.1 は Docker で使用できます。最新のイメージは microsoft/dotnet (英語) で公開されています。

latest タグは .NET Core 1.1 SDK を指すように変更されています。これは .Net Core 1.1 Preview 1 リリース時の記事でご説明していた当初の意向とは異なっています。Current リリースと LTS リリースが存在する他のプラットフォームについて調べたところ、latest タグで最新バージョンが指定されることが確認されたためです。どうぞご了承ください。

.NET Core 1.1 では 2 つのランタイム タグが新たに追加されました。

  • Linux: 1.1.0-runtime
  • Windows: 1.1.0-runtime-nanoserver

.NET Core 1.1 では 2 つの SDK タグが新たに追加されました。

  • project.json を使用する Preview 2 ベースの SDK: 1.1.0-sdk-projectjson
  • CSProj を使用する Preview 3 ベースの SDK: 1.1.0-sdk-msbuild

.NET Core 1.1 を試用する場合は、.NET Core Docker サンプル リポジトリ (英語) で公開されている [dotnetapp-current samples] の [dotnetapp-current] を使用すると便利です。他のサンプルも、project.json と Dockerfile の両ファイルのバージョン文字列を前述の説明のように適切なものに変更すると、.NET Core 1.1 イメージを使用するように簡単に変更できます。

Current リリース

以前に .NET Core 1.1 のブログ記事でご説明したように、マイクロソフトでは業界の慣習にならって「Long Term Support (LTS、英語)」と「Current」の 2 種類のリリースを提供しています。.NET Core 1.1 は Current リリースとして最初のリリースです。特定の Current リリースに対しては、セキュリティ更新プログラムを除いて更新プログラムはほとんどリリースされません。

大多数の開発者の方には LTS リリースを導入することをお勧めします。Visual Studio では LTS リリースが既定のエクスペリエンスとなります。ただし、一部の開発者の方には Current をお使いいただき、フィードバックをご提供いただけますと幸いです。数値化することは簡単ではありませんが、.NET Core 開発者全体での採用率が LTS リリース 80%、Current リリース 20% 程度になることが適切であろうと考えています。

まとめ

ぜひ新しい .NET Core リリースをお試しになり、フィードバックをお寄せください。.NET Core 1.1 (英語)、ASP.NET Core、EF Core では、皆様のアプリの品質とパフォーマンスが向上されるように重要な機能強化を多数行っています。今回のリリースは最初の Current リリースとして、数年間のサポートがある LTS リリースを待たずに .NET Core を更新したい開発者に向けて各種の機能をいち早くお届けするものです。

今回の主な変更点についてもう一度お伝えします。

  • パフォーマンスが向上し、TechEmpower のベンチマーク (英語) で 1 位を獲得
  • OS ディストリビューションを 4 つ追加
  • 新機能を数十個追加、不具合を数百か所修正
  • ドキュメントを更新

.NET Core 1.0 と .NET Core 1.1 Preview 1 を使用してフィードバックをお寄せくださった皆様に改めて感謝申し上げます。プロジェクトにご協力いただきありがとうございました。今回の最新リリースについても皆様のご意見をお待ちしております。

Visual Studio 2015、Visual Studio 2017 RC、Visual Studio Code、Visual Studio for the Mac でぜひ .NET Core 1.1 アプリを作成してみてください。