モバイルアプリフレームワーク .NET MAUIの紹介

この記事は、 KENTEM TechBlog アドベントカレンダー2023 9日目、12月13日の記事です。

こんにちは!KENTEM第2開発部のK.H.です。

私が所属するチームではSiteBoxというモバイルアプリを開発しています。
8年ほど前のファーストリリース当初からMicrosoftのXamarinというフレームワークで開発してきましたが、2024年5月1日でサポートが終了するため、後継である.NET MAUIでSiteBoxを再構築することになりました。
今回は.NET MAUIを実際に使ってみた上でのメリットやデメリットを紹介させて頂きます。
これからモバイルアプリを作ってみたいという方は選択肢の一つとして参考にして頂ければと思います。

.NET MAUIとは

Microsoftが提供するクロスプラットフォームフレームワークです。 一つの実装コードからAndroid、iOS、macOS、Windowsで実行できるアプリを開発できます。
ビジネスロジック部分はC#、UIはXAMLというXMLベースのマークアップ言語で記述します。また、部分的に各プラットフォームごとに拡張処理を記述することも可能です。
前身であるXamarinにはネイティブ実装に近い「Xamarin.Native」とUI定義が共通化された「Xamarin.Forms」があり、「Xamarin.Forms」の後継が.NET MAUIとなります。

Microsoftのページに導入手順が記載されていますので気になった方はお試しください。 learn.microsoft.com

.NET MAUIのメリット

複数プラットフォームが一つのソースコードで一度に実装できる。

クロスプラットフォームフレームワークなので、当然と言えば当然なのですが、一つのソースコードでiOSアプリもAndroidアプリも構築できるので開発コストは単純に半分です。 また、本来iOS開発用の言語やAndroid開発用の言語を学ばなければいけないところが、C#のみ習得すればよいので学習コストも半分です。
Xamarin時代からクロスプラットフォームフレームワークではありましたが、厳密にいうとUIやリソース等プラットフォームに依存するものはプロジェクトを分けて管理する必要がありました。 しかし、.NET MAUIになったことで、UIやリソースも含めて共通プロジェクトで管理できるようになったため、よりスマートな開発ができます。

プロジェクト構成

C#/VisualStudioが使える

これは人によって慣れ親しんだ言語やツールがあるので一概には言えませんが、C#もVisualStudioもMicrosoftが長年かけて育ててきたこともあり、かなり洗練されています。
全ての言語やツールを使ったことはありませんが、XCodeやAndroidStudio等と比べると個人的には一番開発がしやすいです。
社内の話になってしまいますが、KENTEMの製品はC#で開発しているものが多く、過去の財産を利用できることが大きなメリットでした。

他のMicrosoftサービスとの親和性が高い

Microsoft製ということもあり、Microsoft AzureやAppCenter等のサービスとやりとりするためのライブラリ等が用意されています。
モバイルアプリはクラウド連携するケースも多いかと思いますので、メリットとしては大きいかと思います。
KENTEMでもMicrosoftAzureのサービスを利用しているため、実装負担を減らすことができました。

.NET MAUIのデメリット

情報が少ない

新技術の宿命ではありますが、.NET MAUIは生まれて間もないため、検索してもほとんど情報が出てきません。 ただ、前身のXamarin.Formsとアプリ構成やコンポーネントは似ているため、情報がなく困ったらXamarin.Formsで検索すると良いです。 また、MAUIはオープンソースでありGithubにソースコードが上がってます。最後は自力で中を見るという力技が使えます。
ちなみに「MAUI」単体で検索すると「マウイ島」関連の情報がヒットしてしまうので、「.NET MAUI」や「MAUI クラス名」のように検索するのが吉です。

バグが多い・動作が重い

Xamarin.Formsの後継ということで、ある程度安定していると思っていたのですが、画面崩れやメモリリーク等数多くのバグが存在し、対処に苦しみました。 .NET6、.NET7、.NET8とバージョンアップを続け少しずつ安定してきているものの、いまだにバグは数多く存在しますし、バージョンアップによって新たに出てくるバグも多いです。
また、Xamarin.NativeやXamarin.Formsに比べ動作が重く、古い端末での動作をサポートする場合は高速化の対処も必要になってきます。
どんなバグがあるか気になる方はGithubのIssueを見てみてください。(数の多さに気分が悪くならないようにご注意ください) github.com

人気がない

紹介している立場として悲しいことですが、他のクロスプラットフォームフレームワークに比べ今のところ人気は低いです。 人気がない=各種ライブラリが充実しない、情報が増えないということになるので、開発フレームワークとしては死活問題です。 Microsoft製であり、.NETに含まれているのでフレームワークとして開発が止まったりすることは無いと思っていますが、徐々に人気が出て欲しいと切に願っています。

Googleトレンド

まとめ

  • .NET MAUIはMicrosoft製の正式なクロスプラットフォームフレームワーク
  • 一つのソースコードでAndroidアプリもiOSアプリも構築できて開発スピードアップ!
  • 現状まだバグがかなり多いので現時点で本気で使う場合は覚悟が必要。
  • デメリットも多くあり自信を持って勧められない状況ですが、まだまだ成長過程なので今後に期待です。利用者が増えることを願ってます!!

KENTEMでは、様々な拠点でエンジニアを大募集しています!
建設×ITにご興味頂いた方は、是非下記のリンクからご応募ください。
https://hrmos.co/pages/kentem2211/jobs/A0008hrmos.co hrmos.co hrmos.co hrmos.co hrmos.co hrmos.co hrmos.co hrmos.co