「One .NET Vision」をコンセプトに、開発フレームワークが急速に進化
今回の「GrapeCity ECHO 2021」の開幕を告げる最初の講演となったのは、マイクロソフト コーポレーションの井上章氏の「.NETの今と未来〜. NET 6最新アップデート」と題するセッションである。
現在の.NETでは、WindowsのデスクトップアプリケーションからWebアプリケーション、クラウド上のサービス、モバイルアプリケーション、ゲームアプリケーション、さらにはIoTやAI領域のサービスに至るまで、さまざまなタイプのソフトウェアの開発が可能だ。
具体的には、もともと.NET Frameworkでは、Windows FormsやWPF、ASP.NETなどのアプリケーションが開発でき、その後クロスプラットフォーム対応を謳う開発フレームワークとして登場してきた.NET Coreでは、ASP.NETに加えて、LinuxやmacOSといった環境もサポートする.NET Core 3.0以降には、Windows FormsやWPFなどもそこに移植されている。さらには、Xamarinと呼ばれるツールセットも加わり、iOSやAndroid向けのネイティブアプリケーションを開発していける環境が整うに至っている。
「ただ、これら.NET Framework、.NET Core、Xamarinでは、共通してC#によるアプリケーション開発が行えるものの、残念ながらベースクラスライブラリ群がそれぞれに異なっており、そこで実装されているAPIにも相違がありました。例えば.NET Framework上においてC#で記述したコードを、そのまま.NET CoreやXamarinで使うことができなかったわけです」と井上氏は語る。
これに対しマイクロソフトが打ち出してきたのが「One .NET Vision」というコンセプトで、これら3つのフレームワークを統合して、単一のSDKおよびベースクラスライブラリによる提供が目指された。そして、このコンセプトは.NET 5において具現化され、2021年11月8日には、その最新版となる「.NET 6」が正式にリリースされている。
「.NET 6の特徴としては、パフォーマンスが大幅に向上していることに加えて、C# 10やF# 6などの最新の言語、あるいはARM64アーキテクチャで実装されているApple Silicon(ARM64)のサポートなどがあげられます。さらに、サポート期間3年のLTS(Long Time Support)でのリリースとなっており、本番環境で安心してお使いいただける点も重要なポイントです」と井上氏は紹介する。
その一方で、古いアーキテクチャに基づく技術といえる、ASP.NET Web FormsやWCF(Windows Communication Foundation)やWF(Windows Workflow Foundation)などは、.NET 6においてはサポートされていない。
なおマイクロソフトでは、この.NET 6のリリースと同時期にVisual Studioの最新版となる「Visual Studio 2022」も登場している。そこでは、従来の32ビットだった実行ファイル、devenv.exeが64ビット化され、ツール自体のパフォーマンスも大きく向上している。さらに「ホットリロード」(Hot Reload)の機能が強化されていることも注目される。これは、アプリケーションを実行中に行ったコード変更が、直ちに実行中のアプリケーションに反映されるというもので、コード開発やデバッグの効率化に寄与する。
話を.NET 6に戻すと、各フレームワークについても、いろいろなかたちで機能強化がなされている。例えば、「ASP.NET Core Blazor」。それ自体は、.NET Core 3.1で登場した新しいフレームワークだが、その利用によりWebのフロントエンドUIの開発をC#で行えるようになる。具体的には、Blazorでは最近のモダンなWebブラウザが標準搭載するWebAssemblyの技術を採用しており、C#のコードをWebブラウザのWebAssemblyで実行させるための仕組みを提供しているわけだ。
「.NET 6では、ASP.NET Web Formsがサポート外となっていますが、コンセプト的にも近いBlazorを利用することで、これまでと同様のスタイルでWebアプリケーションのフロント開発を行うことが可能です」と井上氏は言う。
またBlazorには、Blazor WebAssemblyとは別に、Blazor Serverという実行形態が用意されている。これについて、Blazor WebAssemblyではC#のプログラムがDLLとしてブラウザ側にロードされるため、サイズによってはペイロードなどが問題になるケースも考えられる。
ブラウザ側で実行される分、パフォーマンスの面で不利になることもあるわけだ。これに対しBlazor Serverでは、プログラムが基本的にはサーバーサイドで実行され、その実行結果が、Web SocketをベースとしたSignalRと呼ばれる同期通信のフレームワークを介してブラウザ側に送信される形態となる。当然、パフォーマンス的には有利だといえる。
「ただし、SignalRの通信では永続的なHTTPのコネクションが必要で、Blazor WebAssemblyのようにオフライン実行はできません。こういった特徴を踏まえつつ、いずれの実行形態を選択するかを判断することになります」と井上氏は説明する。
そのほか.NET 6では、新たに「.NET Multi-platform App UI」(.NET MAUI)というフレームワークが利用可能となる。もっともこのMAUI自体は、.NET 6と同時にリリースはされておらず、正式には2022年春の登場予定となっている。.NET MAUIを使うことで、iOS、Android、macOS、Windowsのアプリケーションを、単一のプロジェクト、単一のコードベースで開発していくことが可能。「.NET MAUIは、.NET Core 3.1で実装されていたXamarin.Formsの進化型として.NET 6の中に統合されており、その利用によりマルチデバイスをターゲットとしたネイティブなアプリケーションをC#で作成することができます」と井上氏は語る。
一方、クラウド側のサービス開発という観点について、.NET 6では新たにMinimal APIと呼ばれる実装方法により、よりシンプルにWeb APIを記述できるようになった。具体的には、名前空間を書いてクラス定義を行うという従来のような方法ではなく、1つのファイルの中にさまざまなWebメソッド、APIを効率的に書いていくことができるようになっている。
以上のように、.NET 6は開発者にさまざまな新たな価値を提供するものとなっているわけだが、その一方で.NET Frameworkについては、現在の最新版である4.8が、最後のメジャーバージョンとなる旨、マイクロソフトからアナウンスされている。したがって、マイナーバージョンアップや比較的軽微なアップデートは継続されるものの、大幅な機能追加が今後行われることはない。
「とはいえ、既存の.NET Frameworkアプリケーションを、すぐに.NET Coreや.NET 5、.NET 6に移行すべきかというと、決してそういうわけではありません。.NET Frameworkのサポートライフサイクルのポリシーにはこれまで通り変更はなく、ターゲット環境であるWindows OS側のサポートが続く限り、.NET Frameworkのサポートも継続されるかたちとなります」と井上氏は強調する。
もちろん、新規開発においては、やはり.NET 6の採用が望ましいものの、すでに安定稼働している.NET Frameworkで開発した既存資産に関しては、できる限り4.7、4.8などの新しい環境に移行しておくことで、比較的長期のサポートが期待できるわけだ。ちなみに、仮に.NET Frameworkの資産を.NET 6にアップグレードしたいという場合には、「.NET Upgrade Assistant」と呼ばれる移行支援ツールなども用意されている。
ともあれ、完全に統一化された開発フレームワークとして進化を続けていくことになる.NETの動向には、今後も要注目である。