de:code 2019 MW81
がんばらなくても C# で Single Page Web アプリ
ケーションが書けてしまう「 Blazor」とは
Microsoft MVP for Visual Studio and Development Technologies
坂本 純一 (@jsakamoto)
Blazor の概要とその仕組み
Client-side Server-side
Client-side
Blazor とは?
SPA フレー
ムワーク
実行環境
開発環境
(SDK)
JavaScript への変換ではない。
.NET のバイナリが動く。
仕組み
※このような動作原理なので、既存の NuGet パッケージライブラリもそのまま使えたりする。
あくまでも HTML 標準
あくまでも HTML 標準
Demo
Demo
C# で SPA が書けることの
何が嬉しいのか
• .NET Core SDK
Visual Studio 2019 + Blazor 拡張
Visual Studio Code + C#拡張
開発環境の構築が容易
※1 … 2019年5月現在、v.3.0.0 Preview 5 ※2 … JetBrains Rider など他のエディタ/IDE は未評価
※3 … 2019年5月現在、Preview 版 推奨
だけ
簡潔なプロジェクト構造
容易な開発環境構築
+
簡潔なプロジェクト構造
| |
がんばらなくても SPA が
書けてしまう。
既に C# で開発している場合は
さらなる特典
ビルドシステム (MSBuild)
LINQ 属性 リフレクション
IntelliSense、CodeLens etc…
パッケージシステム (NuGet)
単体テスト (xUnit とか)
いつもの C# 開発で SPA 開発できる
サーバー側も .NET なら型情報が共有できる
Person.dll
Server Client (Blazor)
サーバー側も .NET なら型情報が共有できる
Person.dll
Server Client (Blazor)
サーバー側も .NET なら型情報が共有できる
Person.dll
var person = new Person {
Name = "Taro";
};
return person;
Server Client (Blazor)
サーバー側も .NET なら型情報が共有できる
Person.dll
var person = new Person {
Name = "Taro";
};
return person;
Server Client (Blazor)
{"name":"Taro"}
サーバー側も .NET なら型情報が共有できる
Person.dll
var person = new Person {
Name = "Taro";
};
return person;
var person = await
Http.GetJsonAsync<Person>(URL);
person.Greeting(); ⇒ "Hello, I’m Taro"
Server Client (Blazor)
{"name":"Taro"}
サーバー側も .NET なら型情報が共有できる
Person.dll
var person = new Person {
Name = "Taro";
};
return person;
var person = await
Http.GetJsonAsync<Person>(url);
person.Greeting(); ⇒ "Hello, I’m Taro"
Server Client (Blazor)
{"name":"Taro"}
属性による制約記述
• モデルクラスのプロパティに、属性で制約を記述することで…
属性による制約記述
属性による制約記述
[New!]
- ブラウザ側検証も有効に
C# で SPA が書けることの
何が嬉しいのか
C# で SPA が書けることで、
開発生産性の向上
を期待できる
Sever-side
そして Server-side Blazor
仕組み
仕組み
仕組み
仕組み
仕組み
仕組み
仕組み
仕組み
仕組み
Internet
Server-side Blazor の利点
ロード時間が短い
• mono.wasm や DLL を読み込ま
ないため
検索エンジン対応
• 初回HTTP要求時、レンダリング済
みコンテンツが返る
成熟・安定したランタイム
• デバッグも容易
処理性能が速い
• mono.wasm はインタープリタ
Server-side
Blazor
Server-side ならではの
さらなる面白さ
サーバー側とクライアント側を、
Web API で結ばなくてよい。
サーバー側データベースのクエリ結果を、
そのまま HTML にバインド (!)
古典的なサーバー側
Webアプリ実装みたい
なのに、これで
SPA として動く!
ますます、がんばらなくても
済んでしまう。
• 常時接続が必要
Server-side Blazor の弱点
リリース時期
2019年9月
Server-side Blazor
https://devblogs.microsoft.com/dotnet/introducing-net-5/
2020年の第一四半期の可能性?
Client-side Blazor
https://twitter.com/lupusa1/status/1126185956002938880
学習リソース
Blazor 公式サイト
• https://blazor.net
Blazor アプリケーションプログラミング自習書 (日本語)
• https://j.mp/selflearn-blazor-jp
まとめ
Blazor を選択することで…
簡潔なプロジェクト構造
強力な開発支援
開発の本質に集中、
リリースを迅速化
ユーザーと開発者
の幸せへ…
Blazor も又、銀の弾丸ではない。
しかし Blazor を選択することが
適している人たちも又、存在する。
あなたも
その一人かもしれませんね?
がんばらなくても
SPA が書けてしまう Blazor。
あなたも
はじめてみませんか?
© 2018 Microsoft Corporation. All rights reserved.
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。
© 2019 Jun-ichi Sakamoto All rights reserved.
本情報の内容 (添付文書、リンク先などを含む) は、de:code 2019 開催日 (2019年5月29~30日) 時点のものであり、予告なく変更される場合があります。
本コンテンツの著作権、および本コンテンツ中に出てくる商標権、団体名、ロゴ、製品、サービスなどはそれぞれ、各権利保有者に帰属します。
Lean, Practice, Share.

がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは