.NET 5 がリリース！ 主に Blazor の変更点についてまとめました

こんにちは！

とうとう [「.NET 5」](https://docs.microsoft.com/ja-jp/dotnet/core/dotnet-five)正式版がリリースされましたね。

本記事では、[「.NET 5」](https://docs.microsoft.com/ja-jp/dotnet/core/dotnet-five) の概要と[ Blazor](https://docs.microsoft.com/ja-jp/aspnet/core/blazor/?view=aspnetcore-5.0) についての変更点をより詳細にお届けしたいと思います。


## .NET 5 概要

### .NET 5 が目指したもの

#### NET の統合

.NET 5 が目指したものの大きな目標として、.NET Framework および .NET Core の統合です。

統合により、.NET 開発者は、動作するプラットフォーム (Windows や Linux, モバイル) に関わらず、シンプルな選択肢として「.NET 」を選ぶことができる世界になります。

###  Xamarin との統合は .NET 6 に見送りに

残念ながら Xamarin との統合については、 .NET6 に見送りになりました。

### .NET Framework 4.x から 5.0 による移行で推奨される置き換えテクノロジー

.NET 5 以降のフレームワークでは、一部移植することができず、代替手段を採用する必要があるテクノロジーがあります。

> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/48623/cf1a338a-7be8-3ebe-69c6-17aeb89da2cb.png)
> 下記ページより引用
> [.NET 5.0 doesn't replace .NET Framework](https://docs.microsoft.com/ja-jp/dotnet/core/dotnet-five#net-50-doesnt-replace-net-framework)


### .NET のリリーススケジュール

毎年 バージョンアップが実施されます。

また、隔年で LTS (Long Time Support) のバージョンがリリースされ、LTS は最初のリリースから3年間サポートされます。

今年発表された .NET 5.0 は残念ながら LTS の対象外です。 

* .NET 5.0 2020年 11月
* .NET 6.0 2021年 11月 - LTS
* .NET 7.0 2022年 11月
* .NET 8.0 2023年 11月 - LTS
* .NET 9.0 2024年 11月

### .NET 5.0 の利用方法

Visual Studio 2019 16.8 以降をインストールすることで .NET 5.0 で開発が出来るようになります。

## Blazor についての変更点

### アセンブリの遅延読込

アセンブリの遅延読込が可能になりました。

Blazor Web Assembly アプリケーションの初回起動を早くすることができます。

例えば、ログイン画面は最小限のアセンブリ読み込みに抑えて、ログイン後に必要なアセンブリを読み込む。といったシナリオに対応できるようになりました。

[ASP.NET Core でのアセンブリの遅延読み込みBlazor WebAssembly](https://docs.microsoft.com/ja-jp/aspnet/core/blazor/webassembly-lazy-load-assemblies?view=aspnetcore-5.0)


### CSS の分離 (Isolation)

コンポーネント毎にカプセル化された CSS が利用できるようになりました。

これにより、他コンポーネントとのSSとの競合(クラス名の重複等)などを避けることができ、

よりシンプルな CSS 設計が出来るようになりました。


[ASP.NET Core Blazor の CSS の分離](https://docs.microsoft.com/ja-jp/aspnet/core/blazor/components/css-isolation)


### フォーカス処理のサポート

各コンポーネント要素から、C# だけでフォーカス設定ができるようなりました。

.NET Core 3.1 までは、自前で C# -> JavaScript を呼び出す必要がありましたが、標準機能だけでフォーカス設定ができるようになりました。


[要素にフォーカスを合わせる](https://docs.microsoft.com/ja-jp/aspnet/core/blazor/components/event-handling?view=aspnetcore-5.0#focus-an-element)



### サポートブラウザの変更 (レガシーブラウザが除外)


Blazor Server は、 Microsoft Internet Explorer 11 をサポートしていましたが .NET 5 以降はサポート対象外となりました。

また、Microsoft Edge レガシ (≠Chromium) もサポート対象外となっています。

[Blazor: ブラウザー サポートの更新](https://docs.microsoft.com/ja-jp/dotnet/core/compatibility/3.1-5.0#blazor-updated-browser-support)


### 各種コントロールの追加

入力コンポーネントが充実しました。

これまでは、標準のHTMLコントロールを配置して各プロパティにバインドするのが開発の主流でしたが、
.NET 5 以降は、それぞれ専用のコンポーネントが実装されましたので、コンポーネントの選択の幅が広がりました。

特にファイルアップロードの機能の標準サポートが無かったのですが、.NET 5 以降は InputFile がサポートされましたので、画像等の各種アップロードについて取り扱いが簡単になりました。

#### InputCheckbox

[InputCheckbox](https://docs.microsoft.com/ja-jp/dotnet/api/microsoft.aspnetcore.components.forms.inputcheckbox?view=aspnetcore-5.0)

####  InputDate

[InputDate](https://docs.microsoft.com/ja-jp/dotnet/api/microsoft.aspnetcore.components.forms.inputdate-1?view=aspnetcore-5.0)

#### InputFile

[InputFile](https://docs.microsoft.com/ja-jp/aspnet/core/blazor/file-uploads?view=aspnetcore-5.0)

#### InputNumber

[InputNumber](https://docs.microsoft.com/ja-jp/dotnet/api/microsoft.aspnetcore.components.forms.inputnumber-1?view=aspnetcore-5.0)

#### InputRadio /  InputRadioGroup

[InputRadio/InputRadioGroup](https://docs.microsoft.com/ja-jp/aspnet/core/blazor/forms-validation?view=aspnetcore-5.0#radio-buttons)


#### InputSelect


[InputSelect](https://docs.microsoft.com/ja-jp/dotnet/api/microsoft.aspnetcore.components.forms.inputselect-1)

#### InputText

[InputText](https://docs.microsoft.com/ja-jp/dotnet/api/microsoft.aspnetcore.components.forms.inputtext?view=aspnetcore-5.0)


#### InputTextArea

[InputTextArea](https://docs.microsoft.com/ja-jp/dotnet/api/microsoft.aspnetcore.components.forms.inputtextarea?view=aspnetcore-5.0)



## 開発全般に関するご相談はお任せください！

インフラジスティックス・ジャパンでは、各プラットフォームの特別技術トレーニングの提供や、開発全般のご支援を行っています。

「古い技術やサポート終了のプラットフォームから脱却する必要があるが、その移行先のプラットフォームやフレームワークの検討が進まない、知見がない」

「新しい開発テクノロジーを採用したいが、自社内にエキスパートがいない。日本語リソースも少ないし、開発を進められるか不安」

「自社のメンバーで開発を進めたいが、これまで開発フェーズを外部ベンダーに頼ってきたため、ツールや技術に対する理解が乏しい」

「UIを刷新したい。UIデザインやUI/UXに関する検討の進め方が分からない。外部のデザイン会社に頼むと、開発が難しくなるのではないか、危惧している」

といったご相談を承っています。

お問合せは[こちら](https://jp.infragistics.com/about-us/contact-us)からお気軽にご相談ください。