Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
KO
Uploaded by
Koichi Ota
PPTX, PDF
994 views
Blazor WebAssembly と Windows Forms でのロジック共有例
.NETのランタイムの種類についてのさわりと、Blazor WebAssembly と Windows Forms でロジックを共有している例を話します。
Internet
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 51
2
/ 51
3
/ 51
4
/ 51
5
/ 51
6
/ 51
7
/ 51
8
/ 51
9
/ 51
10
/ 51
11
/ 51
12
/ 51
13
/ 51
14
/ 51
15
/ 51
16
/ 51
17
/ 51
18
/ 51
19
/ 51
20
/ 51
21
/ 51
22
/ 51
23
/ 51
24
/ 51
25
/ 51
26
/ 51
27
/ 51
28
/ 51
29
/ 51
30
/ 51
31
/ 51
32
/ 51
33
/ 51
34
/ 51
35
/ 51
36
/ 51
37
/ 51
38
/ 51
39
/ 51
40
/ 51
41
/ 51
42
/ 51
43
/ 51
44
/ 51
45
/ 51
46
/ 51
47
/ 51
48
/ 51
49
/ 51
50
/ 51
51
/ 51
More Related Content
PDF
Docker Compose 徹底解説
by
Masahito Zembutsu
PPTX
生成系ニューラルネットワークまとめ Summary of Generative Neural Network
by
Youichiro Miyake
PPTX
みんなが知らない pytorch-pfn-extras
by
Takuji Tahara
PPTX
Apache Avro vs Protocol Buffers
by
Seiya Mizuno
PDF
【DL輪読会】ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders
by
Deep Learning JP
PPTX
STNSサーバーを書いてみた
by
Yoshinori Teraoka
PPTX
凡人の凡人による凡人のためのデザインパターン第一幕 Public
by
bonjin6770 Kurosawa
PDF
分かったうえではじめるCI/CD
by
Yuta Matsumura
Docker Compose 徹底解説
by
Masahito Zembutsu
生成系ニューラルネットワークまとめ Summary of Generative Neural Network
by
Youichiro Miyake
みんなが知らない pytorch-pfn-extras
by
Takuji Tahara
Apache Avro vs Protocol Buffers
by
Seiya Mizuno
【DL輪読会】ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders
by
Deep Learning JP
STNSサーバーを書いてみた
by
Yoshinori Teraoka
凡人の凡人による凡人のためのデザインパターン第一幕 Public
by
bonjin6770 Kurosawa
分かったうえではじめるCI/CD
by
Yuta Matsumura
What's hot
PDF
組み込み関数(intrinsic)によるSIMD入門
by
Norishige Fukushima
PDF
私にとってのテスト
by
Takuto Wada
PDF
アジャイルな見積りと計画づくり1
by
Arata Fujimura
PPTX
MicroPythonのCモジュールを作ってみる
by
Kenta IDA
PDF
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
by
Fixstars Corporation
PDF
Nervesが開拓する「ElixirでIoT」の新世界
by
Hideki Takase
PDF
40歳過ぎてもエンジニアでいるためにやっていること
by
onozaty
PDF
Docker道場オンライン#1 Docker基礎概念と用語の理解
by
Masahito Zembutsu
PDF
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
PPTX
テストコードの DRY と DAMP
by
Yusuke Kagata
PDF
ドメイン駆動設計サンプルコードの徹底解説
by
増田 亨
PDF
チームメイトのためにdocstringを書こう! pyconjp2019
by
cocodrips
PDF
何となく勉強した気分になれるパーサ入門
by
masayoshi takahashi
PPTX
AKS と ACI を組み合わせて使ってみた
by
Hideaki Aoyagi
PPTX
FPGAを用いたフルパイプラインによるバイラテラルフィルタの高速化手法
by
Nobuho Hashimoto
PDF
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
by
Google Cloud Platform - Japan
PDF
ICML2021の連合学習の論文
by
Katsuya Ito
PPTX
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
by
NTT DATA Technology & Innovation
PPTX
エラーハンドリング
by
道化師 堂華
PPTX
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
by
NTT DATA Technology & Innovation
組み込み関数(intrinsic)によるSIMD入門
by
Norishige Fukushima
私にとってのテスト
by
Takuto Wada
アジャイルな見積りと計画づくり1
by
Arata Fujimura
MicroPythonのCモジュールを作ってみる
by
Kenta IDA
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
by
Fixstars Corporation
Nervesが開拓する「ElixirでIoT」の新世界
by
Hideki Takase
40歳過ぎてもエンジニアでいるためにやっていること
by
onozaty
Docker道場オンライン#1 Docker基礎概念と用語の理解
by
Masahito Zembutsu
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
テストコードの DRY と DAMP
by
Yusuke Kagata
ドメイン駆動設計サンプルコードの徹底解説
by
増田 亨
チームメイトのためにdocstringを書こう! pyconjp2019
by
cocodrips
何となく勉強した気分になれるパーサ入門
by
masayoshi takahashi
AKS と ACI を組み合わせて使ってみた
by
Hideaki Aoyagi
FPGAを用いたフルパイプラインによるバイラテラルフィルタの高速化手法
by
Nobuho Hashimoto
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
by
Google Cloud Platform - Japan
ICML2021の連合学習の論文
by
Katsuya Ito
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
by
NTT DATA Technology & Innovation
エラーハンドリング
by
道化師 堂華
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
by
NTT DATA Technology & Innovation
Similar to Blazor WebAssembly と Windows Forms でのロジック共有例
PDF
C# で SPA を作る BLAZOR WEBASSEMBLY の進化 - そしてその先へ
by
Jun-ichi Sakamoto
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
by
Shotaro Suzuki
PPTX
7 つの Blazor
by
m ishizaki
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
by
Shotaro Suzuki
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
by
Shotaro Suzuki
PPTX
Blazor でアプリを作ろう! ~テンプレートインストールから最初のデバッグ実行まで~
by
m ishizaki
PDF
New Features of DotNet 6 Blazor WASM
by
Shotaro Suzuki
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
by
Shotaro Suzuki
PPTX
モノづくりBlazor勉強会1回目資料_Blazorについて.pptx
by
tkeproject
PPTX
burikaigi2023
by
Tatsuya Ishikawa
PPTX
.NET Core 3.0 で Blazor を使用したフルスタック C# Web アプリの構築
by
Joni
PDF
.NET Framework アプリケーションの NET 5 への 移行を考える
by
Tomohiro Suzuki
PDF
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
by
Jun-ichi Sakamoto
PDF
Static Web AppsとBlazor WebAssemblyのすすめ
by
TomomitsuKusaba
PPTX
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
by
Yamamoto Reki
PDF
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
by
Akira Inoue
PDF
WebAssemblyが切り拓くフロントエンドWeb開発の未来
by
Jun-ichi Sakamoto
PDF
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
by
Shotaro Suzuki
PPTX
Blazor Web Assembly (C#) を触ってみた
by
Naito Oshima
PDF
C# で Single Page Web アプリを開発できる Blazor ― その魅力
by
Jun-ichi Sakamoto
C# で SPA を作る BLAZOR WEBASSEMBLY の進化 - そしてその先へ
by
Jun-ichi Sakamoto
Application development with c#, .net 6, blazor web assembly, asp.net web api...
by
Shotaro Suzuki
7 つの Blazor
by
m ishizaki
Application development with c#, .net 6, blazor web assembly, asp.net web api...
by
Shotaro Suzuki
Application development with c#, .net 6, blazor web assembly, asp.net web api...
by
Shotaro Suzuki
Blazor でアプリを作ろう! ~テンプレートインストールから最初のデバッグ実行まで~
by
m ishizaki
New Features of DotNet 6 Blazor WASM
by
Shotaro Suzuki
Application development with c#, .net 6, blazor web assembly, asp.net web api...
by
Shotaro Suzuki
モノづくりBlazor勉強会1回目資料_Blazorについて.pptx
by
tkeproject
burikaigi2023
by
Tatsuya Ishikawa
.NET Core 3.0 で Blazor を使用したフルスタック C# Web アプリの構築
by
Joni
.NET Framework アプリケーションの NET 5 への 移行を考える
by
Tomohiro Suzuki
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
by
Jun-ichi Sakamoto
Static Web AppsとBlazor WebAssemblyのすすめ
by
TomomitsuKusaba
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
by
Yamamoto Reki
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
by
Akira Inoue
WebAssemblyが切り拓くフロントエンドWeb開発の未来
by
Jun-ichi Sakamoto
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
by
Shotaro Suzuki
Blazor Web Assembly (C#) を触ってみた
by
Naito Oshima
C# で Single Page Web アプリを開発できる Blazor ― その魅力
by
Jun-ichi Sakamoto
More from Koichi Ota
PPTX
趣味でのCosmos DBとの付き合い方
by
Koichi Ota
PPTX
祝 Azureインテグレーションに App Service追加
by
Koichi Ota
PDF
チームのBIや可視化強化に Redashはどうかと 雑談した前後の話
by
Koichi Ota
PDF
カスタムNodeのススメ
by
Koichi Ota
PPTX
続・Freeプランで緩く監視させてもらってる話など
by
Koichi Ota
PPTX
ソフトウェア開発が好きだ
by
Koichi Ota
PPTX
IoT Hub と Azure Funxtions とかで片桐ヒマボタンを作った話
by
Koichi Ota
PPTX
Raspberry pi は raspbian だけのものじゃない
by
Koichi Ota
PPTX
My First Monitoring With Mackerel
by
Koichi Ota
趣味でのCosmos DBとの付き合い方
by
Koichi Ota
祝 Azureインテグレーションに App Service追加
by
Koichi Ota
チームのBIや可視化強化に Redashはどうかと 雑談した前後の話
by
Koichi Ota
カスタムNodeのススメ
by
Koichi Ota
続・Freeプランで緩く監視させてもらってる話など
by
Koichi Ota
ソフトウェア開発が好きだ
by
Koichi Ota
IoT Hub と Azure Funxtions とかで片桐ヒマボタンを作った話
by
Koichi Ota
Raspberry pi は raspbian だけのものじゃない
by
Koichi Ota
My First Monitoring With Mackerel
by
Koichi Ota
Blazor WebAssembly と Windows Forms でのロジック共有例
1.
Blazor WebAssembly と Windows
Forms での ロジック共有例 2021-09-25 .NETラボ 勉強会 2021年9月 太田 浩一(@koudenpa)
2.
目次 • 自己・ネタ紹介 • .NETのランタイム •
実際の共有例
3.
自己・ネタ紹介
4.
自己紹介 • 太田浩一 • @koudenpa
Twitterなど https://twitter.com/koudenpa • @7474 GitHubなど https://github.com/7474 • 株式会社はてな • Webアプリケーションエンジニア • 月並みですがエンジニア募集中 • https://hatenacorp.jp/recruit • 仕事 • Perl、TypeScript、Go、YAML、HCL、AWS辺りが主 • C#、Azureはあんまり
5.
.NET • 趣味でやってる • たまにAzure周りの勉強会をふらついたり •
今回のネタも趣味のもの • Visual Studioで快適に開発できるのが好き
6.
ネタ紹介 • Blazor WebAssemblyとWindows
Formsでロジックを共有 • Blazor WebAssembly • Webブラウザで動く • Windows Forms • Windowsのデスクトップで動く • まぁまぁ違う実行環境 • どっちも(概ね)同じDLL
7.
Windows Forms • ランタイムの図を貼る •
-> しっくりくるのが無かった…… • だいたいこんな感じのはず Windows OS Windows Forms Application .NET 5 Runtime
8.
Blazor WebAssembly • https://docs.microsoft.com/ja-jp/dotnet/architecture/blazor-for-web- forms-developers/hosting-models
9.
ネタ • まぁまぁ違う実行環境 • ロジック共有の理屈と例
10.
.NETのランタイム
11.
免責 • ふんわり理解 • なので間違ってたりしたらコメントなどで補完してください
12.
.NETのメインストリーム • .NET Framework
4.8, .NET Core 3.1 -> .NET 5 -> .NET 6 … .NET Framework 4.8 .NET Core 3.1 .NET 5 .NET 6 .NET Core 1.0 .NET Framework 1.0
13.
.NETのメインストリーム • 古くからのWindowsでは.NET Framework •
これまでのマルチプラットフォームは.NET Core • 今後は.NET 5~と考えておけばいい • これが普段見かける.NET • この実装とは別に仕様がある
14.
.NETの仕様 • .NET Standard •
https://dotnet.microsoft.com/platform/dotnet-standard • .NETの実装の共通の仕様 • 先の.NET FrameorkもCoreも.NET 5~もこれを実装している
15.
様々なランタイム
16.
様々なランタイム • この辺りの情報はいろんなところに書いてある • https://docs.microsoft.com/ja-jp/dotnet/standard/net-standard •
https://docs.microsoft.com/ja-jp/dotnet/core/introduction
17.
今回話題にするもののランタイム • Windows Forms •
.NET 5(のWindows版) • Blazor WebAssembly • ??? • 先の図に載っていない
18.
Blazor WebAssembly • https://docs.microsoft.com/ja- jp/aspnet/core/blazor/?view=aspnetcore-5.0#code-sharing-and-net- standard
19.
Blazor WebAssembly • .NET
Standard を実装していることに変わりないらしい
20.
共有できるロジックを書くには? • .NET Standard
を対象にすればいいらしい • ターゲットフレームワーク
21.
メジャーなライブラリの依存関係 • NET Standardの、いずれかのバージョンになっている事が多い •
はず • NuGetパッケージの依存関係を見てみる
22.
Newtonsoft.Json • .NET Standard以前をサポート •
複雑すぎた
23.
昨今はここだけでOK • > 最も広く使用されているライブ ラリは、最終的に
.NET Standard 2.0 と .NET 5 の両方 のマルチターゲットになりま す。 .NET Standard 2.0 をサ ポートすると、最大のリーチに なります。
24.
まとめると • https://docs.microsoft.com/ja-jp/dotnet/standard/net-standard#net- 5-and-net-standard • 先の引用もここ •
色々なランタイムでロジック共有を必要としない場合 • 実行に使うランタイム(今後は.NET 5~)をターゲットにする • 実行時例外のリスクが低い安全な開発を行える • 共有したい場合 • .NET Standard 2.0をターゲットにする
25.
Blazor WebAssembly留意点 • https://docs.microsoft.com/ja- jp/aspnet/core/blazor/?WT.mc_id=dotnet-35129- website&view=aspnetcore-5.0#code-sharing-and-net-standard •
>Web ブラウザー内で使用できない API (たとえば、ファイル システムへのア クセス、ソケットを開く機能、スレッドなど) からは、 PlatformNotSupportedException がスローされます。 • 大き目の制限がある • この制限は外れることはない、はず • ブラウザのサンドボックスで動くので
26.
実際の共有例
27.
ネタ • 昔好きだったVisual Basic
5 のゲーム • 色んなデータを読み込むもの • GPLv3 • 動機 • Webブラウザでそのデータを見たい • 発想 • VB->.NETコンバート • Blazorで動かせば見られるのでは?
28.
結果と展開 • 結果 • Blazorで動いて見られた •
展開 • どうせならゲーム本体も移植したい • VB5ならWindows Formsに
29.
リポジトリなど • https://github.com/7474/SRC • VB5のゲーム? •
SRC(Simulation RPG Construction) • スーパーロボット大戦のようなもの • 色んな創作データを読み込める • データのビューワ • 一応動いている • https://srcv.7474.jp/ • ゲーム自体の移植 • やってる途中 • だれてるので気合入れる意味もあってこの場でしゃべっている
30.
ソリューション構成 • Core • .NET
Standard • 共有対象ロジックのライブラリ • Blazor • .NET 5 (Blazor WebAssembly) • Form • .NET 5 (Windows) • Linter • .NET 5 • マルチプラットフォームのデータ検証アプリケーション
31.
プロジェクト参照 • Coreライブラリ各アプリケーションから参照 • シンプル Core Linter Form Blazor
32.
留意点 • 構成自体はシンプルだが留意点はある • 例えばテスト、というか動作の保証?
33.
テスト • 趣味プロジェクトであることもあって薄くていい • しかし、不意に動作しなくなったりするのは嫌
34.
Blazorコンポーネントのテスト • https://docs.microsoft.com/ja- jp/aspnet/core/blazor/test?view=aspnetcore-5.0 • 単体テスト •
bUnit • E2Eテスト • Selenium など
35.
ここでBlazor WebAssembly留意点 • C#コードとしてのテストでは保障できない部分がある •
>Web ブラウザー内で使用できない API (たとえば、ファイル システムへのア クセス、ソケットを開く機能、スレッドなど) からは、 PlatformNotSupportedException がスローされます。 • これをフォローするにはE2Eテスト
36.
E2Eテスト例 • テスト実行 • GitHub
Actions • PR時に実行 • ホスティング • Azure Static Web Apps • PR毎の環境を構築 • テストライブラリ • Cypress • PR毎の環境にアクセスしてテスト • ビジュアルテスト • Percy • テスト時のレンダリング結果に差が無いかチェック
37.
E2Eテスト例: GitHub Actions •
https://docs.github.com/ja/actions • Publicリポジトリなら無償でCIし放題 • 便利 • これで動かしている
38.
E2Eテスト例: Azure Static
Web Apps • https://docs.microsoft.com/ja-jp/azure/static-web-apps/overview • Azureの静的サイト公開サービス • 裏番組? のJAUGでよく見かける • PRするとそのPRの環境が立つ • これがお気に入り • PR毎にE2Eテストに使える
39.
E2Eテスト例: Cypress • https://www.cypress.io/ •
ヘッドレスブラウザを使ってWebサービスをテスト • 同種のライブラリはいくつもあるが感触はよい • 最低限をやっている • ページが表示される • スナップショットを撮る
40.
E2Eテスト例: Percy • https://percy.io/ •
ビジュアルテストを管理してくれるサービス • Cypressで撮ったスナップショットを比較できる
41.
E2Eテスト例: 体験 • 最低限派手に壊れていないこと安心感 •
SaaSを使えばCI構築の手間も少ない • なかなかいい
42.
応用 • 今回はWebAssemblyとWindows Formsだった •
他のパターンの共有も同じ要領でできると思う • WebAssemblyとBlazor Server • WebAssemblyとAPIのサーバサイドロジック • など
43.
面白例 • 多分時間が余っているので • いくつか面白いなと思った例を紹介
44.
Shift_JIS • 古いWindows向けアプリケーション • 当然文字コードはShift_JIS •
今どきはUTF-8が望ましく…… • .NETにはSystem.Text.Encodingがある • 変換すればいいじゃん? • できた • UTF-8のページにShift_JISなファイル内容が表示されて不思議な気分
46.
スマホとデスクトップの処理速度 • 同じBlazor WebAssemblyのアプリを動かす •
デスクトップの方が全然早い • シングルスレッドっぽいしこの差は暫く埋まらなさそう
47.
ここで処理時間を表示するようにした環境 • https://icy-coast-005428600-409.eastasia.azurestaticapps.net/titles/ ~~ i7-8565U Kirin
970(少し前のハイエンド) URLは勉強会時のものです PRが閉じると無効になります
48.
なお見た目が変わったのでテストが落ちる • PR https://github.com/7474/SRC/pull/409 •
落ちたテストのページ • 差がOKならApproveするとグリーンに • 今回はマージしない変更なのでそのまま
49.
まとめ
50.
まとめ • 今後の.NETは5, 6,
7…だが • .NET Standardのロジックの可搬性の高さが生きる場面もある • 非互換APIのテストは工夫したい • 移植の余地があるプロジェクトのターゲット • .NET 5ではなくStandardにしておく • はまる場面もあるのではないかと思う • Windows FormsでなくてUnityで動かすとか
51.
終わり • ご清聴ありがとうございました • よいBlazor
WebAssemblyライフを!
Editor's Notes
#20
メモ.NET 5 https://docs.microsoft.com/ja-jp/aspnet/core/blazor/?view=aspnetcore-5.0 https://docs.microsoft.com/ja-jp/aspnet/core/blazor/hosting-models?view=aspnetcore-5.0 https://docs.microsoft.com/ja-jp/aspnet/core/blazor/?view=aspnetcore-5.0 https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor
Download