SlideShare a Scribd company logo
WebブラウザでC#実行
WebAssemblyの技術
2
Name:
岡田 将
Work:
Programmer
Blog:
http://sonic.blue/it/
主にMicrosoft系(ASP.NET/C#/VB.NET)やPHPなど
Twitter:
蒼いねずみ @Sonic16bit
自己紹介
Part 01
Webのクロスプラットフォーム
CONTENTS
WebブラウザでC#実行 WebAssemblyの技術
Part 02
WebAssemblyの技術
Part 03
ASP.NET Core Blazor WebAssemblyとは
Part 04
まとめ
注意
あくまで個人的見解となります。
実際と異なる内容も含まれている
かもしれませんので、ご了承くだ
さい。
Part.01
Webのクロスプラットフォーム
01
クラサバからの脱却
Webのクロスプラットフォーム
02
ブラウザの独自実装
03
Flash/Silverlightの躍進と苦難
04
W3CによるHTML5の超進化
01
クラサバからの脱却
Webのクロスプラットフォーム(のつらみ)
02
ブラウザの独自実装
03
Flash/Silverlightの躍進と苦難
04
W3CによるHTML5の超進化
← 端末依存とライセンスからの脱却
01
クラサバからの脱却
Webのクロスプラットフォーム(のつらみ)
02
ブラウザの独自実装
03
Flash/Silverlightの躍進と苦難
04
W3CによるHTML5の超進化
← スタイルシートなどデザインや、
独自JavaScript実装による対応限界
01
クラサバからの脱却
02
ブラウザの独自実装
03
Flash/Silverlightの躍進と苦難
04
W3CによるHTML5の超進化
← ブラウザアドインにより共通化できたが、
某モバイルにより将来性が閉ざされる
Webのクロスプラットフォーム(のつらみ)
01
クラサバからの脱却
02
ブラウザの独自実装
03
Flash/Silverlightの躍進と苦難
04
W3CによるHTML5の超進化 ← シェアのある古代ブラウザの対応と
数か月周期で進化していく新機能と
の乖離が進む
Webのクロスプラットフォーム(のつらみ)
Part.02
WebAssemblyの技術
JavaScriptから脱却するために期待される技術
WebAssemblyの技術
Javascriptにはインタプリタ型の利点もありますが、コンパイラ型と比べると実行速度は
遅いです。
また、クライアントのブラウザバージョンに依存する関数などもあり、プログラムとして
は不安定になります。
そこでWebAssemblyでは、C/C++のコンパイル済みのバイナリ(WASM)ファイルを読
み込み、ブラウザ側から実行することで、高速化およびJavascriptに依存しないプログラ
ミングが可能となる技術となっています
事前に独立したバイナリファイルがあるため、完全にサーバーとの通信を発生させないこ
とも可能となっています。
バイナリなのにどうやって各種CPUへ対応できるのか
WebAssemblyの技術
実はWebAssembly は 本来の意味でのアセンブリ言語ではなく、あくまでサーバー側がブ
ラウザ側に対応したバイナリファイルを出力しています。
(x86、x64、ARMなどのコンパイルターゲットが不明なため)
実際にどのマシンで実行されるかわからないため、ブラウザが WebAssemblyのバイナリ
コードをダウンロードした時点で、実行可能なアセンブリに変換がなされます。
そのため、CPUの種類に影響されない実行が可能となっています。
WebAssemblyの期待される活用範囲
WebAssemblyの技術
配布されるのがアセンブリのため、コードのセキュリティ性が高いうえ、従来のJavascriptでの
実行では遅かったり、難しい部分に対して置き換えて実行させることで速度の向上が期待でき
ます。
実行速度はC/C++のソフトウェア速度には劣りますが、20%程度の負荷程度となっていま
す。
また、OSとは切り離されたブラウザ上での実行となるため、安全な実行となります。
(クラッシュしても実行クライアントに大きな影響を与えない)
そのため、今までサーバー側で処理していた演算をクライアント側に分散させたり、一時的な
オフライン処理はもちろん、独立したクライアントアプリとしても実行可能となります。
(クライアントへ依存した分、WASMファイルは大きくなり、ロード時間もかかります)
例)ゲーム / 動画編集 / 3D レンダリング / 音楽編集など
既にAutoCADやDoom3のデモが移植されています(ダウンロードに時間がかかる)
https://wasm.continuation-labs.com/d3demo/
WebAssemblyの制限
WebAssemblyの技術
便利なWebAssemblyですが、やはりそれなりの制限はかかります。
WebAssemblyからは、ブラウザ側のDOM / WebGL / WebAudio などには直接アクセスはでき
ません、Javascript経由で実行する必要があります。
WebAssembly対応ブラウザのシェアは徐々に増えてはいますが、実行前にチェック処理などが
必要となります。
現時点で、WebAssembly を完全にサポートしている言語は C / C++ / Rustしかありません。
Kotlin / .NETは現在開発中
→ ASP.NET Core Blazor Serverがリリース!(Blazor Client(WebAssembly)は来年予定)
Part.03
ASP.NET Core Blazor WebAssemblyとは
ASP(Active Server Pages)
ASP.NET WebForm
ASP.NET MVC ASP.NET Core Blazor Server
ASP.NET Core MVC ASP.NET Core Blazor
WebAssembly
1996 2002 2009 2016 2019 2020
ASP.NETの歴史
VBScript,JavaScript
ASP.NET 3.5SP1-4.6
MVC1-MVC5
.NET Core 3.0
ASP.NET 1.0-3.5,Ajax
VB.NET,C#
.NET Core
1.0,MVC5,SPA .NET Core 3.1
ASP.NET Core Blazor WebAssembly
ASP.NET Core Blazor WebAssemblyとは
RazorファイルにBlazor構文で、HTMLと混在して記述する。
内部の@code内にC#が記述できます。
C#の依存関係、.NET ランタイムがWASMファイルでダウンロードされ、WebAssemblyに
よりクライアント側で実行されます。
完全にWeb分離した場合は初回のダウンロードだけで、
すべて完結することが可能。
(現時点ではURL Rewriteなどインストールが必要)
ASP.NET Core Blazor Server
随時WebAssemblyでのクライアント動作も使いつつ、サーバー処理はSPA(SignalR)で
通信してサーバー処理を実行する。
ASP.NET Core Blazor WebAssemblyとは
ASP.NET Core Blazor WebAssembly
メリット
・.NETサーバー側に依存せずに単体の動作が可能。
・クライアントにダウンロードされた後は、切断されてもページが完全に機能する。
・クライアントのリソースと機能を完全に活用が可能。(Javascript制御)
・アプリ配布した後の動作にASP.NET CoreのWeb サーバーは必要ない。
デメリット
・WebAssemblyに対応したブラウザバージョンが必要。
・使える機能はクライアントのブラウザーが持っている機能までに制限される。
・依存関係を使いすぎると、ダウンロードサイズが大きくなり、初回の読込みに時間がかかる。
・.NETランタイムとツールのサポートやデバッグ機能に制限がある。
ASP.NET Core Blazor WebAssemblyとは
ASP.NET Core Blazor WebAssembly
メリット
・.NETサーバー側に依存せずに単体の動作が可能。
・クライアントにダウンロードされた後は、切断されてもページが完全に機能する。
・クライアントのリソースと機能を完全に活用が可能。(Javascript制御)
・アプリ配布した後の動作にASP.NET CoreのWeb サーバーは必要ない。
デメリット
・WebAssemblyに対応したブラウザバージョンが必要。
・使える機能はクライアントのブラウザーが持っている機能までに制限される。
・依存関係を使いすぎると、ダウンロードサイズが大きくなり、初回の読込みに時間がかかる。
・.NETランタイムとツールのサポートやデバッグ機能に制限がある。
→ 結局はWebAssemblyなので、ほぼ同じメリット・デメリットとなるが、
C#と.NET FrameWorkを使って開発ができるが一番のメリット!
ASP.NET Core Blazor WebAssemblyとは
01
Javascriptをなるべく記述はしなくてもよくなるが、連携は必要なので、それなり
にJavascriptの理解はまだ必要
まとめというか所感
02 .NET FrameWorkは強いが、依存関係を増やしすぎると起動が重くなるので注意
03 独立したクライアントとして利用するには、配布方法や動作機能がまだ未成熟?
なので、正式リリースするまではBlazor Clientのみの開発は控えるべき
(PWAとの連携などがうまく出来上がれば流行るかも)
04 C#とBlazor構文のみで、少なくともTypeScriptはもう書かなくてよくなる未来は
すでに来ているはず
参考資料
WebAssembly: 「なぜ」と「どうやって」 [翻訳記事]
https://dev.to/nabbisen/webassembly--3385
Doom3のデモ
https://wasm.continuation-labs.com/d3demo/
Thank you for your kind attention
ご清聴ありがとうございました!

More Related Content

PDF
Blazor 触ってみた
PDF
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
PDF
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
PDF
IT エンジニアのための 流し読み Microsoft 365 - 入門!Microsoft Defender for Endpoint クロスプラットフ...
KEY
やはりお前らのMVCは間違っている
PDF
「なにをどこまでやれば?」OWASP SAMMが導く開発セキュリティ強化戦略
PDF
ASP.NETの進化とASP.NET Core Blazorの凄さ
PDF
IT エンジニアのための 流し読み Windows - Windows のライセンス認証 & サブスクリプションのライセンス認証
Blazor 触ってみた
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
IT エンジニアのための 流し読み Microsoft 365 - 入門!Microsoft Defender for Endpoint クロスプラットフ...
やはりお前らのMVCは間違っている
「なにをどこまでやれば?」OWASP SAMMが導く開発セキュリティ強化戦略
ASP.NETの進化とASP.NET Core Blazorの凄さ
IT エンジニアのための 流し読み Windows - Windows のライセンス認証 & サブスクリプションのライセンス認証

What's hot (20)

PDF
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
PDF
M04_失敗しないための Azure Virtual Desktop 設計ガイド
PDF
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
PDF
Serverless時代のJavaについて
PDF
Spring Boot × Vue.jsでSPAを作る
PDF
Session管理とRailsのcookie store
PDF
IT エンジニアのための 流し読み Windows - Windows 共有 PC モード
PDF
「顧客の声を聞かない」とはどういうことか
PDF
AWSのログ管理ベストプラクティス
PDF
Dockerからcontainerdへの移行
PDF
知っておいて損はない AWS法務関連
PDF
なぜOpenID Connectが必要となったのか、その歴史的背景
PDF
Intuneによるパッチ管理
PDF
IT エンジニアのための 流し読み Windows 10 - Microsoft の更新プログラム管理インフラ比較 ~ WU / WSUS / SCCM ...
PPTX
IDaaS を利用すべき理由とエンジニアがおさえておくべきポイント (2021年1月14日)
PDF
【第1回EMS勉強会】Autopilot設計時のポイント
PDF
これからSpringを使う開発者が知っておくべきこと
PPTX
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
PDF
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
PPTX
[社内勉強会]ELBとALBと数万スパイク負荷テスト
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
M04_失敗しないための Azure Virtual Desktop 設計ガイド
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Serverless時代のJavaについて
Spring Boot × Vue.jsでSPAを作る
Session管理とRailsのcookie store
IT エンジニアのための 流し読み Windows - Windows 共有 PC モード
「顧客の声を聞かない」とはどういうことか
AWSのログ管理ベストプラクティス
Dockerからcontainerdへの移行
知っておいて損はない AWS法務関連
なぜOpenID Connectが必要となったのか、その歴史的背景
Intuneによるパッチ管理
IT エンジニアのための 流し読み Windows 10 - Microsoft の更新プログラム管理インフラ比較 ~ WU / WSUS / SCCM ...
IDaaS を利用すべき理由とエンジニアがおさえておくべきポイント (2021年1月14日)
【第1回EMS勉強会】Autopilot設計時のポイント
これからSpringを使う開発者が知っておくべきこと
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
[社内勉強会]ELBとALBと数万スパイク負荷テスト
Ad

Similar to WebブラウザでC#実行 WebAssemblyの技術 (20)

PPTX
Chromebook 「だけ」で WebRTCを動かそう
PPTX
20100218
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
PDF
マイクロソフトWeb開発の今と今後
PPTX
フロントエンド技術の変遷
PPTX
.NET Core 3.0 で Blazor を使用した​フルスタック C# Web アプリ​の構築
PDF
Silverlight+COMにチャレンジ
PPTX
Blazor Web Assembly (C#) を触ってみた
PPTX
Cod2013 Sapporo #1
PDF
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
PPTX
Microsoft loves PHP WebMatrix + Windows Azure
PDF
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
PPTX
Interoperability of webassembly with javascript
PDF
New Features of DotNet 6 Blazor WASM
PDF
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
PDF
.NET の過去、現在、そして未来
PDF
WebMatrix 2 と Azure Web Sites を使ったスマートフォンサイト構築のすすめ
PPTX
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
Chromebook 「だけ」で WebRTCを動かそう
20100218
Application development with c#, .net 6, blazor web assembly, asp.net web api...
マイクロソフトWeb開発の今と今後
フロントエンド技術の変遷
.NET Core 3.0 で Blazor を使用した​フルスタック C# Web アプリ​の構築
Silverlight+COMにチャレンジ
Blazor Web Assembly (C#) を触ってみた
Cod2013 Sapporo #1
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Microsoft loves PHP WebMatrix + Windows Azure
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Interoperability of webassembly with javascript
New Features of DotNet 6 Blazor WASM
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
.NET の過去、現在、そして未来
WebMatrix 2 と Azure Web Sites を使ったスマートフォンサイト構築のすすめ
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
Ad

More from Sho Okada (15)

PDF
AppleシリコンのMacで Windows11を動かす
PDF
ChatAIの未来予想図
PDF
勉強会参加のすゝめ
PDF
いままで聴いてきたLTのおはなし
PDF
Excel取込みで失敗した先生
PDF
今のWeb開発者に伝えたいWebブラウザの病みの歴史
PDF
SQL Server中級者のための実践で使えるかもしれないTips集
PDF
オープンソースでExcelレポートプログラミング
PDF
.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話
PDF
メガネ型デバイスの未来について考える
PDF
WPF開発での陥りやすい罠
PDF
止めないためのWEBインフラ入門
PDF
ASP.NETを利用したAJAX開発の応用
PDF
WebMatrixに対応した、新しいけど新しくないRazor
PDF
初心者でもわかるActive directoryの基本
AppleシリコンのMacで Windows11を動かす
ChatAIの未来予想図
勉強会参加のすゝめ
いままで聴いてきたLTのおはなし
Excel取込みで失敗した先生
今のWeb開発者に伝えたいWebブラウザの病みの歴史
SQL Server中級者のための実践で使えるかもしれないTips集
オープンソースでExcelレポートプログラミング
.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話
メガネ型デバイスの未来について考える
WPF開発での陥りやすい罠
止めないためのWEBインフラ入門
ASP.NETを利用したAJAX開発の応用
WebMatrixに対応した、新しいけど新しくないRazor
初心者でもわかるActive directoryの基本

WebブラウザでC#実行 WebAssemblyの技術