Avaloniaベースで .NET MAUI の Linux とブラウザー対応を拡大
(avaloniaui.net)- Avaloniaベースのバックエンドにより、.NET MAUI アプリケーションが Linux デスクトップとブラウザー(WebAssembly)で実行可能に
- 既存の MAUI コードベースを維持しながら、レンダリング層を Avalonia に置き換えることで、性能向上とプラットフォーム拡張を同時に実現
- Ubuntu、Debian、Fedora などの デスクトップ Linux と 組み込み Linux、WebAssembly 環境で同一のレンダリングエンジンとして動作
- Windows と macOS でも 2倍以上の性能向上 が確認され、プラットフォームごとの差異なく一貫した UI を提供
- MAUI 開発者に Linux・Web 対応と予測可能な開発サイクル を提供し、Avalonia エコシステム拡張の基盤となるプロジェクト
Avalonia MAUI Backend 概要
- Avalonia MAUI Backend は、MAUI コードベースを維持したまま Avalonia のレンダリング層に置き換える構造
- 既存の MAUI アプリを Linux、ブラウザーなど追加プラットフォーム に拡張可能
- デスクトップ性能の向上とプラットフォームの一貫性を確保
- 実際のデモは WebAssembly ベースの MAUI アプリで、ブラウザーでプラグインなしに実行可能
- 初期ビルドではあるが、MAUI が主要デスクトップ OS とブラウザーで動作することを実証
主なプラットフォーム対応
- デスクトップ Linux 対応
- Ubuntu、Debian、Fedora などで 第一級のデスクトップアプリ として実行
- Avalonia レンダラーを使用し、高性能デスクトップアプリ級の品質を提供
- 組み込み Linux 対応
- Raspberry Pi パネル、産業用 HMI などの 組み込み機器 で Avalonia と同じバックエンドで実行
- WebAssembly 対応
- ブラウザーで ネイティブ依存関係なしに 実行される MAUI アプリを実現
- 今後はブラウザー配布が可能な水準まで発展予定
- Windows および macOS 対応
- Avalonia の 成熟したデスクトップレンダリング構造 と統合
- macOS では Mac Catalyst 比で2倍以上の性能向上 を確認
開発効率と一貫性
- Avalonia チームは 単一プラットフォーム(Avalonia) のみを対象に開発
- iOS、Android、Windows、macOS、Linux、WebAssembly それぞれの個別実装が不要
- プラットフォームごとのバグやレンダリング差異を削減
- 同じレンダリングエンジンを使用するため、すべてのプラットフォームで同一の UI 表現 が可能
- 機能追加やバグ修正時に すべてのプラットフォームへ即時反映
- 開発サイクル短縮と予測可能な品質を確保
Avalonia が MAUI バックエンドを構築する理由
- .NET クライアント開発者の支援 を優先し、MAUI ユーザーが Linux・ブラウザー対応と性能改善 を得られるようにするため
- このプロジェクトを通じて Avalonia は モバイル適性、API 課題、ツール改善点 を学習
- MAUI 開発者が Avalonia レンダラーと機能を体験することで、エコシステム流入効果 も期待
- 目標は MAUI を置き換えることではなく、既存の MAUI 開発者により広い選択肢を提供すること
MAUI 開発者にとっての意味
- MAUI 開発者が継続的に求めてきた Linux 対応 と 一貫した描画ベース UI モデル を提供
- Avalonia は次のような機能を提供
- ハードウェアアクセラレーション描画
- 一貫したレイアウト・スタイルシステム
- 高リフレッシュレートアニメーション
- カスタムレンダリングと視覚効果
- 広範なプラットフォームカバレッジ
- 継続的な投資とサポートを受けるプラットフォーム
- Unity、JetBrains、Schneider Electric など 商用環境ですでに利用中
- 既存の MAUI コードを維持しながら、Linux・Web・デスクトップ性能改善 を同時に実現
性能と次世代レンダリング
- GPU フレンドリーな描画 UI スタック により、ネイティブツールキットより高い性能を確保
- Google Flutter チームと協力し、Impeller GPU レンダラーを .NET に導入中
- この技術が適用されれば、MAUI バックエンドも レンダリング速度向上、バッテリー節約、滑らかなアニメーション を引き継ぐことになる
今後の計画
- MAUI エンジニアとの協業を通じてバックエンド品質の改善を継続
- Linux とブラウザー対応が成熟段階に達すれば、MAUI は真の マルチプラットフォーム UI フレームワーク として完成
- 安定化後は MIT ライセンスでオープンソース公開予定
- 開発の進捗状況、ベンチマーク、プレビューを継続的に共有予定
1件のコメント
Hacker Newsの意見
こういう機能をWebに持ち込んだのは本当に興味深い
ただ、デモを触ってみると 「Webらしさがない」 と感じる
Ctrl+Fで検索できず、テキスト選択やリンク先URLのコピーもできない
モバイルでは画像を長押しして共有もできず、スクリーンリーダーも動作しない
こうした点が積み重なって、「これは本当のWebではない」という印象になる
90年代後半のJava appletや、2000年代初頭のFlashやSilverlightのような、ブラウザから切り離された島のようなリッチコンテンツに感じられる
こうした機能がなければ、定義上「本当のWeb」とは言えない
結局は「Webとは何か」という哲学的な問いにつながる
単なるメディア伝送手段なのか、それとももっと大きな何かなのかを考えさせられる
最近は アプリ化(app-lification) したWebに疲れている人が多く、昔のオープンなWebを懐かしんでいる
スクリーンリーダーでデモを試したが、まったく動作しなかった
Microsoftが意図した方向でもない
AvaloniaがWASMをサポートしているので、その上にMAUIを載せれば動くというだけだ
ただ、それは単に デスクトップGUIツールキットをWASMでレンダリング しているのと同じだ
かっこよくはあるが、WebアプリというよりSilverlightの現代版という感じだ
それでもLinuxデスクトップをターゲットにできるようになったのは大きな利点だ
MAUIが各プラットフォームのネイティブコントロールを使う代わりに、Avaloniaのような 見た目が統一されたレンダリング を好む人も多いだろう
現代のブラウザの CSS/JS/HTML だけでも大半は実現できる
XAMLは好きだが、JSXも似たような概念で、実際のHTMLにコンパイルされる
Silverlightのときも同じことを思った — なぜ何度もFlashを作り直そうとするのか理解できない
UnityのWebビルドのほうが、すでにより良い「C# Flash」だ
こういう基本機能が使えないなら、自分にとっては 論外(non-starter) だ
LinuxデスクトップをサポートしないMAUIは、最初から検討対象ではなかった
今回の追加で多少は良くなったが、それでもAvaloniaを直接使うほうがよいと思う
それでも既存プロジェクト向けにこういう選択肢が増えたのは歓迎したい
ついにKotlin MultiplatformやElectron以外でも、遅くて妙なアニメーションのある 「スマホ風UX」 アプリをLinuxで作れるようになった
ただ、ウィジェットセットはボタンとチェックボックス程度しかなくてがっかりだ
最近のUIツールキットのデモは、なぜ Delphi 1時代のデモ以下 なのか不思議だ
すでにWindows/Mac/Linux/WASMをサポートしている
今回の作業は、既存のMAUIアプリをLinux/WASMへ拡張したい人向けなのだろう
進捗は Avaloniaブログ で見られる
.NETエコシステムで人々がMAUIを敬遠する理由の一つは、Microsoft自身が使っていないから だ
TeamsですらElectronベースだ
「MSも使わないものを、なぜ自分たちが使うべきなのか」という疑問が出てくる
Windows部門はWinUI/Win32を、OfficeはReactを、開発者部門はWPFとMAUIを担当している
各部門が別々に動いた結果、UIツールキットが分散 した
結局どのツールキットも中途半端なサポートしか受けられなくなっている
TeamsもAngularからReactへ移行する中でそうなった
それでもMAUIを使っていないのは事実だ
AvaloniaやWinFormsのような実績ある技術を好む雰囲気がある
MSが長期的に何を推していくのか不透明だ
Blazorもあるが、Reactの代替というより社内向けアプリ作成寄りだ
ちなみにGoogleも、Flutterを自社アプリで積極的に使っているのかは疑わしい
Teamsは2017年リリース、MAUIは2022年公開
Reactへ移行した時点もMAUI以前だ
ただ、MSがMAUIを十分に dogfooding していないのは懸念材料だ
最近はMAUI関連の人員削減の話もあり、社内の信頼が弱いように見える
Flutterが5年先行していた点も考慮すべきだ
それでもMSがMAUIに本気で取り組んでいないという印象は拭えない
いつも サポート終了 で終わる
標準的なWeb技術を使うほうが精神衛生上いい
(MAUIを擁護しているわけではない)
念のため整理しておく
.NET MAUIはもともとAndroid、iOS、macOS、Windows向けアプリを1つのコードベースで作るフレームワークだ
今回 Linuxとブラウザ が追加されたということだ
MacでHello Worldアプリを作ってみたが、設定はかなり複雑だった
それでも久しぶりにXAMLを書いたのは懐かしかった
開発用ソフトウェアを作りながらクロスプラットフォームGUIを探していた
最初はMAUIを試したが、インストールの時点から悪夢 だった
基本的なUI機能すらサポートされていない
次にAvaloniaUIを使ってみたが、まったく逆の体験だった
インストールも簡単で、少し検索しただけで 透明な枠なしウィンドウ のようなものも簡単に実装できた
Visual Studio統合は少し物足りないが、MAUIよりはるかに先を行っている
Silverlightの復活 のようだ
参考: Microsoft SilverlightのWiki
Chromeではデモがほとんど動かない
スライドパズルは反応が遅く、戻る矢印が固まる
リロードすると最初の画面に戻る
時刻ピッカーと日付ピッカー も配置がずれていて操作しづらい
全体的にひどい
関連スレッド
「Launch MAUI in your browser」セクションの「Word puzzle」デモを実行したところ、
「Randomize」を押すとタイルがシャッフルされ、その途中で上部の矢印から戻ると 画面が完全にロックする
背景にはパズルが残り、メニューが上に重なって何もクリックできない
複数のブラウザで同じ現象が起きる
デモリンク
クリック&ドラッグが不安定で、視覚的フィードバックもない
タイルは動かず瞬間移動する
いっそワンクリック操作かアニメーション移動のほうがよかっただろう
他のユーザーも同じ問題を指摘
RPN電卓は数字をスタックに入れることすらできない
本当に CADソフトを作れるUIツールキット が切実に必要だ
WebViewのように見えるアプリにはもううんざりだ
この10年のWeb UIトレンドは本当に嫌いだ
タッチ中心で大きく、余白が多く、無意味なアニメーションにあふれている
情報密度と使いやすさ 重視の昔のUIに戻ってほしい
日本のWebサイトを見ると、その点が良い
Avaloniaのデモリールを見ると、.NET GUIスタックでも 動画編集ソフトや地図分析ツール のようなものが作れる
Avalonia Showcase
単なる天気アプリやToDoアプリしか作れないレベルなら意味がない
WPFやWinFormsもまだ存在する