みなさん、こんにちは。
技術の移り変わりが激しいのがIT業界の常ですが、.NET界隈でちょっと気になるニュースが飛び込んできました。
.NET MAUI(Multi-platform App UI)のiOS/Androidランタイムが、次世代の.NET 11でついに「Mono」から「CoreCLR」に移行するとのことです。
- 参考1:.NET MAUI Moves to CoreCLR in .NET 11
- 参考2:ついにMonoランタイムを脱却する「.NET MAUI」。Xamarinから続いてきたMonoランタイムをCoreCLRに移行
かつてのXamarin時代から長きにわたってクロスプラットフォーム開発を支えてきたMonoランタイムですが、ここで完全にその役割を終えることになります。
しかし、このニュースを見て、私を含めた多くの開発者が次のような疑問を抱いたのではないでしょうか。
「今さらMAUIを強化して、いったい誰が得するの……?」
現在のクロスプラットフォーム開発を取り巻く市場環境を冷徹に見つめ直してみると、次のような現実があります。
- モバイル開発の主戦場はすでに Flutter / Kotlin Multiplatform (KMP) / React Native
- C#でモバイルアプリを新規開発する企業は激減
- デスクトップのクロスプラットフォームなら Avalonia UI が主役
- MAUIは初期の品質問題などもあって、市場の信頼を十分に得られていない
正直なところ、市場の需要(マーケットイン)の視点だけで見ると、Microsoftが今MAUIに大きな投資をする理由がほとんど見当たりません。
では、なぜMicrosoftは「今」、MAUIのCoreCLR化に踏み切ったのでしょうか? 本日は、ビジネスやMicrosoftの「内部戦略」という視点から、その決断の正体に迫ってみたいと思います。
なお、これから記載する内容は、あくまで私の主観に基づいた分析であることを最初に申し添えます。
Monoを終わらせるための「最後のピース」だった
Monoは長年、.NETのオープンソースな互換実装として大活躍してきましたが、.NET 5以降の「.NET統合戦略」によって徐々にその役割を終えつつありました。
実際、Monoを使っていた他の巨大プロジェクトも動き出しています。例えばゲームエンジンのUnityも、Monoを捨ててCoreCLRへの移行を明言しています。
さらに、Monoプロジェクト自体がWineHQへと移管されるなど、現在の.NETランタイムの主役は完全にCoreCLRへとシフトしています。
そんな中、最後まで残っていた巨大なMono利用者が、ほかでもないMAUI(のiOS/Androidランタイム)だったのです。
つまり今回の移行は、市場からの熱い要望があったからではなく、「Monoという歴史的プロジェクトを完全に退役させ、社内の技術的負債を解消するための最後の後始末」と考えるのが自然です。
.NETランタイムを「完全統一」するため
Microsoftの本音は、これに尽きるのではないでしょうか。
「社内でメンテナンスする.NETのランタイムを、いい加減CoreCLRに一本化したい」
JITコンパイラ、GC(ガベージコレクション)、AOTコンパイラ、PGO、R2R、そしてデバッグや診断ツールにいたるまで、サーバーサイドからクライアントサイドまでが「まったく同じ挙動」になることは、プラットフォームを提供するMicrosoftにとって巨大なメリットがあります。
MAUIがMonoを使い続けている限り、Microsoftは.NET本体だけでなくMonoのメンテナンスや互換性検証も並行して行わなければならず、社内の開発ワークフローを完全統一できません。今回の移行は、.NETエコシステム全体の整合性を取り戻すための「社内都合の戦略的決断」と言えます。
Xamarin移行組(エンタープライズ顧客)を見捨てられない
日本国内ではXamarin.Formsを使っている企業をあまり見かけなくなりましたが、海外のエンタープライズ市場では、今でも意外なほど多くの企業で使われているようです。
- 医療・製造・金融・物流などの基幹システム
- 現場で使われる社内業務専用アプリ
これらの企業は、すでに膨大なC#の資産を持っており、「これからもC#でモバイルアプリを保守・運用し続けたい」という非常に強い要望を持っています。
もしここでMicrosoftがMAUIを捨ててしまうと、彼らの移行先(受け皿)が消えてしまい、長期サポート契約(エンタープライズ向けの約束)が破綻してしまいます。それはMicrosoftというブランドの信用失墜に直結します。つまりMAUIは、大切な既存の企業ユーザーを守るための「安全な避難先」として維持される必要があるのです。
「.NETはモバイルもできる」という建前(ブランド)を維持するため
Microsoftは長年、.NETを「あらゆるプラットフォームに対応するフルスタックな開発技術」として位置づけてきました。
- サーバー / クラウド(Azure)
- デスクトップ(Windows)
- Web(Blazorなど)
- モバイル(iOS / Android) ← ココ
このラインナップの中でモバイルだけを完全に切り捨ててしまうと、「.NETはフルスタックではない」「モバイルは諦めたテクノロジーだ」という評価を下されてしまいます。MAUIが存在し続けることは、.NETというエコシステム全体のブランド戦略と「建前」を守るための、象徴的な役割でもあるわけです。
Electron依存を減らす「逃げ道」としてMAUIを残したい
現在、Microsoftの主力製品である「VS Code」は、Electronをベースに作られています。しかし、Microsoftの本音としては、できることならElectron依存を減らしていきたいはずです。
なぜならElectronには、
- Chromium(Google主導のオープンソース)に依存している
- Node.js(外部コミュニティ)に依存している
- メモリやリソースの消費がどうしても大きくなる
という課題があるからです。
実際、すでにMicrosoftはTeams(デスクトップ版)をElectronからWebView2(Edgeベース)へ移行し、大幅な軽量化に成功しています。
今すぐどうこうという話ではありませんが、MAUIをしっかりと洗練させて手元に残しておくことは、「将来的な脱Electron(自社技術への回帰)」へのバックアッププラン(逃げ道)を温存することにも繋がります。
市場向けではなく、Microsoft内部向けの「義務的フレームワーク」
ここまでいくつかの理由を挙げてきましたが、外部向けの理由はある種の後付け(こじつけ)かもしれません。Microsoftの社内事情を想像すると、次の理由が最も本質的ではないかと思います。
MAUIは、一般の市場でシェアを競うためのフレームワークではなく、Microsoftの内部統一戦略のために維持されている「義務的フレームワーク」である。
Windowsチーム、Azureチーム、Officeチーム、そして社内のツール開発部門や、先述したXamarin移行組。これら巨大な社内外の利害関係を調整した結果、「MAUIを捨てる」という選択肢は最初から机の上に存在しなかったのではないでしょうか。
今からMAUIを選ぶ理由は……?
ここまでMicrosoft側の戦略や大人の事情を整理してきましたが、私たち現場の技術者が下すべき「現実的な結論」は、また少し別のお話になります。
身も蓋もない言い方をしてしまうと、「既存のXamarin資産を抱えていない限り、これから新規プロジェクトでMAUIを積極的に採用するメリットはほとんどない」 というのが正直なところです。
- モバイルアプリを作りたいなら、エコシステムが圧倒的に成熟している Flutter、Kotlin Multiplatform、React Native を選ぶ方が確実です。
- デスクトップのクロスプラットフォームアプリを作りたいなら、C#が使えて洗練されている Avalonia UI の方が開発者体験が良いケースが多いです。
- 私のようなLinux環境で過ごす時間が多い技術者にとって、MAUIは依然としてLinuxを公式サポートしていないため、選択肢に上りません。
- 何より、Microsoft自身がMAUIを「市場をハックするための戦略兵器」として扱っていません。
新規開発であれば、MAUIよりコミュニティが活発で成熟した選択肢がほかにたくさん存在するのです。
市場のニーズというより内部戦略
今回のMAUIのCoreCLR化は、「市場のニーズに応えるため」ではなく、「Microsoftの内部戦略を前に進めるため」に行われた決断だと思われます。
- Monoプロジェクトを綺麗に終わらせる
- ランタイムをCoreCLRに一本化して社内の開発効率を上げる
- 大切なXamarin移行組(エンタープライズ顧客)を守る
- .NETの「フルスタック」というブランドを維持する
- 将来的な脱Electronの逃げ道を確保しておく
これらの内部事情が積み重なった結果、MAUIは延命され、CoreCLR化という大きな手術を受けることになったのでしょう。
技術者視点で見れば、今からあえてMAUIを選ぶ理由は薄いかもしれません。しかし同時に、MicrosoftがMAUIを捨てる理由もまた、社内戦略上どこにもないのです。
この「市場の熱量と、Microsoftの内部戦略とのズレ」こそが、今回のCoreCLR化のニュースに私が感じた、なんとも言えない違和感でした。みなさんはどう思われましたか?
本日も最後までお読みいただきありがとうございました。
それでは、よいシステム開発ライフを!



