アーカイブ

【.NET MAUI】MAUIでHello Worldしてみたよ

先日Visual Studioで正式サポートされた「.NET MAUI」でHello Worldしてみました。感想など。

目次
  1. .NET MAUIとは
    1. Xamarinの後継
    2. 開発環境はVisual Studio
  2. 事前準備
    1. Visual Studio 2022 v17.3以降をインストールする
    2. エミュレーターでハードウェア アクセラレータを有効にする
  3. プロジェクトの作成
    1. .NET MAUI Blazor って?
  4. Hello Worldしてみる
    1. Windows
    2. Android
  5. ホットリロードってすげー
  6. クロスプラットフォームフレームワークって実際どうなんだろう?
  7. おわりに

.NET MAUIとは

NET Multi-Platform App UI (.NET MAUI) は、C# と XAML を使用して、ネイティブのモバイル アプリやデスクトップ アプリを作成するためのクロスプラットフォーム フレームワークです。

.NET MAUI を使用すると、1 つの共有コード ベースから Android、iOS、macOS、および Windows で実行できるアプリを開発できます。

.NET MAUI とは – .NET MAUI | Microsoft Docs

Xamarinの後継

Xamarinというやつの後継らしい。筆者はXamarin経験ないので割愛!

開発環境はVisual Studio

Visual Studio 2022 v17.3でMAUIが正式サポートされました。

ただ、iOSとMacOS用にアプリをビルドするにはMacが必要とのこと。

iOS/Android両対応のアプリを作ることはよくありそうなシチュエーションですが、iOS側はデバッグやビルドはMacマシンがないとダメみたいですね。リモート接続して行うみたい。

事前準備

Visual Studio 2022 v17.3以降をインストールする

Visual Studio 2022 v17.3以降をインストールします。

インストール時のワークロードでMAUIを選んでインストール。

エミュレーターでハードウェア アクセラレータを有効にする

ハードウェア アクセラレータを有効にしないと、Androidエミュレーターが遅くて話にならないので有効化します。

BIOS(UEFI)で、CPUの仮想化支援機能を有効にする

Intelなら「Intel VT-X」、AMDなら「AMD-V」というやつですね。

Ex.)ASRock製マザーボード、AMD製CPU

主なメーカー別のBIOS起動キー

主なメーカー別のBIOS起動キー

ASROCKF2/DEL
ASUSF2/DEL
DELLF2
GIGABYTEDEL
HPF10
MSIF2/DEL
※機種により異なる場合があります

Hyper-VとWindows ハイパーバイザー プラットフォームを有効にする

「Windows の機能の有効化または無効化」から以下を有効にします。

  • Hyper-V
    ※ツリー内すべて
  • Windows ハイパーバイザー プラットフォーム

プロジェクトの作成

Visual Studio 2022 v17.3以降であれば、他のプロジェクトと同様MAUIのプロジェクトを作成することができます。

「.NET MAUI アプリ」を選択して作成します。

.NET MAUI Blazor って?

なにやら先程の画面で「.NET MAUI Blazor アプリ」というものもありましたね・・・

「Blazor」はWeb開発用のフレームワークで、フロントエンドの処理がJavascriptの代わりにC#で書けるものらしい…すごいね。

「MAUI Blazor」はこの「Blazor」をWebだけでなくデスクトップアプリやモバイルアプリ開発もできるようにした「Blazor Hybrid」というものの形だそうな。

「.NET MAUI」は画面を「XAML」という謎のもので構築しないといけないけれど、「MAUI Blazor」なら「HTML」「CSS」(razor)で書けるのかな?

Hello Worldしてみる

プロジェクト作成時点でHello Worldできる状態になっているようです。

こちら↓を参考に実行してみます。

初めての .NET MAUI アプリをビルドする – .NET MAUI

Windows

Android

※初回はエミュレーターの設定が必要です。

ホットリロードってすげー

.NET MAUIに限った機能ではありませんが、ホットリロードってすごいですね。

コードの変更がすぐにアプリケーションに反映される・・・素晴らしい

デバッグ実行中の状態でボタンのキャプションをコード上で変更すると・・・

何もしなくても次の瞬間にはデバッグ実行中のエミュレーターに反映されました!

私は普段の業務ではちょっとした画面の変更でもビルドして、実行環境に反映して、リロードして…というプロセスを踏んでいるのでとても非効率な原始人だったのでした。

クロスプラットフォームフレームワークって実際どうなんだろう?

私が触ってみた目的としては、なんとなくAndroidアプリ作ってみたいなと思ったからです。

ところがAndroidアプリの開発言語であるJava/kotlinは経験がない・・・

しかし自身が経験のあるTypescript(React Native)やC#(MAUI)で開発できるらしいじゃありませんか!

学習コストだけでクロスプラットフォーム対応もしないのにクロスプラットフォームフレームワーク選ぶってどうなの?ってところもありますが、MAUIがちょうど正式リリースしたばかりで面白そうだったので触ってみることに。

開発しやすさも重要ですけど、パフォーマンスとかは実際専用で作るのに比べて概ね遜色ないのか気になることろですね。

調べるとコンパイル方式で「JIT」「AOT」だの出てきます。

○JIT方式

中間コードを実行時にネイティブコードにコンパイル

アプリ内にVMも一緒に配布されるから容量が多少大きくなって速度も対象落ちる??のかな?

○AOT方式

コンパイル時にネイティブコードにコンパイル

主要なクロスプラットフォームフレームワークだと以下の様な感じ?

FlutterAOT
※デバッグ時はJIT
React NativeAOT
※jsエンジンがHermesになってから?
.NET MAUIAndroid:JIT
iOS:AOT

JITだと遅いから、AOTに移行していったという流れを感じました…

MAUIはAndroidはJIT方式みたいですが、大丈夫かいな!

おわりに

ちょっと面白そうなので、コツコツ勉強していきたいなと思いました。

ちなみにHello Worldの画面に出てくる謎のあいつ。

「dotnet-bot」というらしいです。

相変わらずITの系のマスコットキャラは認知度低いね(知らなかったの、私だけ!?)

マウイはナウい

プロフィール
筆者:UMAイカ

IT企業に勤務しています。当ブログは、うダツの上がらないサラリーマンがよりよい人生を目指して購入した商品のレビューや、仕事の備忘、生活の知恵を発信します。

アーカイブ