Submit Search
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
Download as PPTX, PDF
2 likes
4,786 views
Y
Yamamoto Reki
Blazor0.6.0が出てきたので、どのくらい使えるのかを調べてみました。2018年10月現時点の状態なので、時間が経てばもっと便利になっている可能性はあります。
Technology
Related topics:
ASP.NET Core
Read more
1 of 41
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
More Related Content
PPTX
最速C# 7.x
Yamamoto Reki
PPTX
C#で速度を極めるいろは
Core Concept Technologies
PDF
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
PDF
Inside FastEnum
Takaaki Suzuki
PDF
async/await不要論
bleis tift
PPTX
C# 7.2 with .NET Core 2.1
信之 岩永
PPTX
.NET Core 2.x 時代の C#
信之 岩永
PDF
C++でCプリプロセッサを作ったり速くしたりしたお話
Kinuko Yasuda
最速C# 7.x
Yamamoto Reki
C#で速度を極めるいろは
Core Concept Technologies
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
Inside FastEnum
Takaaki Suzuki
async/await不要論
bleis tift
C# 7.2 with .NET Core 2.1
信之 岩永
.NET Core 2.x 時代の C#
信之 岩永
C++でCプリプロセッサを作ったり速くしたりしたお話
Kinuko Yasuda
What's hot
(20)
PDF
今からでも遅くないC#開発
Kazunori Hamamoto
PDF
SignalRブートキャンプ
Kouji Matsui
PDF
【Unite Tokyo 2019】Understanding C# Struct All Things
UnityTechnologiesJapan002
PDF
Bluetoothでgo!
Kouji Matsui
PDF
.NET Coreから概観する.NETのOSSへの取り組み
Kouji Matsui
PPTX
C# 8.0 Preview in Visual Studio 2019 (16.0)
信之 岩永
PDF
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
hecomi
PDF
Async DeepDive basics
Kouji Matsui
PPTX
C# 8.0 非同期ストリーム
信之 岩永
PPTX
C#/.NETがやっていること 第二版
信之 岩永
PDF
Final LINQ extensions III
Kouji Matsui
PDF
良い?悪い?コードコメントの書き方
Shigenori Sagawa
PDF
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Shinnosuke Tokuda
PDF
これからの「async/await」の話をしよう
Kouji Matsui
PDF
Final LINQ Extensions
Kouji Matsui
PDF
hooks riverpod + state notifier + freezed でのドメイン駆動設計
Shinnosuke Tokuda
PDF
The History of Reactive Extensions
Yoshifumi Kawai
PDF
linq.js - Linq to Objects for JavaScript
Yoshifumi Kawai
PPTX
C#や.NET Frameworkがやっていること
信之 岩永
PDF
An Internal of LINQ to Objects
Yoshifumi Kawai
今からでも遅くないC#開発
Kazunori Hamamoto
SignalRブートキャンプ
Kouji Matsui
【Unite Tokyo 2019】Understanding C# Struct All Things
UnityTechnologiesJapan002
Bluetoothでgo!
Kouji Matsui
.NET Coreから概観する.NETのOSSへの取り組み
Kouji Matsui
C# 8.0 Preview in Visual Studio 2019 (16.0)
信之 岩永
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
hecomi
Async DeepDive basics
Kouji Matsui
C# 8.0 非同期ストリーム
信之 岩永
C#/.NETがやっていること 第二版
信之 岩永
Final LINQ extensions III
Kouji Matsui
良い?悪い?コードコメントの書き方
Shigenori Sagawa
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Shinnosuke Tokuda
これからの「async/await」の話をしよう
Kouji Matsui
Final LINQ Extensions
Kouji Matsui
hooks riverpod + state notifier + freezed でのドメイン駆動設計
Shinnosuke Tokuda
The History of Reactive Extensions
Yoshifumi Kawai
linq.js - Linq to Objects for JavaScript
Yoshifumi Kawai
C#や.NET Frameworkがやっていること
信之 岩永
An Internal of LINQ to Objects
Yoshifumi Kawai
Ad
Similar to Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
(20)
PDF
Blazor 触ってみた
Oda Shinsuke
PPTX
Blazor Web Assembly (C#) を触ってみた
Naito Oshima
PDF
C# で Single Page Web アプリを開発できる Blazor ― その魅力
Jun-ichi Sakamoto
PDF
Mvc conf session_2_shibamura
Hiroshi Okunushi
PDF
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
Jun-ichi Sakamoto
PDF
New Features of DotNet 6 Blazor WASM
Shotaro Suzuki
PDF
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
PDF
Riotでサーバレスにした話
Hiroyuki Hara
PPTX
モノづくりBlazor勉強会1回目資料_Blazorについて.pptx
tkeproject
PPTX
C# CloudScript Azure Functions との連携
YutoNishine
PPTX
C++ AMPを使ってみよう
Osamu Masutani
PDF
7/7 WordBench kobe dreamweaver seminar
Atushi Sugiyama
PDF
C・C++用のコードカバレッジツールを自作してみた話
simotin13 Miyazaki
PDF
ASP.NETの進化とASP.NET Core Blazorの凄さ
Sho Okada
PDF
141115 making web site
Himi Sato
PPTX
(ゲームじゃない方の)switchで遊びたい話
Masanori Masui
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
ODP
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
PPTX
LambdaでHello, World(2017/07/21 サーバレスアーキテクチャ勉強会)
Kousuke Ishikawa
PPTX
20141017 introduce razor
do_aki
Blazor 触ってみた
Oda Shinsuke
Blazor Web Assembly (C#) を触ってみた
Naito Oshima
C# で Single Page Web アプリを開発できる Blazor ― その魅力
Jun-ichi Sakamoto
Mvc conf session_2_shibamura
Hiroshi Okunushi
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
Jun-ichi Sakamoto
New Features of DotNet 6 Blazor WASM
Shotaro Suzuki
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
Riotでサーバレスにした話
Hiroyuki Hara
モノづくりBlazor勉強会1回目資料_Blazorについて.pptx
tkeproject
C# CloudScript Azure Functions との連携
YutoNishine
C++ AMPを使ってみよう
Osamu Masutani
7/7 WordBench kobe dreamweaver seminar
Atushi Sugiyama
C・C++用のコードカバレッジツールを自作してみた話
simotin13 Miyazaki
ASP.NETの進化とASP.NET Core Blazorの凄さ
Sho Okada
141115 making web site
Himi Sato
(ゲームじゃない方の)switchで遊びたい話
Masanori Masui
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
LambdaでHello, World(2017/07/21 サーバレスアーキテクチャ勉強会)
Kousuke Ishikawa
20141017 introduce razor
do_aki
Ad
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
1.
C#勉強会 2018/10 山本礼貴
2.
入門編 Blazor基礎知識
開発環境を作ろう プロジェクトを作ろう メリットとデメリット 実践編 最近書いたコード 世間の取り組み まとめ(妄想含む) アジェンダ
3.
入門編
4.
Blazor基礎知識 なんで使ってみたいと思ったか
5.
名称由来:Browser +
Razor = Blazor なんでLなのかは不明 Razor構文 は html の中にC#の式/構文を書くことができる ASP.NET(Core)のhtmlのサーバーサイドの拡張 (拡張子: cshtml ← C# + html) vbhtmlでVBも書けます 旧いASP.NETのぐちゃぐちゃな構文よりは好まれている(私見) <% ... %> でタグ内にC#書くよりは、 @ 1文字の方が良いよね Blazorって何?
6.
× C#のコンパイラー
× C#→JavaScriptへのトランスレーター ○ ブラウザー(Web Assembly)上で動くNET CLR環境 IE以外の最新ブラウザでは動く(asm.jsを使えばIEでも動くかもという憶測 があるが未確認) .NET Core用にビルドしたDLLを、そのまま参照/実行できる Ex) EF.NET Core とかNuGetしてそのまま使える 実行環境には何もインストールしないで良い(Progressive Web Application とかに向いていそう) 最新のC#をそのまま使える(当然ながらVB/F#も大丈夫のはず) Blazorの仕組み
7.
Blazorは画面の制御がある程度できる WebAssemblyはDOMや各APIに触れないのでは?
BlazorのフレームワークがDOMとの間で仲立ちするJavaScriptを持っている ソースコード的には見えないところにある 非同期処理などを使うと、画面への反映を自動的にやってくれる 同期的に書き換えた時は画面の変更を通知するメソッドを呼ぶ Blazorの仕組み
8.
ジェネリックcshtmlが書ける XAMLみたいにDataTemplateっぽくできる(ただしC#でゴリゴリ)
htmlにデータバインディングできる async /await できる ラムダ式も全くそのままC#として使える ボタンのOnClickとかをC#のActionでペタペタ貼り付け可能(Indexを付与 した id とか名前とか付けなくても使えるのは結構良い) ただのモジュールではなくBlazor自体を1つのフレームワークと呼んで も良いレベルではなかろうか 只者ではない
9.
開発環境を作ろう 最低限のものが最大限…
10.
NET Core
2.1 SDKの最新版をインストール SDKの詳細なバージョン番号がビルドに必要 なことがある 2.1.403 とか。(表示する方法はあるので忘れても大丈夫) 環境構築(SDK)
11.
ASP.NET Core
Blazor Language Services プロジェクトテンプレート インテリセンス 環境構築(VS2017(ver15.8)以降)
12.
プロジェクトを作ろう 多くの人がハマる
13.
ASP.NET Core
Webアプリケーションを新規作成 プロジェクト名を入力してOK プロジェクトを作ろう
14.
Blazor(ASP.NET Core
hosted)を選択 次の選択 SDKバージョンは ここにも表示される
15.
プロジェクトテンプレートでは3つのプロジェクトに分かれる *.Client
cshtml(View)群 C#記述部はクライアントサイドでWebAssenbly化して動作する *.Server Controller群 ASP.NETを使っている人ならおなじみのもの *.Shared 両方で共有するDTO/Entityクラス群 JSONシリアライズ可能なら(循環参照などが無いなら)Entityのクラスをそのまま配 置してもOK (2重管理しないでいいのは素晴らしい) Blazorのプロジェクト構造
16.
まだ正式版じゃないので、環境によってビルドがフリーズすることがあ ります。それを回避するために、*.Server.csproj を以下のように変更し ます。 フリーズしない人はほっといて大丈夫。 これをやると直る人と直らない人がいるのでダメだったら諦め(そのう ち直るでしょう) プロジェクトを少し変更(1)
17.
global.json に
.NET Core SDK のバージョンを書き込みます。 これも、何もせずに動いたらほっといて大丈夫 プロジェクトを少し変更(2)
18.
F5(ビルド+デバッグ実行) ASP.NET Coreが動いて WebAssemblyが動いて ちゃんと動く画面ができる JavaScriptは一行も書いてない
19.
BlazorStrap NuGetから
*.Client プロジェクトに追加しよう Bootstrap 4のラッパー群 BootstrapをBlazorコンポーネント化してくれている (危うく自分で作ってしまうところだった…) インテリセンスをcshtmlで有効化するために、using と addTagHelper を 追記しましょう お勧めのパッケージ
20.
メリットとデメリット C#が得意ならおさえておいた方が良い技術 されど今すぐ使うかは…
21.
サーバーからクライアントまでC# EntityなどもC#(しかもClient/Serverで共用できる)
htmlとC#を上手にミックスできる 磨き抜かれたBlazorアプリケーションはどんどんMVVMっぽくなる気がする(こち らまだ修行中ですが…) .NET のマネージド空間がWebAssemblyの空間だと考えると良い html とWebAssemblyを融和させるためのフレームワーク つまり、htmlを出力するコードとそれを動かすためのWebAssemblyをビルドして くれている。 今までWebAssemblyでDOMを触れなかったことからするとかなり画期的。(言う までもなくこの部分にはJavaScriptが間に挟まっています。開発環境から見えない だけで) C#大統一論的には凄い
22.
CSSでテーマを作れるので、通常のWebアプリを作るためのノウハウは 生きる サーバーサイドのビジネスロジックとモデルはC#で、クライアントサ イドの基本的なロジックはC#で、表示上の詳細な制御が必要な部分の みJavaScriptで。 という住み分けが今のところ最良と思える 既存技術と喧嘩しない
23.
選択肢が狭い 今日紹介したものを組み込む以外の選択肢がどうも思いつかない程度に マイナー 強いて言えば面白そうなのはBlazorCanvasExtensionsくらい
cshtml 内の継承をサポートしているのにC#プロパティの[Parameter]属 性が継承されない これがとても惜しい なぜ先にジェネリックをサポートしたのか… まだ発展途上
24.
DOMやWebGLに直接触れるようにしてくれたらいいなぁ 現在は一部のプロパティにバインディングできるという程度
JavaScriptでラッパーを書けばやれることは増える (←いまのところ現実的 な解) Blazorのコンセプト的には、ビジネスアプリケーションが作れれば十分 という雰囲気がビシビシと伝わってくる だから、できないことをやろうとするとマーシャリングが行われてパ フォーマンスは犠牲になる なんとかしたいですよね(|) 対応してくれたら嬉しいところ
25.
JavaScriptとC#の相互運用は癖が強すぎる https://learn-blazor.com/architecture/interop/ まだ書きにくい 今までJavaScriptで書いていたものをRazorで書きまくることでかなりの事 はできるので、徹底してC#にすれば良いともいえるが…
大まかに言うと、global / static なメソッド間でしか相互運用ができない 現時点で良くないところ
26.
JavaScriptではないのでブレークポイントが張れない Google
Chromeで例外発生時のコールスタックは出る こりゃ確かにWebAssemblyだ 現時点で良くないところ
27.
起動時間が長い WebAssemblyは現在モジュール単位のコンパイルであるため
ブラウザ側が実行コードをコンパイルしてくれるようになったら突然速く なる 現時点で良くないところ
28.
実践編
29.
最近書いたコード 論より証拠といいます
30.
cshtml内で外部から情報を受け取る際に使用します C#でプロパティにできるものなら何でもできる
ActionとかFunc<T>もできる 親画面から処理を受け取るときに活躍 Commandみたいなクラスを作るとMVVMっぽくて良いかも [Parameter]
31.
Ajaxを使うところではこれを書く こんな風にかける _partners
= await Http.GetJsonAsync<Partner[]>("/api/Partners/"); @inject HttpClient Http
32.
ViewModelの型に応じてコントロールを変えたかったので作ってみた XAMLのとはちょっと毛色が違うけどこれはこれで良い DataTemplate.cshtml
33.
ジェネリックのリストボックスを作ってみた ContentControlは内部でDataTemplateを用いて勝手に展開してくれる ようにした
Tを object にすると、DataTemplateがサポートしているものなら何でも 並べられるようになる Listbox<T>
34.
ServerとClientで共用するクラスはここに配置 通信はJSONで勝手にやってくれるので、うっかり循環参照にならない ようにだけ気を付けよう *.Sharedに配置するクラス
35.
サーバーサイドはASP.NET Coreのほぼ普通の書き方 Controller
36.
static の値がちゃんと保持されている
シングルページだから セキュリティ的に問題のないものなら色々置ける static
37.
世間の取り組み
38.
少しずつ増えていますがまだ多くない https://github.com/BlazorExtensions Canvas
SignalR e.t.c… Blazor Extensions
39.
まとめ 妄想含む
40.
現在は未完成感があるが、とても強力なフレームワークに成長する可能 性を秘めている WebAssemblyの進化とともに進化していく
モジュールサイズとかコンパイル速度とか… サーバーサイドでwasmにコンパイルした方が良くない?とは思わんでも ない 開発環境の進歩には期待 API系全般にアクセスする拡張が待たれる Canvasはもうあるけど、WebGL触りたい 来年くらいに多分面白くなる
41.
https://1drv.ms/u/s!Au2k6fUO0Z_Qgec1Y2wde1q-Pvbb7w 作りかけのものをデモで出したのであまり綺麗でないのはご海容くださ い。 デモのソースコード
Download