SlideShare a Scribd company logo
Blazor WebAssembly と
Windows Forms での
ロジック共有例
2021-09-25 .NETラボ 勉強会 2021年9月
太田 浩一(@koudenpa)
目次
• 自己・ネタ紹介
• .NETのランタイム
• 実際の共有例
自己・ネタ紹介
自己紹介
• 太田浩一
• @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はあんまり
.NET
• 趣味でやってる
• たまにAzure周りの勉強会をふらついたり
• 今回のネタも趣味のもの
• Visual Studioで快適に開発できるのが好き
ネタ紹介
• Blazor WebAssemblyとWindows Formsでロジックを共有
• Blazor WebAssembly
• Webブラウザで動く
• Windows Forms
• Windowsのデスクトップで動く
• まぁまぁ違う実行環境
• どっちも(概ね)同じDLL
Windows Forms
• ランタイムの図を貼る
• -> しっくりくるのが無かった……
• だいたいこんな感じのはず
Windows OS
Windows Forms
Application
.NET 5 Runtime
Blazor WebAssembly
• https://docs.microsoft.com/ja-jp/dotnet/architecture/blazor-for-web-
forms-developers/hosting-models
ネタ
• まぁまぁ違う実行環境
• ロジック共有の理屈と例
.NETのランタイム
免責
• ふんわり理解
• なので間違ってたりしたらコメントなどで補完してください
.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
.NETのメインストリーム
• 古くからのWindowsでは.NET Framework
• これまでのマルチプラットフォームは.NET Core
• 今後は.NET 5~と考えておけばいい
• これが普段見かける.NET
• この実装とは別に仕様がある
.NETの仕様
• .NET Standard
• https://dotnet.microsoft.com/platform/dotnet-standard
• .NETの実装の共通の仕様
• 先の.NET FrameorkもCoreも.NET 5~もこれを実装している
様々なランタイム
様々なランタイム
• この辺りの情報はいろんなところに書いてある
• https://docs.microsoft.com/ja-jp/dotnet/standard/net-standard
• https://docs.microsoft.com/ja-jp/dotnet/core/introduction
今回話題にするもののランタイム
• Windows Forms
• .NET 5(のWindows版)
• Blazor WebAssembly
• ???
• 先の図に載っていない
Blazor WebAssembly
• https://docs.microsoft.com/ja-
jp/aspnet/core/blazor/?view=aspnetcore-5.0#code-sharing-and-net-
standard
Blazor WebAssembly
• .NET Standard を実装していることに変わりないらしい
共有できるロジックを書くには?
• .NET Standard を対象にすればいいらしい
• ターゲットフレームワーク
メジャーなライブラリの依存関係
• NET Standardの、いずれかのバージョンになっている事が多い
• はず
• NuGetパッケージの依存関係を見てみる
Newtonsoft.Json
• .NET Standard以前をサポート
• 複雑すぎた
昨今はここだけでOK
• > 最も広く使用されているライブ
ラリは、最終的に .NET
Standard 2.0 と .NET 5 の両方
のマルチターゲットになりま
す。 .NET Standard 2.0 をサ
ポートすると、最大のリーチに
なります。
まとめると
• https://docs.microsoft.com/ja-jp/dotnet/standard/net-standard#net-
5-and-net-standard
• 先の引用もここ
• 色々なランタイムでロジック共有を必要としない場合
• 実行に使うランタイム(今後は.NET 5~)をターゲットにする
• 実行時例外のリスクが低い安全な開発を行える
• 共有したい場合
• .NET Standard 2.0をターゲットにする
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 がスローされます。
• 大き目の制限がある
• この制限は外れることはない、はず
• ブラウザのサンドボックスで動くので
実際の共有例
ネタ
• 昔好きだったVisual Basic 5 のゲーム
• 色んなデータを読み込むもの
• GPLv3
• 動機
• Webブラウザでそのデータを見たい
• 発想
• VB->.NETコンバート
• Blazorで動かせば見られるのでは?
結果と展開
• 結果
• Blazorで動いて見られた
• 展開
• どうせならゲーム本体も移植したい
• VB5ならWindows Formsに
リポジトリなど
• https://github.com/7474/SRC
• VB5のゲーム?
• SRC(Simulation RPG Construction)
• スーパーロボット大戦のようなもの
• 色んな創作データを読み込める
• データのビューワ
• 一応動いている
• https://srcv.7474.jp/
• ゲーム自体の移植
• やってる途中
• だれてるので気合入れる意味もあってこの場でしゃべっている
ソリューション構成
• Core
• .NET Standard
• 共有対象ロジックのライブラリ
• Blazor
• .NET 5 (Blazor WebAssembly)
• Form
• .NET 5 (Windows)
• Linter
• .NET 5
• マルチプラットフォームのデータ検証アプリケーション
プロジェクト参照
• Coreライブラリ各アプリケーションから参照
• シンプル
Core
Linter
Form
Blazor
留意点
• 構成自体はシンプルだが留意点はある
• 例えばテスト、というか動作の保証?
テスト
• 趣味プロジェクトであることもあって薄くていい
• しかし、不意に動作しなくなったりするのは嫌
Blazorコンポーネントのテスト
• https://docs.microsoft.com/ja-
jp/aspnet/core/blazor/test?view=aspnetcore-5.0
• 単体テスト
• bUnit
• E2Eテスト
• Selenium など
ここでBlazor WebAssembly留意点
• C#コードとしてのテストでは保障できない部分がある
• >Web ブラウザー内で使用できない API (たとえば、ファイル システムへのア
クセス、ソケットを開く機能、スレッドなど) からは、
PlatformNotSupportedException がスローされます。
• これをフォローするにはE2Eテスト
E2Eテスト例
• テスト実行
• GitHub Actions
• PR時に実行
• ホスティング
• Azure Static Web Apps
• PR毎の環境を構築
• テストライブラリ
• Cypress
• PR毎の環境にアクセスしてテスト
• ビジュアルテスト
• Percy
• テスト時のレンダリング結果に差が無いかチェック
E2Eテスト例: GitHub Actions
• https://docs.github.com/ja/actions
• Publicリポジトリなら無償でCIし放題
• 便利
• これで動かしている
E2Eテスト例: Azure Static Web Apps
• https://docs.microsoft.com/ja-jp/azure/static-web-apps/overview
• Azureの静的サイト公開サービス
• 裏番組? のJAUGでよく見かける
• PRするとそのPRの環境が立つ
• これがお気に入り
• PR毎にE2Eテストに使える
E2Eテスト例: Cypress
• https://www.cypress.io/
• ヘッドレスブラウザを使ってWebサービスをテスト
• 同種のライブラリはいくつもあるが感触はよい
• 最低限をやっている
• ページが表示される
• スナップショットを撮る
E2Eテスト例: Percy
• https://percy.io/
• ビジュアルテストを管理してくれるサービス
• Cypressで撮ったスナップショットを比較できる
E2Eテスト例: 体験
• 最低限派手に壊れていないこと安心感
• SaaSを使えばCI構築の手間も少ない
• なかなかいい
応用
• 今回はWebAssemblyとWindows Formsだった
• 他のパターンの共有も同じ要領でできると思う
• WebAssemblyとBlazor Server
• WebAssemblyとAPIのサーバサイドロジック
• など
面白例
• 多分時間が余っているので
• いくつか面白いなと思った例を紹介
Shift_JIS
• 古いWindows向けアプリケーション
• 当然文字コードはShift_JIS
• 今どきはUTF-8が望ましく……
• .NETにはSystem.Text.Encodingがある
• 変換すればいいじゃん?
• できた
• UTF-8のページにShift_JISなファイル内容が表示されて不思議な気分
スマホとデスクトップの処理速度
• 同じBlazor WebAssemblyのアプリを動かす
• デスクトップの方が全然早い
• シングルスレッドっぽいしこの差は暫く埋まらなさそう
ここで処理時間を表示するようにした環境
• https://icy-coast-005428600-409.eastasia.azurestaticapps.net/titles/
~~
i7-8565U Kirin 970(少し前のハイエンド)
URLは勉強会時のものです
PRが閉じると無効になります
なお見た目が変わったのでテストが落ちる
• PR https://github.com/7474/SRC/pull/409
• 落ちたテストのページ
• 差がOKならApproveするとグリーンに
• 今回はマージしない変更なのでそのまま
まとめ
まとめ
• 今後の.NETは5, 6, 7…だが
• .NET Standardのロジックの可搬性の高さが生きる場面もある
• 非互換APIのテストは工夫したい
• 移植の余地があるプロジェクトのターゲット
• .NET 5ではなくStandardにしておく
• はまる場面もあるのではないかと思う
• Windows FormsでなくてUnityで動かすとか
終わり
• ご清聴ありがとうございました
• よいBlazor WebAssemblyライフを!

More Related Content

What's hot

レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチレガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
増田 亨
 
Migration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjugMigration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjug
Yuji Kubota
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
 
オンプレを少しずつコンテナ化する
オンプレを少しずつコンテナ化するオンプレを少しずつコンテナ化する
オンプレを少しずつコンテナ化する
Kenkichi Okazaki
 
.NETラボ2021年9月 Blazorのカスタム認証を通じてDIの便利さを学ぶ
.NETラボ2021年9月 Blazorのカスタム認証を通じてDIの便利さを学ぶ.NETラボ2021年9月 Blazorのカスタム認証を通じてDIの便利さを学ぶ
.NETラボ2021年9月 Blazorのカスタム認証を通じてDIの便利さを学ぶ
TomomitsuKusaba
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
 
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
C# で Single Page Web アプリを開発できる Blazor ― その魅力C# で Single Page Web アプリを開発できる Blazor ― その魅力
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
Jun-ichi Sakamoto
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
Masahito Zembutsu
 
ゲームエンジンとMVC
ゲームエンジンとMVCゲームエンジンとMVC
ゲームエンジンとMVCAimingStudy
 
よろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだよろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだ
Narami Kiyokura
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
Teppei Sato
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
 
2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門
Asami Abe
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
 
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier_IV
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
Takahiro YAMADA
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
 
Web開発者が始める .NET MAUI Blazor App
Web開発者が始める .NET MAUI Blazor AppWeb開発者が始める .NET MAUI Blazor App
Web開発者が始める .NET MAUI Blazor App
TomomitsuKusaba
 
.NET 7におけるBlazorの新機能
.NET 7におけるBlazorの新機能.NET 7におけるBlazorの新機能
.NET 7におけるBlazorの新機能
TomomitsuKusaba
 

What's hot (20)

レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチレガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
 
Migration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjugMigration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjug
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
 
オンプレを少しずつコンテナ化する
オンプレを少しずつコンテナ化するオンプレを少しずつコンテナ化する
オンプレを少しずつコンテナ化する
 
.NETラボ2021年9月 Blazorのカスタム認証を通じてDIの便利さを学ぶ
.NETラボ2021年9月 Blazorのカスタム認証を通じてDIの便利さを学ぶ.NETラボ2021年9月 Blazorのカスタム認証を通じてDIの便利さを学ぶ
.NETラボ2021年9月 Blazorのカスタム認証を通じてDIの便利さを学ぶ
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
C# で Single Page Web アプリを開発できる Blazor ― その魅力C# で Single Page Web アプリを開発できる Blazor ― その魅力
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
 
ゲームエンジンとMVC
ゲームエンジンとMVCゲームエンジンとMVC
ゲームエンジンとMVC
 
よろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだよろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだ
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
 
2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
Web開発者が始める .NET MAUI Blazor App
Web開発者が始める .NET MAUI Blazor AppWeb開発者が始める .NET MAUI Blazor App
Web開発者が始める .NET MAUI Blazor App
 
.NET 7におけるBlazorの新機能
.NET 7におけるBlazorの新機能.NET 7におけるBlazorの新機能
.NET 7におけるBlazorの新機能
 

Similar to Blazor WebAssembly と Windows Forms でのロジック共有例

趣味でのCosmos DBとの付き合い方
趣味でのCosmos DBとの付き合い方趣味でのCosmos DBとの付き合い方
趣味でのCosmos DBとの付き合い方
Koichi Ota
 
Micronaut on Azure 試してみた
Micronaut on Azure 試してみたMicronaut on Azure 試してみた
Micronaut on Azure 試してみた
拓将 平林
 
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整えるAzure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
Kazumi IWANAGA
 
210630 python
210630 python210630 python
210630 python
Takuya Nishimoto
 
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Kazumi IWANAGA
 
oFの話題が殆ど出ない oF jp Summer Workout
oFの話題が殆ど出ない oF jp Summer WorkoutoFの話題が殆ど出ない oF jp Summer Workout
oFの話題が殆ど出ない oF jp Summer Workout
Tsuubito Ishii
 
HTML5での制作、いつから始める?
HTML5での制作、いつから始める?HTML5での制作、いつから始める?
HTML5での制作、いつから始める?
Fuminori Mori
 
Sql world を支える技術
Sql world を支える技術Sql world を支える技術
Sql world を支える技術
Oda Shinsuke
 
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけねGitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
Naoto TAKAHASHI
 
Type scriptmemo
Type scriptmemoType scriptmemo
Type scriptmemoytanno
 
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Kazumi IWANAGA
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングterurou
 
nameless ある沼にDeepDiveした人のポートフォリオ
nameless ある沼にDeepDiveした人のポートフォリオnameless ある沼にDeepDiveした人のポートフォリオ
nameless ある沼にDeepDiveした人のポートフォリオ
c-mitsuba
 
Net fringejp2016
Net fringejp2016Net fringejp2016
Net fringejp2016
Yusuke Fujiwara
 
SaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみる
SaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみるSaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみる
SaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみる
Masashi Murakami
 
WEB TOUCH MEETING #52
WEB TOUCH MEETING #52WEB TOUCH MEETING #52
WEB TOUCH MEETING #52
Tao Sasaki
 
PyconJP2017 Kivyによるアプリケーション開発のすすめ
PyconJP2017 Kivyによるアプリケーション開発のすすめPyconJP2017 Kivyによるアプリケーション開発のすすめ
PyconJP2017 Kivyによるアプリケーション開発のすすめ
Jun Okazaki
 
アカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsugアカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsug
aktsk
 
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法 仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法
Hideo Takahashi
 
JavaScript on GitHub (#kyotojs)
JavaScript on GitHub  (#kyotojs)JavaScript on GitHub  (#kyotojs)
JavaScript on GitHub (#kyotojs)y_uuki
 

Similar to Blazor WebAssembly と Windows Forms でのロジック共有例 (20)

趣味でのCosmos DBとの付き合い方
趣味でのCosmos DBとの付き合い方趣味でのCosmos DBとの付き合い方
趣味でのCosmos DBとの付き合い方
 
Micronaut on Azure 試してみた
Micronaut on Azure 試してみたMicronaut on Azure 試してみた
Micronaut on Azure 試してみた
 
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整えるAzure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
 
210630 python
210630 python210630 python
210630 python
 
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
 
oFの話題が殆ど出ない oF jp Summer Workout
oFの話題が殆ど出ない oF jp Summer WorkoutoFの話題が殆ど出ない oF jp Summer Workout
oFの話題が殆ど出ない oF jp Summer Workout
 
HTML5での制作、いつから始める?
HTML5での制作、いつから始める?HTML5での制作、いつから始める?
HTML5での制作、いつから始める?
 
Sql world を支える技術
Sql world を支える技術Sql world を支える技術
Sql world を支える技術
 
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけねGitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
 
Type scriptmemo
Type scriptmemoType scriptmemo
Type scriptmemo
 
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
nameless ある沼にDeepDiveした人のポートフォリオ
nameless ある沼にDeepDiveした人のポートフォリオnameless ある沼にDeepDiveした人のポートフォリオ
nameless ある沼にDeepDiveした人のポートフォリオ
 
Net fringejp2016
Net fringejp2016Net fringejp2016
Net fringejp2016
 
SaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみる
SaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみるSaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみる
SaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみる
 
WEB TOUCH MEETING #52
WEB TOUCH MEETING #52WEB TOUCH MEETING #52
WEB TOUCH MEETING #52
 
PyconJP2017 Kivyによるアプリケーション開発のすすめ
PyconJP2017 Kivyによるアプリケーション開発のすすめPyconJP2017 Kivyによるアプリケーション開発のすすめ
PyconJP2017 Kivyによるアプリケーション開発のすすめ
 
アカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsugアカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsug
 
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法 仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法
 
JavaScript on GitHub (#kyotojs)
JavaScript on GitHub  (#kyotojs)JavaScript on GitHub  (#kyotojs)
JavaScript on GitHub (#kyotojs)
 

More from Koichi Ota

祝​ Azureインテグレーションに​ App Service追加
祝​ Azureインテグレーションに​ App Service追加祝​ Azureインテグレーションに​ App Service追加
祝​ Azureインテグレーションに​ App Service追加
Koichi Ota
 
チームのBIや可視化強化に Redashはどうかと 雑談した前後の話
チームのBIや可視化強化に Redashはどうかと 雑談した前後の話チームのBIや可視化強化に Redashはどうかと 雑談した前後の話
チームのBIや可視化強化に Redashはどうかと 雑談した前後の話
Koichi Ota
 
カスタムNodeのススメ
カスタムNodeのススメカスタムNodeのススメ
カスタムNodeのススメ
Koichi Ota
 
続・Freeプランで緩く監視させてもらってる話など
続・Freeプランで緩く監視させてもらってる話など続・Freeプランで緩く監視させてもらってる話など
続・Freeプランで緩く監視させてもらってる話など
Koichi Ota
 
ソフトウェア開発が好きだ
ソフトウェア開発が好きだソフトウェア開発が好きだ
ソフトウェア開発が好きだ
Koichi Ota
 
IoT Hub と Azure Funxtions とかで片桐ヒマボタンを作った話
IoT Hub と Azure Funxtions とかで片桐ヒマボタンを作った話IoT Hub と Azure Funxtions とかで片桐ヒマボタンを作った話
IoT Hub と Azure Funxtions とかで片桐ヒマボタンを作った話
Koichi Ota
 
Raspberry pi は raspbian だけのものじゃない
Raspberry pi は raspbian だけのものじゃないRaspberry pi は raspbian だけのものじゃない
Raspberry pi は raspbian だけのものじゃない
Koichi Ota
 
My First Monitoring With Mackerel
My First Monitoring With MackerelMy First Monitoring With Mackerel
My First Monitoring With Mackerel
Koichi Ota
 

More from Koichi Ota (8)

祝​ Azureインテグレーションに​ App Service追加
祝​ Azureインテグレーションに​ App Service追加祝​ Azureインテグレーションに​ App Service追加
祝​ Azureインテグレーションに​ App Service追加
 
チームのBIや可視化強化に Redashはどうかと 雑談した前後の話
チームのBIや可視化強化に Redashはどうかと 雑談した前後の話チームのBIや可視化強化に Redashはどうかと 雑談した前後の話
チームのBIや可視化強化に Redashはどうかと 雑談した前後の話
 
カスタムNodeのススメ
カスタムNodeのススメカスタムNodeのススメ
カスタムNodeのススメ
 
続・Freeプランで緩く監視させてもらってる話など
続・Freeプランで緩く監視させてもらってる話など続・Freeプランで緩く監視させてもらってる話など
続・Freeプランで緩く監視させてもらってる話など
 
ソフトウェア開発が好きだ
ソフトウェア開発が好きだソフトウェア開発が好きだ
ソフトウェア開発が好きだ
 
IoT Hub と Azure Funxtions とかで片桐ヒマボタンを作った話
IoT Hub と Azure Funxtions とかで片桐ヒマボタンを作った話IoT Hub と Azure Funxtions とかで片桐ヒマボタンを作った話
IoT Hub と Azure Funxtions とかで片桐ヒマボタンを作った話
 
Raspberry pi は raspbian だけのものじゃない
Raspberry pi は raspbian だけのものじゃないRaspberry pi は raspbian だけのものじゃない
Raspberry pi は raspbian だけのものじゃない
 
My First Monitoring With Mackerel
My First Monitoring With MackerelMy First Monitoring With Mackerel
My First Monitoring With Mackerel
 

Blazor WebAssembly と Windows Forms でのロジック共有例

Editor's Notes

  1. メモ.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