SlideShare a Scribd company logo
1 of 32
Download to read offline
Web開発者が始める.NET
MAUI Blazor App
株式会社SAKURUG
エンジニアリングユニット
草場 友光
.NET ラボ 2022年6月
自己紹介
• 普段は主にWebFormsアプリ
の保守のお仕事をしてます。
• 古めのシステムが多いので時
代に取り残されぬよう新しい技
術を一つでも入れるよう日々努
力しています。
• tomo_kusaba
宣伝
【VISION】ひとの可能性を開花させる企業であり続ける
VISIONに共感できる仲間募集中。
注意
• 個人の見解・解釈が多分に入っています。
• 見解の相違・事実誤認などありましたらご指摘ください。
• #dotnetlabでtweetすると右側に表示されます
今日の目的
• .NET MAUIがとうとうGAしました。
• .NET MAUI Blazor Appはその中でもBlazor技術を使い
Android、iOS向けのモバイル開発ができるフレームワークで
す
• Web開発者視点でどれだけ違和感なくモバイル開発に入ってい
けるかを紹介していきます。
本日やってることは。。。
• Blazor WebAssemblyで実装してWebページとして公開しても
変わらないとかいう突っ込みはなしで!
• きっと、それぞれのプラットフォームでのネイティブアプリ
ケーションになるというところに価値があるのです。
.NET MAUIとは
ネイティブのモバイルアプリやデスクトップアプリを作成するためのクラスプラットフォー
ムフレームワーク
.NET MAUI Blazor Appとは?
• Android、iOS、macOS、Windowsにデプロイできる
• Razorコンポーネントを使用可能
• Blazor WebAssemblyと同じ感覚でアプリケーション開発可能
• あくまでUIを構築する手段としてのBlazor
• .NET MAUIの提供するGPSや加速度APIなどのネイティブAPI
へのアクセスを含むさまざまなAPIが使用可能
.NET MAUI Blazor Appのしくみ
BlazorWebVeiwコントロール
Blazorコード
プロジェクト構成
Platforms・Resourcesという見慣れ
ないフォルダ
他にも、MainPage.xamlや
Program.csではなく
MauiProgram.csがエントリーポイ
ントになっている
基本的には、Blazor WebAssembly
のプロジェクト構造に似てる!
前提条件
• Visual Studio2022 Previewおよび.NET Multi-Platform App
UI開発ワークロードをインストール
• Microsoft Edge WebView2
• Android Emulatorのパフォーマンス向上のためHyper-Vおよ
びHAXM(Intel CPU)の有効化
プロジェクトを作ろう
• .NET MAUI Blazorアプリのテンプレートを選択
Windowsで動かしてみた
Androidエミュレータで動かしてみた
もちろん、ホットリロードもできる!
• Androidエミュレータに対してホットリロード
WebAPIをコールしてみた
• 通常通りの実装でWebAPIを呼べる
• だって、C#なんだもん
Razorコンポーネント
• WebAPIからの情報を表示す
るだけならBlazor
WebAssemblyと全く同じ
• これで、モバイル向けネイ
ティブアプリケーションがで
きるのはすごい
UIコンポーネントを入れてみた
• Blazorで画面をつくるためにHTML使いたくないよぉ!
• 個人的に使いなれた「Radzon」を入れてみる
Radzen導入方法
• 「Radzen.Blazor」をNuget
Radzen導入方法
• 「_Imports.razor」に@using Radzenと@using
Radzen.Blazorの2行を追加
Radzen導入方法
• 「wwwroot/index.html」にcssとjsを追加
Radzenを使う
• Radzenのタグが使えることを確認しよう
デバイス情報の読み取り
• DeviceInfoで読み取りができる。
• 詳しくはDocs参照
デバイスセンサーへのアクセス
• 例えば加速度センサーDocsのサンプル
日本語訳が微妙すぎてこの引数がよ
くわからん
次のコード例は、加速度計の変更を監視する方法を示しています。 イン
スタンスは Accelerometer.Default メソッドに
ToggleAccelerometer 渡されます。
??
次のコード例は、加速度計の変更を監視する方法を示しています。 イン
スタンスは ToggleAccelerometerメソッドに
Accelerometer.Default が渡されます。
Android実機で動かしてみたその1
• 物理デバイスでデバッグする方法
ビルド番号を7回タップ→
開発者向けオプションメ
ニューが出る
Android実機で動かしてみたその1
Android実機で動かしてみたその1
Android実機で動かしてみたその2
• 署名なしでビルド→apkを作る
• テスト用途ですので公開用には署名してビルドしてください
Android実機で動かしてみたその2
Android実機で動かしてみたその2
参考文献
• Radzen Blazor Componets Get Started
• Android用の .NET MAUI アプリを発行する
• BlazorWebView を使用して .NET MAUI アプリで Blazor
Web アプリをホストする
• .NET MAUIBlazor アプリを構築する
おしまい
おしまい

More Related Content

What's hot

What's hot (20)

Google アナリティクスで SharePointの利用状況を確認する
Google アナリティクスでSharePointの利用状況を確認するGoogle アナリティクスでSharePointの利用状況を確認する
Google アナリティクスで SharePointの利用状況を確認する
 
.NET 7期待の新機能
.NET 7期待の新機能.NET 7期待の新機能
.NET 7期待の新機能
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
 
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
 
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
 
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer
 
nginx入門
nginx入門nginx入門
nginx入門
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 

Similar to Web開発者が始める .NET MAUI Blazor App

20120413 nestakabaneworkshop
20120413 nestakabaneworkshop20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
Yoichiro Sakurai
 
これからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れこれからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れ
Mitsuru Katoh
 
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
満徳 関
 
第2回ビジネスモバイル研究会
第2回ビジネスモバイル研究会第2回ビジネスモバイル研究会
第2回ビジネスモバイル研究会
Shuichi Yukimoto
 
ON HTML5 FIELD で書き尽くせなかったこと
ON HTML5 FIELD で書き尽くせなかったことON HTML5 FIELD で書き尽くせなかったこと
ON HTML5 FIELD で書き尽くせなかったこと
Masakazu Muraoka
 

Similar to Web開発者が始める .NET MAUI Blazor App (20)

保守性の高いアプリケーション設計について
保守性の高いアプリケーション設計について保守性の高いアプリケーション設計について
保守性の高いアプリケーション設計について
 
BlazorにSwaggerを導入してみよう
BlazorにSwaggerを導入してみようBlazorにSwaggerを導入してみよう
BlazorにSwaggerを導入してみよう
 
.NET Lab2022年2月
.NET Lab2022年2月.NET Lab2022年2月
.NET Lab2022年2月
 
Static Web AppsとBlazor WebAssemblyのすすめ
Static Web AppsとBlazor  WebAssemblyのすすめStatic Web AppsとBlazor  WebAssemblyのすすめ
Static Web AppsとBlazor WebAssemblyのすすめ
 
.NET 7におけるBlazorの新機能
.NET 7におけるBlazorの新機能.NET 7におけるBlazorの新機能
.NET 7におけるBlazorの新機能
 
.NET6新機能の振り返り
.NET6新機能の振り返り.NET6新機能の振り返り
.NET6新機能の振り返り
 
あなたも出来る!webエンジニアがSwiftでリリースするためにやったこと
あなたも出来る!webエンジニアがSwiftでリリースするためにやったことあなたも出来る!webエンジニアがSwiftでリリースするためにやったこと
あなたも出来る!webエンジニアがSwiftでリリースするためにやったこと
 
COD2013 Windows Azure Mobile Service を用いたiOS/Android開発
COD2013 Windows Azure Mobile Service を用いたiOS/Android開発COD2013 Windows Azure Mobile Service を用いたiOS/Android開発
COD2013 Windows Azure Mobile Service を用いたiOS/Android開発
 
マルチデバイスに対応するためのAuto layout
マルチデバイスに対応するためのAuto layoutマルチデバイスに対応するためのAuto layout
マルチデバイスに対応するためのAuto layout
 
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
 
モバイルWebアプリケーションを複数端末で動かすために注意すること
モバイルWebアプリケーションを複数端末で動かすために注意することモバイルWebアプリケーションを複数端末で動かすために注意すること
モバイルWebアプリケーションを複数端末で動かすために注意すること
 
これからのNotesモバイルアプリはこう作れ
これからのNotesモバイルアプリはこう作れこれからのNotesモバイルアプリはこう作れ
これからのNotesモバイルアプリはこう作れ
 
これからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れこれからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れ
 
Microsoft MVPとは?コミュニティ活動のすすめ
Microsoft MVPとは?コミュニティ活動のすすめMicrosoft MVPとは?コミュニティ活動のすすめ
Microsoft MVPとは?コミュニティ活動のすすめ
 
UXを損ねる静的コンテンツ配信アンチパターン7選
UXを損ねる静的コンテンツ配信アンチパターン7選UXを損ねる静的コンテンツ配信アンチパターン7選
UXを損ねる静的コンテンツ配信アンチパターン7選
 
Project 15 - Algyan May 2022.pdf
Project 15 - Algyan May 2022.pdfProject 15 - Algyan May 2022.pdf
Project 15 - Algyan May 2022.pdf
 
ネイティブアプリ開発を加速する、モダンバックエンドとのタイアップ手法
ネイティブアプリ開発を加速する、モダンバックエンドとのタイアップ手法ネイティブアプリ開発を加速する、モダンバックエンドとのタイアップ手法
ネイティブアプリ開発を加速する、モダンバックエンドとのタイアップ手法
 
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
 
第2回ビジネスモバイル研究会
第2回ビジネスモバイル研究会第2回ビジネスモバイル研究会
第2回ビジネスモバイル研究会
 
ON HTML5 FIELD で書き尽くせなかったこと
ON HTML5 FIELD で書き尽くせなかったことON HTML5 FIELD で書き尽くせなかったこと
ON HTML5 FIELD で書き尽くせなかったこと
 

More from TomomitsuKusaba

More from TomomitsuKusaba (9)

ASP. NET Core 汎用ホスト概要
ASP. NET Core 汎用ホスト概要ASP. NET Core 汎用ホスト概要
ASP. NET Core 汎用ホスト概要
 
NET 6で実装された新しいLINQ API
NET 6で実装された新しいLINQ APINET 6で実装された新しいLINQ API
NET 6で実装された新しいLINQ API
 
MuseLoid規格の音源自作について
MuseLoid規格の音源自作についてMuseLoid規格の音源自作について
MuseLoid規格の音源自作について
 
Entity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼうEntity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼう
 
リモートワークで買ってよかったもの
リモートワークで買ってよかったものリモートワークで買ってよかったもの
リモートワークで買ってよかったもの
 
.NET 6の期待の新機能とアップデート
.NET 6の期待の新機能とアップデート.NET 6の期待の新機能とアップデート
.NET 6の期待の新機能とアップデート
 
.NETラボ2021年10月 .NETの過去と現在
.NETラボ2021年10月 .NETの過去と現在.NETラボ2021年10月 .NETの過去と現在
.NETラボ2021年10月 .NETの過去と現在
 
.NETラボ2021年9月 Blazorのカスタム認証を通じてDIの便利さを学ぶ
.NETラボ2021年9月 Blazorのカスタム認証を通じてDIの便利さを学ぶ.NETラボ2021年9月 Blazorのカスタム認証を通じてDIの便利さを学ぶ
.NETラボ2021年9月 Blazorのカスタム認証を通じてDIの便利さを学ぶ
 
.Netlab202107
.Netlab202107.Netlab202107
.Netlab202107
 

Web開発者が始める .NET MAUI Blazor App