SlideShare a Scribd company logo
C# で SPA を作る
BLAZOR WEBASSEMBLY の進化
そしてその先へ
OSC2022 Online/Hokkaido – E 10:00am
おことわり
Disclaimer
▪ 本セッションの録画を後日公開の予定です。
▪ 本セッションでとりあげる内容は、正確であるように努めたく思
いますが、とりわけ自分があまり明るくない分野の内容について
は、当方の認識誤りなど多々あるかもしれません。
▪ もしお気づきの点などございましたら Twitter のハッシュタグ
#osc22do_e10 でお知らせ頂く等していただけますと幸いで
す。
▪ 同じ .NET 上で稼働する言語・処理系として、Visual Basic お
よび F# もある一方、本セッションでは時間の都合上、明示的に
言及していません。”C#”の箇所を適宜 F# や VB に読み替え
ていただければと思います。
Twitter Hash Tag
#osc22do
#osc22do_e10
JavaScript 以外の言語で実装する
クライアント Web
C# で SPA を書く Blazor が歩んできた道
.NET6 から使える
“Native Dependency“ とは
Blazor WebAssembly を超えたその先
セッション概要
Client Web
Choice
JavaScript以外の言語で実装するクライアント Web
JavaScript 以外の言語で実装するクライアント Web
▪ 今日、JavaScript 以外の言語で実装したプログラムが、ブラウザで動くのは
珍しくない
− インタープリター / WebAssembly にコンパイル / JavaScript にコンパイル
▪ 必ずしも React/Vue/Angular のような SPA ライブラリと同じ構造ではない
− コンポーネント指向とは限らない
▪ ブラウザ上ではなくサーバー上で動作し、ブラウザとはリアルタイム通信すること
で、イベントの処理と DOM の更新を行なう方式もある
− Blazor でいうところの Blazor Server に相当?
ブラウザ上で動作する例
Rust 版 React
コンポーネント指向
JSX 風に Rust コード内にマー
クアップを記述
Rust は他にも多数のフロントエ
ンドライブラリ/フレームワークが
存在する
“Rust web framework comparison”
Python / PyScript
Python 版 jQuery?
Python で DOM を操作する
コードを書く
SPA をゴリゴリ書くというより
も、豊富なパッケージ資産でデー
タ可視化をサクッと行なう感じ?
Ruby / Bormaŝino
ブラウザ上で動く Sinatra?
ERB でビューを書きコントロー
ラを実装して POST / GET /
PUT / DELETE を処理する
フォーム送信がサーバーに送られ
ずブラウザ内のコントローラで処
理して次のビューを描画する
Dart / Flutter on the Web
Dart コードは JavaScript に
コンパイルされる
Canvas に全部描画する感じ?
(HTML に展開する場合もある
模様)
Rust / Yew
サーバー側で動作する例
PHP / Laravel / Livewire Ruby / Rails / Hotwire Elixir / Phoenix / LiveView
HISTORY
C# で SPA を書く Blazor が歩んできた道
Blazor が歩んできた道 - 2017年
2017
Blazor が歩んできた道 - 2017年
2017年6月12-16日
NDC Oslo で Steve
Sanderson 氏が
Blazor をデモ
2017
2018
Blazor が歩んできた道 - 2018年
2017年6月12-16日
NDC Oslo で Steve
Sanderson 氏が
Blazor をデモ
2017
2018年2月6日
.NET 公式ブログにて、
ASP.NET の実験プロジェクト
として公式に紹介
2018
コンポーネントモデル
ルーティング
レイアウト
フォーム検証
依存性注入(DI)
JavaScript相互運用
サーバー側レンダリング
デバッガ
インテリセンス
スコープ化された CSS
ホットリロード
WebAssembly AOT
Blazor が歩んできた道 – 2019年
2017年6月12-16日
NDC Oslo で Steve
Sanderson 氏が
Blazor をデモ
2017
2018年2月6日
.NET 公式ブログにて、
ASP.NET の実験プロジェクト
として公式に紹介
2018
2019年9月23日
.NET Core 3.0 リリース
Blazor Server
正式リリース
2019
2020
コンポーネントモデル
ルーティング
レイアウト
フォーム検証
依存性注入(DI)
JavaScript相互運用
サーバー側レンダリング
デバッガ
インテリセンス
スコープ化された CSS
ホットリロード
WebAssembly AOT
Blazor が歩んできた道 – 2020年
2017年6月12-16日
NDC Oslo で Steve
Sanderson 氏が
Blazor をデモ
2017
2018年2月6日
.NET 公式ブログにて、
ASP.NET の実験プロジェクト
として公式に紹介
2018
2019年9月23日
.NET Core 3.0 リリース
Blazor Server
正式リリース
2019
2020年11月10日
.NET 5.0 リリース
Blazor WebAssembly
正式リリース
2020
2021
コンポーネントモデル
ルーティング
レイアウト
フォーム検証
依存性注入(DI)
JavaScript相互運用
サーバー側レンダリング
デバッガ
インテリセンス
スコープ化された CSS
ホットリロード
WebAssembly AOT
Blazor が歩んできた道 – 2021年
2017年6月12-16日
NDC Oslo で Steve
Sanderson 氏が
Blazor をデモ
2017
2018年2月6日
.NET 公式ブログにて、
ASP.NET の実験プロジェクト
として公式に紹介
2018
2019年9月23日
.NET Core 3.0 リリース
Blazor Server
正式リリース
2019
2020年11月10日
.NET 5.0 リリース
Blazor WebAssembly
正式リリース
2020
2021年11月8日
.NET 6.0 リリース
2021 2022
コンポーネントモデル
ルーティング
レイアウト
フォーム検証
依存性注入(DI)
JavaScript相互運用
サーバー側レンダリング
デバッガ
インテリセンス
スコープ化された CSS
ホットリロード
WebAssembly AOT
Blazor が歩んできた道
▪ NDC での発表から既に5年、Blazor は発展途上ではなく、成熟期に入った
と言えるのではないだろうか
− 潤沢なパッケージ資産とエコシステム
− コード補完と分析、デバッガ、ホットリロードが提供する、リッチな開発者体験
▪ とはいえ、これからも Blazor は進化を続けていく
− 今回は取り上げませんでしたが、.NET MAUI とのハイブリッド構成で iOS や Android
デバイス向けモバイルアプリ開発にも Blazor を利用可能
− .NET 7 は今年 2022年 11月リリース予定!
NATIVE
.NET 6 から使える “Native Dependency” とは
Demonstration
.NET と WebAssembly Native との速度比較
.NET 6 0.94 sec
C 0.08 sec
.NET と WebAssembly Native との速度比較
.NET 6 0.94 sec
C 0.08 sec
.NET 6 AOT 1.11 sec
.NET と WebAssembly Native との速度比較
.NET 6 0.94 sec
C 0.08 sec
.NET 6 AOT 1.11 sec
.NET 7 AOT 0.09 sec
.NET と WebAssembly Native との速度比較
.NET 6 0.94 sec
C 0.08 sec
.NET 6 AOT 1.11 sec
.NET 7 AOT 0.09 sec
JavaScript 0.08 sec
Blazor WebAssembly の Native Dependency
▪ 任意の言語・処理系から生成された WebAssembly バイナリ内の関数を、
Blazor WebAssembly から容易に呼び出せる
− さらに NuGet パッケージ化されていれば、これを利用する Blazor WebAssembly ア
プリ開発者は、何もせずにC#構文のままに透過的に利用可能
▪ Rust によるクライアント Web 開発の盛り上がりの恩恵にあずかれるかも!?
− Rust で書かれた計算中心のライブラリを、Blazor WebAssembly プログラミングから
利用できる可能性
C#+WASM
Blazor WebAssembly を超えたその先
ブラウザの外へ活躍の場を広げる WebAssembly
▪ WASI - WebAssembly コードを、ブラウザ以外の環境で実行できるように
するための、システム資源にアクセスする API の仕様
− “The WebAssembly System Interface”
▪ WASI をサポートした WebAssembly 実行環境の実装がいくつかある
Wasmtime Wasmer Lunatic
Demonstration
WebAssembly による新しいコンテナの形
▪ 瞬時に起動する WebAssembly モジュール
− 50マイクロ秒でモジュール起動
▪ 完全に分離・制御された実行空間
− メモリやCPU使用量の割り当てを監視・制御可能
− 必要な資源へのアクセスのみ許可
▪ 1要求を処理するたびにモジュールを破棄
− ガベージコレクションが不要になる可能性!
Conclusion
おわりに
▪ JavaScript 以外によるクライアント Web 開発は選択肢
が増えつつある
▪ Blazor WebAssembly は成熟期に入りつつある
− 今回はとくに、ネイティブな WebAssembly バイナリとの連携
強化に着目
▪ WebAssembly の活躍の場が広がるのにあわせて、
C#開発者にまたひとつ選択肢が加わる未来
− Steve Sanderson 氏の実験プロジェクトながら、既に
WASI ランタイム上でフルセットの ASP.NET Core
Webアプリが稼働し、デバッガまで機能している
− 新しいコンテナ、新しいマイクロサービスの形になるのか
おわりに
Twitter Hash Tag
#osc22do
#osc22do_e10
Learn, Practice, Share.
THANK YOU!
NEXT EXIT

More Related Content

Similar to C# で SPA を作る BLAZOR WEBASSEMBLY の進化 - そしてその先へ (20)

PDF
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
Jun-ichi Sakamoto
 
PPTX
7 つの Blazor
m ishizaki
 
PPTX
Blazor WebAssembly と Windows Forms でのロジック共有例
Koichi Ota
 
PPTX
.NET Core 3.0 で Blazor を使用した​フルスタック C# Web アプリ​の構築
Joni
 
PDF
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
 
PPTX
Blazor でアプリを作ろう! ~テンプレートインストールから最初のデバッグ実行まで~
m ishizaki
 
PDF
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
Akira Inoue
 
PDF
WebブラウザでC#実行 WebAssemblyの技術
Sho Okada
 
PDF
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
Shotaro Suzuki
 
PDF
ASP.NETの進化とASP.NET Core Blazorの凄さ
Sho Okada
 
PPTX
burikaigi2023
Tatsuya Ishikawa
 
PDF
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
Akira Inoue
 
PDF
Static Web AppsとBlazor WebAssemblyのすすめ
TomomitsuKusaba
 
PDF
Blazor 触ってみた
Oda Shinsuke
 
PDF
WebAssemblyが切り拓くフロントエンドWeb開発の未来
Jun-ichi Sakamoto
 
PDF
【BS2】.NET 6 最新アップデート
日本マイクロソフト株式会社
 
PPTX
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
Yamamoto Reki
 
PDF
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
日本マイクロソフト株式会社
 
PDF
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
Tatsuya Ishikawa
 
PDF
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
Shotaro Suzuki
 
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
Jun-ichi Sakamoto
 
7 つの Blazor
m ishizaki
 
Blazor WebAssembly と Windows Forms でのロジック共有例
Koichi Ota
 
.NET Core 3.0 で Blazor を使用した​フルスタック C# Web アプリ​の構築
Joni
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
 
Blazor でアプリを作ろう! ~テンプレートインストールから最初のデバッグ実行まで~
m ishizaki
 
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
Akira Inoue
 
WebブラウザでC#実行 WebAssemblyの技術
Sho Okada
 
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
Shotaro Suzuki
 
ASP.NETの進化とASP.NET Core Blazorの凄さ
Sho Okada
 
burikaigi2023
Tatsuya Ishikawa
 
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
Akira Inoue
 
Static Web AppsとBlazor WebAssemblyのすすめ
TomomitsuKusaba
 
Blazor 触ってみた
Oda Shinsuke
 
WebAssemblyが切り拓くフロントエンドWeb開発の未来
Jun-ichi Sakamoto
 
【BS2】.NET 6 最新アップデート
日本マイクロソフト株式会社
 
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
Yamamoto Reki
 
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
日本マイクロソフト株式会社
 
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
Tatsuya Ishikawa
 
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
Shotaro Suzuki
 

More from Jun-ichi Sakamoto (20)

PDF
Pre-render Blazor WebAssembly on static web hosting at publishing time
Jun-ichi Sakamoto
 
PDF
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
Jun-ichi Sakamoto
 
PDF
Azure App Service Authentication
Jun-ichi Sakamoto
 
PDF
ライトニングトーク - とある LINE Bot の開発記「とても腹立たしいことがあったのです」
Jun-ichi Sakamoto
 
PDF
「ゆるくLTをしよう勉強会@旭川」jsakamoto 予告編
Jun-ichi Sakamoto
 
PDF
Ohotech特盛#14 セッション4 予告編
Jun-ichi Sakamoto
 
PDF
CLR/H 第99回勉強会ライトニングトーク
Jun-ichi Sakamoto
 
PDF
Ohotech特盛#13 スマホで操作する カメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―
Jun-ichi Sakamoto
 
PDF
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
Jun-ichi Sakamoto
 
PDF
息子たちがローマ字勉強するための <s>HTML5</s> Web標準 アプリ作ってみた
Jun-ichi Sakamoto
 
PDF
More Azure Websites! - JAZUGさっぽろ "きたあず" 第5回勉強会ライトニングトーク
Jun-ichi Sakamoto
 
PDF
One horror stories around NuGet
Jun-ichi Sakamoto
 
PDF
How to automated test a web application with sending e mail feature
Jun-ichi Sakamoto
 
PDF
Introduction of "MarkdownPresenter"
Jun-ichi Sakamoto
 
PDF
セッション中に Twitter につぶやく!
Jun-ichi Sakamoto
 
PDF
Ohotech特盛#5予告 - タートルグラフィックでいろんな模様を描いてみよう!
Jun-ichi Sakamoto
 
PDF
ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」
Jun-ichi Sakamoto
 
PDF
[予告篇] みんなで同時プレイするクイズWebアプリでCodeQuizに挑戦!
Jun-ichi Sakamoto
 
PDF
ASP.NET で作るとあるTwitter Bot -開発環境からネット公開までぜんぶ無料だよ!-
Jun-ichi Sakamoto
 
PDF
CLR/H#74 LT IT勉強会発表用イチオシツール
Jun-ichi Sakamoto
 
Pre-render Blazor WebAssembly on static web hosting at publishing time
Jun-ichi Sakamoto
 
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
Jun-ichi Sakamoto
 
Azure App Service Authentication
Jun-ichi Sakamoto
 
ライトニングトーク - とある LINE Bot の開発記「とても腹立たしいことがあったのです」
Jun-ichi Sakamoto
 
「ゆるくLTをしよう勉強会@旭川」jsakamoto 予告編
Jun-ichi Sakamoto
 
Ohotech特盛#14 セッション4 予告編
Jun-ichi Sakamoto
 
CLR/H 第99回勉強会ライトニングトーク
Jun-ichi Sakamoto
 
Ohotech特盛#13 スマホで操作する カメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―
Jun-ichi Sakamoto
 
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
Jun-ichi Sakamoto
 
息子たちがローマ字勉強するための <s>HTML5</s> Web標準 アプリ作ってみた
Jun-ichi Sakamoto
 
More Azure Websites! - JAZUGさっぽろ "きたあず" 第5回勉強会ライトニングトーク
Jun-ichi Sakamoto
 
One horror stories around NuGet
Jun-ichi Sakamoto
 
How to automated test a web application with sending e mail feature
Jun-ichi Sakamoto
 
Introduction of "MarkdownPresenter"
Jun-ichi Sakamoto
 
セッション中に Twitter につぶやく!
Jun-ichi Sakamoto
 
Ohotech特盛#5予告 - タートルグラフィックでいろんな模様を描いてみよう!
Jun-ichi Sakamoto
 
ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」
Jun-ichi Sakamoto
 
[予告篇] みんなで同時プレイするクイズWebアプリでCodeQuizに挑戦!
Jun-ichi Sakamoto
 
ASP.NET で作るとあるTwitter Bot -開発環境からネット公開までぜんぶ無料だよ!-
Jun-ichi Sakamoto
 
CLR/H#74 LT IT勉強会発表用イチオシツール
Jun-ichi Sakamoto
 
Ad

Recently uploaded (8)

PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
Ad

C# で SPA を作る BLAZOR WEBASSEMBLY の進化 - そしてその先へ

  • 1. C# で SPA を作る BLAZOR WEBASSEMBLY の進化 そしてその先へ OSC2022 Online/Hokkaido – E 10:00am
  • 2. おことわり Disclaimer ▪ 本セッションの録画を後日公開の予定です。 ▪ 本セッションでとりあげる内容は、正確であるように努めたく思 いますが、とりわけ自分があまり明るくない分野の内容について は、当方の認識誤りなど多々あるかもしれません。 ▪ もしお気づきの点などございましたら Twitter のハッシュタグ #osc22do_e10 でお知らせ頂く等していただけますと幸いで す。 ▪ 同じ .NET 上で稼働する言語・処理系として、Visual Basic お よび F# もある一方、本セッションでは時間の都合上、明示的に 言及していません。”C#”の箇所を適宜 F# や VB に読み替え ていただければと思います。
  • 4. JavaScript 以外の言語で実装する クライアント Web C# で SPA を書く Blazor が歩んできた道 .NET6 から使える “Native Dependency“ とは Blazor WebAssembly を超えたその先 セッション概要
  • 6. JavaScript 以外の言語で実装するクライアント Web ▪ 今日、JavaScript 以外の言語で実装したプログラムが、ブラウザで動くのは 珍しくない − インタープリター / WebAssembly にコンパイル / JavaScript にコンパイル ▪ 必ずしも React/Vue/Angular のような SPA ライブラリと同じ構造ではない − コンポーネント指向とは限らない ▪ ブラウザ上ではなくサーバー上で動作し、ブラウザとはリアルタイム通信すること で、イベントの処理と DOM の更新を行なう方式もある − Blazor でいうところの Blazor Server に相当?
  • 7. ブラウザ上で動作する例 Rust 版 React コンポーネント指向 JSX 風に Rust コード内にマー クアップを記述 Rust は他にも多数のフロントエ ンドライブラリ/フレームワークが 存在する “Rust web framework comparison” Python / PyScript Python 版 jQuery? Python で DOM を操作する コードを書く SPA をゴリゴリ書くというより も、豊富なパッケージ資産でデー タ可視化をサクッと行なう感じ? Ruby / Bormaŝino ブラウザ上で動く Sinatra? ERB でビューを書きコントロー ラを実装して POST / GET / PUT / DELETE を処理する フォーム送信がサーバーに送られ ずブラウザ内のコントローラで処 理して次のビューを描画する Dart / Flutter on the Web Dart コードは JavaScript に コンパイルされる Canvas に全部描画する感じ? (HTML に展開する場合もある 模様) Rust / Yew
  • 8. サーバー側で動作する例 PHP / Laravel / Livewire Ruby / Rails / Hotwire Elixir / Phoenix / LiveView
  • 9. HISTORY C# で SPA を書く Blazor が歩んできた道
  • 11. Blazor が歩んできた道 - 2017年 2017年6月12-16日 NDC Oslo で Steve Sanderson 氏が Blazor をデモ 2017 2018
  • 12. Blazor が歩んできた道 - 2018年 2017年6月12-16日 NDC Oslo で Steve Sanderson 氏が Blazor をデモ 2017 2018年2月6日 .NET 公式ブログにて、 ASP.NET の実験プロジェクト として公式に紹介 2018 コンポーネントモデル ルーティング レイアウト フォーム検証 依存性注入(DI) JavaScript相互運用 サーバー側レンダリング デバッガ インテリセンス スコープ化された CSS ホットリロード WebAssembly AOT
  • 13. Blazor が歩んできた道 – 2019年 2017年6月12-16日 NDC Oslo で Steve Sanderson 氏が Blazor をデモ 2017 2018年2月6日 .NET 公式ブログにて、 ASP.NET の実験プロジェクト として公式に紹介 2018 2019年9月23日 .NET Core 3.0 リリース Blazor Server 正式リリース 2019 2020 コンポーネントモデル ルーティング レイアウト フォーム検証 依存性注入(DI) JavaScript相互運用 サーバー側レンダリング デバッガ インテリセンス スコープ化された CSS ホットリロード WebAssembly AOT
  • 14. Blazor が歩んできた道 – 2020年 2017年6月12-16日 NDC Oslo で Steve Sanderson 氏が Blazor をデモ 2017 2018年2月6日 .NET 公式ブログにて、 ASP.NET の実験プロジェクト として公式に紹介 2018 2019年9月23日 .NET Core 3.0 リリース Blazor Server 正式リリース 2019 2020年11月10日 .NET 5.0 リリース Blazor WebAssembly 正式リリース 2020 2021 コンポーネントモデル ルーティング レイアウト フォーム検証 依存性注入(DI) JavaScript相互運用 サーバー側レンダリング デバッガ インテリセンス スコープ化された CSS ホットリロード WebAssembly AOT
  • 15. Blazor が歩んできた道 – 2021年 2017年6月12-16日 NDC Oslo で Steve Sanderson 氏が Blazor をデモ 2017 2018年2月6日 .NET 公式ブログにて、 ASP.NET の実験プロジェクト として公式に紹介 2018 2019年9月23日 .NET Core 3.0 リリース Blazor Server 正式リリース 2019 2020年11月10日 .NET 5.0 リリース Blazor WebAssembly 正式リリース 2020 2021年11月8日 .NET 6.0 リリース 2021 2022 コンポーネントモデル ルーティング レイアウト フォーム検証 依存性注入(DI) JavaScript相互運用 サーバー側レンダリング デバッガ インテリセンス スコープ化された CSS ホットリロード WebAssembly AOT
  • 16. Blazor が歩んできた道 ▪ NDC での発表から既に5年、Blazor は発展途上ではなく、成熟期に入った と言えるのではないだろうか − 潤沢なパッケージ資産とエコシステム − コード補完と分析、デバッガ、ホットリロードが提供する、リッチな開発者体験 ▪ とはいえ、これからも Blazor は進化を続けていく − 今回は取り上げませんでしたが、.NET MAUI とのハイブリッド構成で iOS や Android デバイス向けモバイルアプリ開発にも Blazor を利用可能 − .NET 7 は今年 2022年 11月リリース予定!
  • 17. NATIVE .NET 6 から使える “Native Dependency” とは
  • 19. .NET と WebAssembly Native との速度比較 .NET 6 0.94 sec C 0.08 sec
  • 20. .NET と WebAssembly Native との速度比較 .NET 6 0.94 sec C 0.08 sec .NET 6 AOT 1.11 sec
  • 21. .NET と WebAssembly Native との速度比較 .NET 6 0.94 sec C 0.08 sec .NET 6 AOT 1.11 sec .NET 7 AOT 0.09 sec
  • 22. .NET と WebAssembly Native との速度比較 .NET 6 0.94 sec C 0.08 sec .NET 6 AOT 1.11 sec .NET 7 AOT 0.09 sec JavaScript 0.08 sec
  • 23. Blazor WebAssembly の Native Dependency ▪ 任意の言語・処理系から生成された WebAssembly バイナリ内の関数を、 Blazor WebAssembly から容易に呼び出せる − さらに NuGet パッケージ化されていれば、これを利用する Blazor WebAssembly ア プリ開発者は、何もせずにC#構文のままに透過的に利用可能 ▪ Rust によるクライアント Web 開発の盛り上がりの恩恵にあずかれるかも!? − Rust で書かれた計算中心のライブラリを、Blazor WebAssembly プログラミングから 利用できる可能性
  • 25. ブラウザの外へ活躍の場を広げる WebAssembly ▪ WASI - WebAssembly コードを、ブラウザ以外の環境で実行できるように するための、システム資源にアクセスする API の仕様 − “The WebAssembly System Interface” ▪ WASI をサポートした WebAssembly 実行環境の実装がいくつかある Wasmtime Wasmer Lunatic
  • 27. WebAssembly による新しいコンテナの形 ▪ 瞬時に起動する WebAssembly モジュール − 50マイクロ秒でモジュール起動 ▪ 完全に分離・制御された実行空間 − メモリやCPU使用量の割り当てを監視・制御可能 − 必要な資源へのアクセスのみ許可 ▪ 1要求を処理するたびにモジュールを破棄 − ガベージコレクションが不要になる可能性!
  • 29. ▪ JavaScript 以外によるクライアント Web 開発は選択肢 が増えつつある ▪ Blazor WebAssembly は成熟期に入りつつある − 今回はとくに、ネイティブな WebAssembly バイナリとの連携 強化に着目 ▪ WebAssembly の活躍の場が広がるのにあわせて、 C#開発者にまたひとつ選択肢が加わる未来 − Steve Sanderson 氏の実験プロジェクトながら、既に WASI ランタイム上でフルセットの ASP.NET Core Webアプリが稼働し、デバッガまで機能している − 新しいコンテナ、新しいマイクロサービスの形になるのか おわりに