SlideShare a Scribd company logo
C# Tokyo イベント
自己紹介: @tanaka_733
◦ 「Observability(可観測性)プラットフォーム」がお仕事
◦ Go, Java, JavaScript, Ruby, PHP, Rustに加えてC#やってます
◦ クラウドもオンプレもWindowsもLinuxもコンテナもサーバーレスもやってます
Microsoft MVP for Azure & Development Technologies
◦ Q#もやっています
今日のセッションについて
.NET 5関連の新機能を30分でざっくりと知ったつもりになる
細かいところは立ち入らない (C# 9の新機能とか)
ASP.NET Core, EF Coreも立ち入らない
.NET 5 ダウンロード
◦ インストーラー(OSごとのインストーラーおよびインストールスクリ
プト)
◦ https://dotnet.microsoft.com/download/dotnet/5.0
◦ コンテナイメージ
◦ https://hub.docker.com/_/microsoft-dotnet
◦ リリースノート
◦ https://github.com/dotnet/core/blob/master/release-notes/5.0/5.0.0/5.0.0.md
◦ 既知の問題
◦ https://github.com/dotnet/core/blob/master/release-notes/5.0/5.0-known-issues.md
https://github.com/dotnet/designs/blob/main/accepted/2020/net5/pic01.png
なにがアップデートされた?
.NET 5
ASP.NET Core 5
Entity Framework Core 5
C# 9, F# 5
Visual Studio, Visual Studio for Mac, VS Codeなどのツール
.NET 5 新機能一覧 (1)
◦ C# 9とF# 5へアップデート
◦ コンパイル時にコード生成を可能にするC# Source Generatorの導入
◦ IEEE 754のbinary16 に対応する数値型としてHalf 構造体の導入
◦ null許容参照型のアノテーション導入の完了
◦ Target Framework (TFM)が大きく2つに
◦ 特定のOS(主にWindows)のみで動作するAPIの使用を検出し修正可能に
◦ WebAssembly環境を考慮
◦ さまざまなパフォーマンス改善
◦ 文字列処理・正規表現やネットワーク関連などの改善 GitHubのissue
◦ 95%パーセンタイル以上(P95+)でも予測可能で一貫したパフォーマンスが得られるようにする改善
Improving P95+ latency · Issue #37534 · dotnet/runtime · GitHub
◦ GC、JITなどの改善
◦ ARM64対応
.NET 5 新機能一覧 (2)
◦ 配布オプションの追加
◦ ClickOnceでのクライアントアプリの展開
◦ 単一の実行ファイルへの対応
◦ コンテナイメージサイズの縮小とcgroup v2への対応
◦ Server Coreイメージの追加
◦ 自己完結型アプリケーションの配布サイズを小さくする機能
◦ JsonSerializer の改善
◦ WindowsでもICUを利用へ
◦ .NET5の一部としてWinRT APIをサポート
◦ ネイティブコード運用の改善
◦ アプリケーションコードの潜在的なバグを見つける分析機能
◦ オブザーバビリティ(OpenTelemetry)やマイクロサービス(Tye)対応
.NET のリリースとサポートモデル
2019年12月 2020年11月 2021年11月 2022年11月 2023年11月
.NET Core 3.1
LTS
.NET Core 5.0
GA
.NET Core 6.0
LTS
.NET Core 7.0
GA
.NET Core 8.0
LTS
最低3年
次のGA+3か月
次のGA+3か月
最低3年
Microsoftのサポートは最新のサービスアップデートに対して提供
コミュニティによるサポートや、3rd Partyからのサポートもあり
https://devblogs.microsoft.com/dotnet/net-core-releases-and-support/
.NET Frameworkはサポートされます
◦ .NET Framework 4.8が最後のメジャーリリース
◦ 機能追加などは行われない
◦ バグ修正や信頼性向上、セキュリティ更新などは予定
◦ Windowsが新しくなっても提供される
C# 9.0とF# 5.0
◦ C# 9.0は.NET 5.0のみサポート
◦ .NET Core 3.1以下で動くかもしれないけどサポートはされない
◦ What’s new in C# 9.0
◦ C# 9.0の新機能はまたC# Tokyoでやりましょう
◦ IEEEのbinary16 (float16)に対応したHalf 構造体の導入
◦ Source Generatorでコンパイル時コード生成が可能に
◦ https://devblogs.microsoft.com/dotnet/introducing-c-source-generators/
◦ (厳密にはC# 9.0の一部ではない)
Null許容型に関するアノテーションを
.NETライブラリ全体に付与完了
◦ ドキュメントにはまだ反映しきれていない
◦ Visual StudioのF12によるメタデータ参照や source.dot.net で確認
https://devblogs.microsoft.com/dotnet/annou
ncing-net-5-0/#nullability-annotation-
improvements
Target Framework Names (TFM)
はプラットフォーム共通とOS固有のものへ
◦ .NET5ではnet5.0とnet5.0-windows…
◦ net5.0-windows10 やnet5.0-windows10.0.17763.0 などOSバージョンを制限できる
◦ WPF、WinFormsはnet5.0-windowsのみで動作
◦ .NET 6 でXamarinが入るとnet5.0-androidなども追加
◦ Microsoft.Win32.RegistryのようなWindows固有APIを
◦ なにもせずに利用すると警告が出る
◦ 利用したいときは属性もしくは条件チェックを行う
◦ WebAssembly環境にはTFMは用意しない
◦ プロジェクトの設定でBrowserサポートを追加すると
Browserで利用できないAPIを呼び出すと警告される
◦ https://devblogs.microsoft.com/dotnet/the-future-of-net-standard/
.NET 5 performance improvements
TechEmpower benchmarks round 20 predicted perf increases for .NET 5 over .NET Core 3.1
+38%11,712,405 RPS
Plaintext
+42%1,243,436 RPS
Json
+20%417,818 RPS
Fortunes
Internal tests of .NET 5 performed on equivalent hardware as TechEmpower
Keynote - Welcome to .NET 5より引⽤(次ページも)
.NET 5 performance improvements
ž +30% socket performance improvement on Linux over .NET Core 3.1
ž JSON serialization performance improved +19% over .NET Core 3.11
ž Serialization of large collections & arrays improved 3x and are now zero-alloc
ž gRPC server performance exceeds Go, C++ and Java2
1 All 104 JSON serialization benchmarks improved
2 https://github.com/LesnyRumcajs/grpc_bench/wiki/2020-08-11-bench-results
0
10000
20000
30000
40000
50000
60000
rust_tonic_mt dotnet_grpc go_grpc cpp_grpc_mt java_grpc
gRPC Server Performance Requests/Sec
(higher is better)
さまざまなパフォーマンス改善
◦ GCやJIT関連
◦ coreclrをC/C++実装からC#実装へしたことがパフォーマンス改善作業を容易に
◦ マネージドコードからネイティブコードを呼ぶオーバーヘッドが大きかった箇所もある
◦ C#がマネージドコードである利点をランタイム、GC、JITで生かし改善している
◦ 文字列処理、ネットワークなど機能面の高速化
◦ Int.ToString、DateTime、DateTimeOfset、Encoding.UTF8など
◦ 正規表現
◦ コレクション、LINQ
◦ ネットワーク、HTTP/2対応の改善
◦ 暗号、リフレクションなどなど
◦ P95+にフォーカスした改善
◦ https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/
P95+ 最悪値でも予測可能に
とあるWebアプリの処理時間のヒストグラム
頻度
処理時間
P95
P99
P95=95%パーセンタイル値
全体で遅い処理にも着目し、改善する
平均、最頻値、P95、P99
平均(緑線)
P95(青線)
とあるWebアプリの処理時間の時間変化
P99(黄線)
ARM64対応
◦ Windows ARM64も含めてARM64対応
◦ .NET 5としては対応しているがWPFは未対応 (来年前半予定)
◦ ARM64でのパフォーマンス改善
◦ .NETライブラリでのARM64固有コードの改善
◦ RyuJITによって生成されたコード品質の改善
◦ https://devblogs.microsoft.com/dotnet/arm64-performance-in-net-5/
さまざまな展開方法のサポート・改善
◦ ClickOnceに対応
◦ .NET Core 3.1および.NET 5 以降のWinForm, WPF, ConsoleApp
◦ SmartScreenなどWindows側のセキュリティ機能にも対応
◦ 単一ファイルサポートの拡大
◦ トリミングによりファイルサイズの削減が可能に
◦ コンテナイメージの縮小
◦ Windows Server Coreイメージを追加
.NETライブラリとしての
System.Text.Jsonの高速化・機能追加
◦ 不変型やレコード型にも対応
◦ Newtonsoft.Jsonからの移行用のドキュメント
◦ 機能例
◦ デフォルト値の無視など新しいグローバルオプション
◦ パブリックでないプロパティアクセサーの使用
◦ KeyがstringでないDictionaryのサポート
◦ NullをConverterで扱うかどうかを制御可能に
◦ HttpClientの拡張メソッドとして
GetFromJsonやPutAsJsonなどが利用可能に
WindowsでもICUを使うように
◦ ICU - International Components for Unicode
◦ カルチャや文字列の他、タイムゾーン情報を含んでいる
◦ .NET Core 3.1まではWindowsではOS固有のNLSを利用
◦ 最近だと「令和」がいつ対応されるかで話題に
◦ .NET 5以降はWindowsでもデフォルトでICUを利用
◦ NLS利用も可能
WinRT 相互運用機能
◦ .NET Core 3.1までのものと互換性がないため、
利用していたプロジェクトを.NET 5対応するためには移行が必要
◦ 新しい機能は .NET 5.0かつWindows10 version1809以降で利用可能
◦ 新しい言語機能を取り入れるなど利用しやすくしている
◦ https://blogs.windows.com/windowsdeveloper/2020/11/10/announcing-c-
winrt-version-1-0-with-the-net-5-ga-release/
開発プラットフォーム
視点でのまとめ
デスクトップ開発
◦ Windows Forms、WPFデザイナー
◦ Visual Studioツール
◦ ClickOnceインストーラー
◦ 3rd Partyのコントトール
◦ 自己完結型、単一ファイルなEXEファイル
◦ 実行マシンに.NET Frameworkのインストールが不要に
◦ パフォーマンス改善
◦ Webview2 (Edge Chromium)など最新のコントロール
è かずきさんのセッションで説明が?
Web開発
◦ RazorもしくはBlazorが主要なフレームワーク
◦ 新機能は主にBlazor関連
◦ Razorまわりは機能改善・パフォーマンス向上
◦ もちろん、Blazorもパフォーマンス向上
◦ .NET Frameworkから移植されない技術は
例えば次のような移行がおすすめされている
◦ WebFormはBlazorへ
◦ WCFはgRPCへ
マイクロサービスやオブザーバビリティへの投
資
◦ マイクロサービスを活用するための機能・プロジェクト
◦ REST API
◦ OpenAPI
◦ API REPL
◦ Clientコード生成
◦ Tye => 松村さんのセッションで!
◦ オブザーバビリティ(可観測性)を実現するための機能
◦ 監視をし、サービス改善のために必要なアクションをとれるようにする
◦ dotnet-monitorによる診断機能
◦ OpenTelemetryプロジェクトに対(主に分散トレーシングとメトリクス)

More Related Content

What's hot (20)

PDF
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
日本マイクロソフト株式会社
 
PDF
(過去バージョン) Q#基礎 ver1.0
Takayoshi Tanaka
 
PDF
【BS2】.NET 6 最新アップデート
日本マイクロソフト株式会社
 
PPTX
復習も兼ねて!C#6.0-7.0
Yuta Matsumura
 
PDF
.NET の今と今後に思うこと (Tokyo Ver.)
Akira Inoue
 
PDF
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
日本マイクロソフト株式会社
 
PDF
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
日本マイクロソフト株式会社
 
PDF
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
日本マイクロソフト株式会社
 
PDF
.NET 5 勉強会 ~.NET Framework から .NET へ~
Fujio Kojima
 
PDF
Introduction to VSCode
Yuki Igarashi
 
PDF
テスト駆動で行うネットワーク自動化のすすめ
kinunori
 
PDF
.NET 最新ロードマップと今押さえておきたい技術要素
Akira Inoue
 
PDF
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
 
PDF
PHPerだってサーバーレスしたい!
Yuta Matsumura
 
PPTX
Wasm blazor and wasi 2
Takao Tetsuro
 
PDF
Azure Functions Tips
Yuta Matsumura
 
PDF
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
Akira Inoue
 
PDF
【BS7】GitHubをフル活用した開発
日本マイクロソフト株式会社
 
PDF
.NET Conf 2017 Japan Keynote ".NET Everywhere!"
Akira Inoue
 
PDF
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Akira Inoue
 
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
日本マイクロソフト株式会社
 
(過去バージョン) Q#基礎 ver1.0
Takayoshi Tanaka
 
【BS2】.NET 6 最新アップデート
日本マイクロソフト株式会社
 
復習も兼ねて!C#6.0-7.0
Yuta Matsumura
 
.NET の今と今後に思うこと (Tokyo Ver.)
Akira Inoue
 
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
日本マイクロソフト株式会社
 
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
日本マイクロソフト株式会社
 
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
日本マイクロソフト株式会社
 
.NET 5 勉強会 ~.NET Framework から .NET へ~
Fujio Kojima
 
Introduction to VSCode
Yuki Igarashi
 
テスト駆動で行うネットワーク自動化のすすめ
kinunori
 
.NET 最新ロードマップと今押さえておきたい技術要素
Akira Inoue
 
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
 
PHPerだってサーバーレスしたい!
Yuta Matsumura
 
Wasm blazor and wasi 2
Takao Tetsuro
 
Azure Functions Tips
Yuta Matsumura
 
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
Akira Inoue
 
【BS7】GitHubをフル活用した開発
日本マイクロソフト株式会社
 
.NET Conf 2017 Japan Keynote ".NET Everywhere!"
Akira Inoue
 
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Akira Inoue
 

Similar to 20201127 .NET 5 (20)

PPTX
20170527 inside .NET Core on Linux
Takayoshi Tanaka
 
PDF
Dotnetcore30forwindesktop
ru pic
 
PDF
[Japan Tech summit 2017] DEP 005
Microsoft Tech Summit 2017
 
PDF
20191120 beyondstudy#21 kitaoka
beyond Co., Ltd.
 
PDF
NET5 and Diagnostics
Kazushi Kamegawa
 
PDF
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
 
PDF
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
 
PDF
.NET アプリを改善して実践する継続的インテグレーション
Yuta Matsumura
 
PDF
.NET Coreとツール類の今
Yuki Igarashi
 
PPTX
About .Net vNext
Kazunori Hamamoto
 
PPTX
About .Net vNext
Kazunori Hamamoto
 
PPTX
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
Takao Tetsuro
 
PDF
.NET Coreから概観する.NETのOSSへの取り組み
Kouji Matsui
 
PPTX
20160709 .NET Core on RHEL
Takayoshi Tanaka
 
PDF
DEV-003_新しく生まれ変わったデータ アクセス テクノロジ ~Entity Framework Core 1.0 の全貌~
decode2016
 
PDF
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Akira Inoue
 
PPTX
ASP.NET vNextの全貌
A AOKI
 
PDF
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
decode2016
 
PDF
Node予備校 vol.1 名古屋
Mori Shingo
 
PDF
IBM Rational Team Concertに触れてみた
You&I
 
20170527 inside .NET Core on Linux
Takayoshi Tanaka
 
Dotnetcore30forwindesktop
ru pic
 
[Japan Tech summit 2017] DEP 005
Microsoft Tech Summit 2017
 
20191120 beyondstudy#21 kitaoka
beyond Co., Ltd.
 
NET5 and Diagnostics
Kazushi Kamegawa
 
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
 
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
 
.NET アプリを改善して実践する継続的インテグレーション
Yuta Matsumura
 
.NET Coreとツール類の今
Yuki Igarashi
 
About .Net vNext
Kazunori Hamamoto
 
About .Net vNext
Kazunori Hamamoto
 
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
Takao Tetsuro
 
.NET Coreから概観する.NETのOSSへの取り組み
Kouji Matsui
 
20160709 .NET Core on RHEL
Takayoshi Tanaka
 
DEV-003_新しく生まれ変わったデータ アクセス テクノロジ ~Entity Framework Core 1.0 の全貌~
decode2016
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Akira Inoue
 
ASP.NET vNextの全貌
A AOKI
 
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
decode2016
 
Node予備校 vol.1 名古屋
Mori Shingo
 
IBM Rational Team Concertに触れてみた
You&I
 
Ad

More from Takayoshi Tanaka (20)

PDF
deep dive distributed tracing
Takayoshi Tanaka
 
PPTX
202202 open telemetry .net handson
Takayoshi Tanaka
 
PPTX
202109-New_Relic-for-csharp-engineers
Takayoshi Tanaka
 
PDF
20210129 azure webapplogging
Takayoshi Tanaka
 
PPTX
Unity(再)入門
Takayoshi Tanaka
 
PPTX
最近のQ#について
Takayoshi Tanaka
 
PDF
SRENEXT 2020 [B5] New RelicのSREに学ぶ SREのためのNew Relic活用法
Takayoshi Tanaka
 
PDF
20191024 Get Start gRPC with ASP.NET
Takayoshi Tanaka
 
PDF
New Relicで始める、.NET Applications on AWSのObservability
Takayoshi Tanaka
 
PPTX
C#エンジニアのためのdocker kubernetesハンズオン (再)
Takayoshi Tanaka
 
PPTX
20190806 Q# Measurements
Takayoshi Tanaka
 
PPTX
C#エンジニアのためのdocker kubernetesハンズオン
Takayoshi Tanaka
 
PDF
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
Takayoshi Tanaka
 
PDF
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
Takayoshi Tanaka
 
PDF
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
Takayoshi Tanaka
 
PDF
Try! Visual Studio 209 git feature
Takayoshi Tanaka
 
PDF
New features of Azure Cloud Provider in OpenShift Container Platform 3.10
Takayoshi Tanaka
 
PDF
New features of Azure Cloud Provider at OCP 3.10
Takayoshi Tanaka
 
PDF
Open shift on azure stack
Takayoshi Tanaka
 
PPTX
Introduction to SQL Server on RHEL
Takayoshi Tanaka
 
deep dive distributed tracing
Takayoshi Tanaka
 
202202 open telemetry .net handson
Takayoshi Tanaka
 
202109-New_Relic-for-csharp-engineers
Takayoshi Tanaka
 
20210129 azure webapplogging
Takayoshi Tanaka
 
Unity(再)入門
Takayoshi Tanaka
 
最近のQ#について
Takayoshi Tanaka
 
SRENEXT 2020 [B5] New RelicのSREに学ぶ SREのためのNew Relic活用法
Takayoshi Tanaka
 
20191024 Get Start gRPC with ASP.NET
Takayoshi Tanaka
 
New Relicで始める、.NET Applications on AWSのObservability
Takayoshi Tanaka
 
C#エンジニアのためのdocker kubernetesハンズオン (再)
Takayoshi Tanaka
 
20190806 Q# Measurements
Takayoshi Tanaka
 
C#エンジニアのためのdocker kubernetesハンズオン
Takayoshi Tanaka
 
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
Takayoshi Tanaka
 
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
Takayoshi Tanaka
 
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
Takayoshi Tanaka
 
Try! Visual Studio 209 git feature
Takayoshi Tanaka
 
New features of Azure Cloud Provider in OpenShift Container Platform 3.10
Takayoshi Tanaka
 
New features of Azure Cloud Provider at OCP 3.10
Takayoshi Tanaka
 
Open shift on azure stack
Takayoshi Tanaka
 
Introduction to SQL Server on RHEL
Takayoshi Tanaka
 
Ad

Recently uploaded (9)

PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 

20201127 .NET 5

  • 2. 自己紹介: @tanaka_733 ◦ 「Observability(可観測性)プラットフォーム」がお仕事 ◦ Go, Java, JavaScript, Ruby, PHP, Rustに加えてC#やってます ◦ クラウドもオンプレもWindowsもLinuxもコンテナもサーバーレスもやってます Microsoft MVP for Azure & Development Technologies ◦ Q#もやっています
  • 4. .NET 5 ダウンロード ◦ インストーラー(OSごとのインストーラーおよびインストールスクリ プト) ◦ https://dotnet.microsoft.com/download/dotnet/5.0 ◦ コンテナイメージ ◦ https://hub.docker.com/_/microsoft-dotnet ◦ リリースノート ◦ https://github.com/dotnet/core/blob/master/release-notes/5.0/5.0.0/5.0.0.md ◦ 既知の問題 ◦ https://github.com/dotnet/core/blob/master/release-notes/5.0/5.0-known-issues.md
  • 6. なにがアップデートされた? .NET 5 ASP.NET Core 5 Entity Framework Core 5 C# 9, F# 5 Visual Studio, Visual Studio for Mac, VS Codeなどのツール
  • 7. .NET 5 新機能一覧 (1) ◦ C# 9とF# 5へアップデート ◦ コンパイル時にコード生成を可能にするC# Source Generatorの導入 ◦ IEEE 754のbinary16 に対応する数値型としてHalf 構造体の導入 ◦ null許容参照型のアノテーション導入の完了 ◦ Target Framework (TFM)が大きく2つに ◦ 特定のOS(主にWindows)のみで動作するAPIの使用を検出し修正可能に ◦ WebAssembly環境を考慮 ◦ さまざまなパフォーマンス改善 ◦ 文字列処理・正規表現やネットワーク関連などの改善 GitHubのissue ◦ 95%パーセンタイル以上(P95+)でも予測可能で一貫したパフォーマンスが得られるようにする改善 Improving P95+ latency · Issue #37534 · dotnet/runtime · GitHub ◦ GC、JITなどの改善 ◦ ARM64対応
  • 8. .NET 5 新機能一覧 (2) ◦ 配布オプションの追加 ◦ ClickOnceでのクライアントアプリの展開 ◦ 単一の実行ファイルへの対応 ◦ コンテナイメージサイズの縮小とcgroup v2への対応 ◦ Server Coreイメージの追加 ◦ 自己完結型アプリケーションの配布サイズを小さくする機能 ◦ JsonSerializer の改善 ◦ WindowsでもICUを利用へ ◦ .NET5の一部としてWinRT APIをサポート ◦ ネイティブコード運用の改善 ◦ アプリケーションコードの潜在的なバグを見つける分析機能 ◦ オブザーバビリティ(OpenTelemetry)やマイクロサービス(Tye)対応
  • 9. .NET のリリースとサポートモデル 2019年12月 2020年11月 2021年11月 2022年11月 2023年11月 .NET Core 3.1 LTS .NET Core 5.0 GA .NET Core 6.0 LTS .NET Core 7.0 GA .NET Core 8.0 LTS 最低3年 次のGA+3か月 次のGA+3か月 最低3年 Microsoftのサポートは最新のサービスアップデートに対して提供 コミュニティによるサポートや、3rd Partyからのサポートもあり https://devblogs.microsoft.com/dotnet/net-core-releases-and-support/
  • 10. .NET Frameworkはサポートされます ◦ .NET Framework 4.8が最後のメジャーリリース ◦ 機能追加などは行われない ◦ バグ修正や信頼性向上、セキュリティ更新などは予定 ◦ Windowsが新しくなっても提供される
  • 11. C# 9.0とF# 5.0 ◦ C# 9.0は.NET 5.0のみサポート ◦ .NET Core 3.1以下で動くかもしれないけどサポートはされない ◦ What’s new in C# 9.0 ◦ C# 9.0の新機能はまたC# Tokyoでやりましょう ◦ IEEEのbinary16 (float16)に対応したHalf 構造体の導入 ◦ Source Generatorでコンパイル時コード生成が可能に ◦ https://devblogs.microsoft.com/dotnet/introducing-c-source-generators/ ◦ (厳密にはC# 9.0の一部ではない)
  • 12. Null許容型に関するアノテーションを .NETライブラリ全体に付与完了 ◦ ドキュメントにはまだ反映しきれていない ◦ Visual StudioのF12によるメタデータ参照や source.dot.net で確認 https://devblogs.microsoft.com/dotnet/annou ncing-net-5-0/#nullability-annotation- improvements
  • 13. Target Framework Names (TFM) はプラットフォーム共通とOS固有のものへ ◦ .NET5ではnet5.0とnet5.0-windows… ◦ net5.0-windows10 やnet5.0-windows10.0.17763.0 などOSバージョンを制限できる ◦ WPF、WinFormsはnet5.0-windowsのみで動作 ◦ .NET 6 でXamarinが入るとnet5.0-androidなども追加 ◦ Microsoft.Win32.RegistryのようなWindows固有APIを ◦ なにもせずに利用すると警告が出る ◦ 利用したいときは属性もしくは条件チェックを行う ◦ WebAssembly環境にはTFMは用意しない ◦ プロジェクトの設定でBrowserサポートを追加すると Browserで利用できないAPIを呼び出すと警告される ◦ https://devblogs.microsoft.com/dotnet/the-future-of-net-standard/
  • 14. .NET 5 performance improvements TechEmpower benchmarks round 20 predicted perf increases for .NET 5 over .NET Core 3.1 +38%11,712,405 RPS Plaintext +42%1,243,436 RPS Json +20%417,818 RPS Fortunes Internal tests of .NET 5 performed on equivalent hardware as TechEmpower Keynote - Welcome to .NET 5より引⽤(次ページも)
  • 15. .NET 5 performance improvements ž +30% socket performance improvement on Linux over .NET Core 3.1 ž JSON serialization performance improved +19% over .NET Core 3.11 ž Serialization of large collections & arrays improved 3x and are now zero-alloc ž gRPC server performance exceeds Go, C++ and Java2 1 All 104 JSON serialization benchmarks improved 2 https://github.com/LesnyRumcajs/grpc_bench/wiki/2020-08-11-bench-results 0 10000 20000 30000 40000 50000 60000 rust_tonic_mt dotnet_grpc go_grpc cpp_grpc_mt java_grpc gRPC Server Performance Requests/Sec (higher is better)
  • 16. さまざまなパフォーマンス改善 ◦ GCやJIT関連 ◦ coreclrをC/C++実装からC#実装へしたことがパフォーマンス改善作業を容易に ◦ マネージドコードからネイティブコードを呼ぶオーバーヘッドが大きかった箇所もある ◦ C#がマネージドコードである利点をランタイム、GC、JITで生かし改善している ◦ 文字列処理、ネットワークなど機能面の高速化 ◦ Int.ToString、DateTime、DateTimeOfset、Encoding.UTF8など ◦ 正規表現 ◦ コレクション、LINQ ◦ ネットワーク、HTTP/2対応の改善 ◦ 暗号、リフレクションなどなど ◦ P95+にフォーカスした改善 ◦ https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/
  • 19. ARM64対応 ◦ Windows ARM64も含めてARM64対応 ◦ .NET 5としては対応しているがWPFは未対応 (来年前半予定) ◦ ARM64でのパフォーマンス改善 ◦ .NETライブラリでのARM64固有コードの改善 ◦ RyuJITによって生成されたコード品質の改善 ◦ https://devblogs.microsoft.com/dotnet/arm64-performance-in-net-5/
  • 20. さまざまな展開方法のサポート・改善 ◦ ClickOnceに対応 ◦ .NET Core 3.1および.NET 5 以降のWinForm, WPF, ConsoleApp ◦ SmartScreenなどWindows側のセキュリティ機能にも対応 ◦ 単一ファイルサポートの拡大 ◦ トリミングによりファイルサイズの削減が可能に ◦ コンテナイメージの縮小 ◦ Windows Server Coreイメージを追加
  • 21. .NETライブラリとしての System.Text.Jsonの高速化・機能追加 ◦ 不変型やレコード型にも対応 ◦ Newtonsoft.Jsonからの移行用のドキュメント ◦ 機能例 ◦ デフォルト値の無視など新しいグローバルオプション ◦ パブリックでないプロパティアクセサーの使用 ◦ KeyがstringでないDictionaryのサポート ◦ NullをConverterで扱うかどうかを制御可能に ◦ HttpClientの拡張メソッドとして GetFromJsonやPutAsJsonなどが利用可能に
  • 22. WindowsでもICUを使うように ◦ ICU - International Components for Unicode ◦ カルチャや文字列の他、タイムゾーン情報を含んでいる ◦ .NET Core 3.1まではWindowsではOS固有のNLSを利用 ◦ 最近だと「令和」がいつ対応されるかで話題に ◦ .NET 5以降はWindowsでもデフォルトでICUを利用 ◦ NLS利用も可能
  • 23. WinRT 相互運用機能 ◦ .NET Core 3.1までのものと互換性がないため、 利用していたプロジェクトを.NET 5対応するためには移行が必要 ◦ 新しい機能は .NET 5.0かつWindows10 version1809以降で利用可能 ◦ 新しい言語機能を取り入れるなど利用しやすくしている ◦ https://blogs.windows.com/windowsdeveloper/2020/11/10/announcing-c- winrt-version-1-0-with-the-net-5-ga-release/
  • 25. デスクトップ開発 ◦ Windows Forms、WPFデザイナー ◦ Visual Studioツール ◦ ClickOnceインストーラー ◦ 3rd Partyのコントトール ◦ 自己完結型、単一ファイルなEXEファイル ◦ 実行マシンに.NET Frameworkのインストールが不要に ◦ パフォーマンス改善 ◦ Webview2 (Edge Chromium)など最新のコントロール è かずきさんのセッションで説明が?
  • 26. Web開発 ◦ RazorもしくはBlazorが主要なフレームワーク ◦ 新機能は主にBlazor関連 ◦ Razorまわりは機能改善・パフォーマンス向上 ◦ もちろん、Blazorもパフォーマンス向上 ◦ .NET Frameworkから移植されない技術は 例えば次のような移行がおすすめされている ◦ WebFormはBlazorへ ◦ WCFはgRPCへ
  • 27. マイクロサービスやオブザーバビリティへの投 資 ◦ マイクロサービスを活用するための機能・プロジェクト ◦ REST API ◦ OpenAPI ◦ API REPL ◦ Clientコード生成 ◦ Tye => 松村さんのセッションで! ◦ オブザーバビリティ(可観測性)を実現するための機能 ◦ 監視をし、サービス改善のために必要なアクションをとれるようにする ◦ dotnet-monitorによる診断機能 ◦ OpenTelemetryプロジェクトに対(主に分散トレーシングとメトリクス)