Microsoft Build 2019 初日のセッション「.NET Overview and Roadmap」をレポートします。
(※) 会場超満員でモニタまでの距離が離れていたこともあり、写真の映りが悪い点はご容赦ください・・・
.NET はあらゆるプラットフォームをサポートしているとのメッセージから始まり、各プラットフォームにおける技術キーワードの説明と新機能、最後に .NET のロードマップが示されましたので紹介します。
ビッグデータ
みんな大好き Apache Spark といえば、使用言語は Scala、Java、Python、R 辺りが選択肢になっていますが、.NET でも使えるようになります。Azure Databricks、Azure HDInsight でプレビュー利用可能です。
気になる性能は、Scala よりはベンチマークスコアが落ちるものの、Python より高く、実用的な性能と思われます。GA が待ち遠しいです。
機械学習
ML.NET 1.0
オープンソース、クラスプラットフォームの ML フレームワークです。
ML.NET Model Builder (プレビュー) を使用することでシンプルなUIでモデルを生成できます。学習用のコードも自動生成することができ、お手軽感に驚きました。
モバイル開発
Xamarin を使うことで OS、Android、macOS、watchOS、tvOS 向けのアプリを .NET で実装でき、クロスプラットフォームで動作する .NET 環境「.NET Standard」をベースにしたアーキテクチャによって実現されています。
(モバイル開発の中の話だったか記憶が曖昧ですが)Visual Studio 2019 が Visual Studio 2017 よりもパフォーマンスが向上したことも紹介されました。インストール速度が 2 倍、ソリューション作成〜ビルドにかかる時間も 2 倍速いとのこと。後者はデモで披露してくれました。
Windows デスクトップ
.NET Core 3.0 preview 5 がアナウンスされました。
- WPF、Windows フォームを使ったデスクトップアプリ開発のサポート
- 自己完結型のデプロイなどフレキシブルなデプロイのサポート
- 自己完結型のデプロイは .NET Core ランタイムや依存関係モジュールも含めて展開されるため、実行環境の .NET Core バージョンに関係なく動作できます。
- 性能の大幅な改善
- 性能改善は別セッションでも強調されていました。
- C# 8.0 サポート
C# 8.0
Ranges (array[begin..end]) やインタフェースのデフォルト実装など、C# 8.0 の新機能へのサポートがざざっと紹介されました。
Web & microservices
ASP.NET Core 3.0 Blazor
- フルスタック Web アプリケーション開発のサポート
- サーバサイドもクライアントサイドも C# + Razor で実装できます。いわゆる Blazor ですね。
- 全てのブラウザで動作可能
- クライアントサイドでも強い型付け
- サーバサイド/クライアントサイド双方でコードをシェアできる
- WebAssembly のプレビューサポート
- WebAssembly はブラウザプラグイン不要でネイティブ実行可能とする技術。トランスパイルすることなくネイティブ実行されるため、性能向上が期待できます。
.NET ロードマップ
.NET 5 が唯一のフレームワークに
現状の .NET を取り巻く環境は、
- .NET Framework
- .NET Core
- Xamarin
と 3 系統ありますが、今後のロードマップで全て .NET 5 に引き継がれます。
将来的には .NET 5 が唯一のフレームワークになるので、.NET Core と .NET Framework の違いなどを意識する必要もなくなります。.NET 5 は .NET Core の次期バージョンに位置付けられています。すでに .NET Core に多くの .NET Framework 機能がサポートされつつありますので、今後は Xamarin も含めて全ての機能を取り込む形で、.NET 5 としてリリースされることになります。
将来サポートされない機能について
Web フォーム、WCF サーバ、Windows ワークフローは .NET Core ではサポートされず、将来的なポーティングも計画されていないとのこと。
それぞれへ推奨される対策についても言及されていました。
- Web フォーム
→ ASP.NET Blazor への移行 (移行ガイドが提供される予定とのこと) - WCFサーバ
→ gRPC への移行(こちらも移行ガイドが提供される予定) - Windows ワークフロー
→ OSS の Core WF への置き換え
.NET のリリーススケジュール
気になる .NET 5 のリリース時期は 2020 年 11 月(予定)とのこと。
.NET Framework は v4.8 が最終リリースとなり、メンテナンスは継続されますが、新機能の追加は行われません。
メジャーバージョンのリリースサイクル | 1年ごと |
Long Term Support (LTS) ポリシー |
偶数メジャーバージョンが LTS (※) .NET Core は 3.1 が LTS |
.NET Core への統合が思った以上に速いペースで進んでいるのに驚きました。しばらく過渡期にはなりますが、将来的にシンプルになりますね。