SlideShare a Scribd company logo
.NET 7におけるBlazor
の新機能
株式会社SAKURUG
エンジニアリングユニット
草場 友光
C# Tokyo .NET Conf 2022直後 .NETラボ合同イベント
自己紹介
• 普段は主にWebFormsアプリの保守の
お仕事をしてます。
• 古めのシステムが多いので時代に取り
残されぬよう新しい技術を一つでも入
れるよう日々努力しています。
• 2022/08-2023 Microsoft MVP
(Developer Technologies)
• tomo_kusaba
宣伝
【VISION】ひとの可能性を開花させる企業であり続ける
VISIONに共感できる仲間募集中。
注意
• 個人の見解・解釈が多分に入っています。
• 見解の相違・事実誤認などありましたらご指摘ください。
今日の目的
• .NET 7がとうとうリリースされました。
• 今回は、Blazorにフォーカスして新しい機能をキャッチアップ
していきたいと思います
主な項目
• 新しいローディング画面
• データバインディング
• 仮想化の改善
• ナビゲーションの改善
位置づけについて
C# 11としての新文法
.NET 7のフレームワークとしての新機能
ASP.NET Coreとしての新機能
Blazorの新機能
今回のフォーカスポイント
とはいえ、こっちも外せな
い
とはいえ、こっちも外せな
い
とはいえ、こっちも外せない
新機能一覧・・・
• Githubをみると書いてる
https://github.com/dotnet/aspnetcore/issues/39504
STSサポート
• 従来Currentサポートと言われていたものを名称変更
• LTS(Long Term Support)に対してSTS(Short Standard
Term Support)
• サポート期間はリリース日から18ヶ月間
STS
ん?
サポート名称の名称混乱!?
.NET 7 Preview 6アナウンスブログより
.NET 7 RC2アナウンスブログより
ホットリロードの改善
• Blazor WebAssemblyのデバッグ時にホットリロードできるよ
うになった
• .NET 6でもホットリロードできる
新しいローディング画面
新しいローディング画面
• CSSスタイルの以下の値でローディング状況が提供されている。
• --blazor-load-percentage
• --blazor-load-percentage-text
• HTML+CSSでローディング画面を自作することが今までより
簡単に可能となっている。
• →試してみた!
新しいローディング画面の自作
データバインディング(bind-after)
• テキストボックスの値を更新してフォーカスが外れたときによ
びだすメソッドを指定することができる
• 今まではonchangeイベントを使用して実装していたものがよ
り楽になった。
仮想化の改善
• Blazorではスクロール領域の高さを定義するスペーサー要素に
「div」要素を使用している
• ただし、親要素で子要素が許可されない場合がある。
• そのため、newパラメータを使用してスペーサ要素を構成でき
るようになった。(地味)
ナビゲーションの改善
• 画面遷移に割り込んでキャンセルできる機能
• 画面遷移時にステータスを渡すことができる機能
画面遷移に割り込んでキャンセルできる機能
@inject IJSRuntime js
<NavigationLock OnBeforeInternalNavigation="BeforeInternalNavigation" ConfirmExternalNavigation="true" />
@code {
private async Task BeforeInternalNavigation(LocationChangingContext context)
{
bool result = await js.InvokeAsync<bool>("confirm", "ページ遷移するよ?");
if (!result)
{
context.PreventNavigation();
}
}
}
アプリ内でのページ
遷移
外部ページ遷移
画面遷移時にステータスを渡すことができる機能
• NavigationManagerのNavigateToの第二引数の
NavigationOptionsにHistoryEntryStateプロパティが追加さ
れた(string?)
• これを画面遷移元で設定し、画面遷移先で読み取る
空のBlazorテンプレート
• 今まではcounterやFetchDataやBootstrapを含むテンプレー
トが用意されていた。
• レイアウトも削除されシンプルなテンプレートとなっている。
• 今までは一般的にこれらの不要なファイルを削除してからアプ
リケーション開発に取りかかる必要があったがこのテンプレー
トによりそれが最小の手間となった。
空のBlazorテンプレート実行イメージ
新しいLINQ API
• Order()・OrderDescending()
var data = new[] { 2, 1, 3 };
// Instead of
// var sorted = data.OrderBy(e => e);
var sorted = data.Order();
// Instead of
// var sortedDescending = data.OrderByDescending(e => e);
var sortedDescending = data.OrderDescending();
C#11
• 生文字列リテラル
• 3つ以上の連続した「“」を使うことで一切エスケープの必要のない
文字列リテラルをかけるようになった。
• エスケープ不要の文字列として逐語的文字列リテラル「@””」があ
たるが微妙に使い勝手が悪かった
生文字列リテラル1
• 3つ以上の連続した「“」を使うことで一切エスケープのいら
ない文字列リテラルが書ける
var moji = “””
“も書けるし”という文字として
¥とかももちろん書ける
¥¥とかいったら¥が2こ
{}も特別な解釈もされず
“””;
生文字列リテラル2
• 文字列中に連続した「“」を並べたいとき
• 3つ並べたければ4つの「“」でくくる!
生文字列リテラルで文字列補間
• $の個数と同じ数の{と}を書いた時だけ補間扱い。
• それ以下の個数の{と}を書いた時は普通の文字列として扱う
参考文献
• ASP.NET Core updates in .NET 7 Preview 7
• ASP.NET Core Roadmap for .NET 7 #39504
• .NET 7 の ASP.NET Core Blazor の新機能試してみよう
• ASP.NET Core Blazor データ バインディング
• ASP.NET Core Razor コンポーネントの仮想化
• ASP.NET Core の Blazor ルーティングとナビゲーション
おしまい
おしまい

More Related Content

PDF
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
PDF
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
PDF
それはYAGNIか? それとも思考停止か?
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
PDF
インフラエンジニアってなんでしたっけ(仮)
PPTX
世界一わかりやすいClean Architecture
PDF
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
コンテナ未経験新人が学ぶコンテナ技術入門
それはYAGNIか? それとも思考停止か?
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
インフラエンジニアってなんでしたっけ(仮)
世界一わかりやすいClean Architecture
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話

What's hot (20)

PDF
イミュータブルデータモデルの極意
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PDF
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
PDF
ASP.NETの進化とASP.NET Core Blazorの凄さ
PPTX
Redisの特徴と活用方法について
PDF
Dockerからcontainerdへの移行
PDF
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
PDF
ドメイン駆動設計のための Spring の上手な使い方
PDF
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
PPTX
Karpenterで君だけの最強のオートスケーリングを実装しよう
PDF
今さらWPF? いいえ、今こそWPF!
PPTX
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
ODP
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
PDF
イミュータブルデータモデル(世代編)
PDF
心理的安全性を 0から80ぐらいに上げた話
PPTX
イベント・ソーシングを知る
PDF
Serverless時代のJavaについて
PDF
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
PDF
Javaはどのように動くのか~スライドでわかるJVMの仕組み
イミュータブルデータモデルの極意
コンテナの作り方「Dockerは裏方で何をしているのか?」
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
ASP.NETの進化とASP.NET Core Blazorの凄さ
Redisの特徴と活用方法について
Dockerからcontainerdへの移行
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
ドメイン駆動設計のための Spring の上手な使い方
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Karpenterで君だけの最強のオートスケーリングを実装しよう
今さらWPF? いいえ、今こそWPF!
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
イミュータブルデータモデル(世代編)
心理的安全性を 0から80ぐらいに上げた話
イベント・ソーシングを知る
Serverless時代のJavaについて
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Ad

Similar to .NET 7におけるBlazorの新機能 (12)

PDF
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
PDF
.NET 7期待の新機能
PDF
New Features of DotNet 6 Blazor WASM
PPTX
モノづくりBlazor勉強会1回目資料_Blazorについて.pptx
PPTX
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
PDF
.NET6新機能の振り返り
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
PDF
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
PDF
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
.NET 7期待の新機能
New Features of DotNet 6 Blazor WASM
モノづくりBlazor勉強会1回目資料_Blazorについて.pptx
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
Application development with c#, .net 6, blazor web assembly, asp.net web api...
.NET6新機能の振り返り
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
Application development with c#, .net 6, blazor web assembly, asp.net web api...
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
Ad

More from TomomitsuKusaba (16)

PDF
ASP. NET Core 汎用ホスト概要
PDF
Web開発者にお勧め .NET MAUI Blazor App
PDF
Microsoft MVPとは?コミュニティ活動のすすめ
PDF
NET 6で実装された新しいLINQ API
PDF
Web開発者が始める .NET MAUI Blazor App
PDF
BlazorにSwaggerを導入してみよう
PDF
MuseLoid規格の音源自作について
PDF
Entity Framework(Core)についての概要を学ぼう
PDF
.NET Lab2022年2月
PDF
保守性の高いアプリケーション設計について
PDF
リモートワークで買ってよかったもの
PDF
Static Web AppsとBlazor WebAssemblyのすすめ
PDF
.NET 6の期待の新機能とアップデート
PPTX
.NETラボ2021年10月 .NETの過去と現在
PPTX
.NETラボ2021年9月 Blazorのカスタム認証を通じてDIの便利さを学ぶ
PPTX
.Netlab202107
ASP. NET Core 汎用ホスト概要
Web開発者にお勧め .NET MAUI Blazor App
Microsoft MVPとは?コミュニティ活動のすすめ
NET 6で実装された新しいLINQ API
Web開発者が始める .NET MAUI Blazor App
BlazorにSwaggerを導入してみよう
MuseLoid規格の音源自作について
Entity Framework(Core)についての概要を学ぼう
.NET Lab2022年2月
保守性の高いアプリケーション設計について
リモートワークで買ってよかったもの
Static Web AppsとBlazor WebAssemblyのすすめ
.NET 6の期待の新機能とアップデート
.NETラボ2021年10月 .NETの過去と現在
.NETラボ2021年9月 Blazorのカスタム認証を通じてDIの便利さを学ぶ
.Netlab202107

.NET 7におけるBlazorの新機能