
2026/03/23 0:43
**MAUI が Linux に登場します**
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Avalonia は、.NET MAUI アプリが Linux と WebAssembly 上で動作しつつ、すべてのプラットフォームで外観と感触を一貫して保つことができるプレビュー バックエンドをリリースしました。発表は Avalonia 12 と .NET 11 のプレビューとともに行われ、新しいバックエンドはネイティブ OS コントロールと Avalonia 自身で描画される UI 要素の両方をサポートします。
セットアップ:
- 標準的な MAUI アプリを作成する。
NuGet パッケージを追加する。Avalonia.Controls.Maui.Desktop- ターゲットを
に設定する。.net11.0
内でMauiBuilder
を呼び出す。UseAvaloniaApp
チームは既存のアプリ MauiPlanets, 2048, AlohaAI, MyConference, TwentyOne Weather, MapApp を複数ポートし、バックエンドを検証しました。これらのポートではダーク/ライトテーマサポート、安全なコードトリミング、NativeAOT 互換性、カスタム タブバー、WebAssembly 用の CORS プロキシが維持されています。また、新しいハンドラにより、既存の .NET MAUI ライブラリ(例:
SkiaSharp.Views.Maui, Mapsui.Maui)は変更なしで Avalonia プラットフォーム上でも動作します。
作業中に Avalonia はバージョン 12 で新しいナビゲーション API とコントロールを導入し、バックエンドがそれらを活用しています。将来的な計画としては、Avalonia 用の専用 Maui.Essentials 実装と WinUI 相互運用性により完全なネイティブプラットフォームサポートを実現することがあります。開発者にとっては、UI の外観をより厳密に制御しながらクロスプラットフォームの一貫性を保つことが可能になり、MAUI が Linux および WebAssembly 市場へのリーチを拡大する潜在的なメリットがあります。
本文
Avalonia 12 と .NET 11 プレビューの併用
.NET MAUI 用の Avalonia バックエンドの最初のプレビューを発表できることを嬉しく思います。
これにより、Linux や WebAssembly など新しいプラットフォームへ .NET MAUI アプリをデプロイできるようになり、Avalonia を活用できます。
昨年秋以降、Avalonia の強力な機能を .NET MAUI に持ち込むために大きく前進しました。
Linux と WebAssembly のサポートに加え、このバックエンドは Avalonia が掲げるクロスプラットフォームの一貫性をさらに推進します。ネイティブ UI はホストプラットフォームと融合し、描画 UI はすべてのプラットフォームでクラシックな外観を保ちます。
4 ステップで始める
- .NET MAUI アプリを作成
NuGet パッケージを追加Avalonia.Controls.Maui.Desktop
ターゲットフレームワークを追加net11.0
上でMauiBuilder
を呼び出すUseAvaloniaApp
これだけです。
net11.0 ターゲットを実行すると、Avalonia ブートストラッパーなしにアプリが起動します。ソースジェネレーターは拡張・無効化可能で、完全な制御が取れます。例はリポジトリに掲載されています。
Avalonia をみんなのために改善
このプロジェクトは Avalonia 自体を改善する貴重な機会となりました:
- .NET MAUI と Avalonia のコントロールセットのギャップを埋め、MAUI 専用コントロールを排除。
- Avalonia 12 に搭載される新しいナビゲーション API とコントロールを導入。
- すべての .NET MAUI ハンドラーは Avalonia のプリミティブに基づき、Avalonia API を通じて完全にカスタマイズ可能で、描画ベースのためプラットフォーム間で見た目が同一です。
テスト方法
既存の .NET MAUI アプリを移植し、新規アプリも作成しました:
| アプリ | 備考 |
|---|---|
| .NET MAUI Control Gallery | サービスとコントロールをネイティブ版と比較テスト、特に WASM で。 |
| AlohaAI | Jakub Florkowski と GitHub Copilot の協力によるプロジェクト。LLM コンセプトをゲーム化して教える。ダーク/ライトテーマの追加、trim‑safety、NativeAOT サポート、カスタムタブバーを実装。すべての MAUI プラットフォーム(ネイティブまたは描画)で動作。 |
| MyConference | .NET MAUI Live Stream から「Agentic AI」をデモ。テーマトリミング修正と WebAssembly 用 CORS プロキシが必要でしたが、他のすべてのデスクトッププラットフォームで Avalonia とネイティブハンドラーともに完璧に動作。 |
ネイティブと描画コントローラーを同時に実行することで柔軟性を示しています:
- ネイティブ MAUI は OS コントロール、タブバー、ナビゲーションページを使用し、ホスト OS とより統一感があります。
はすべてのプラットフォームで一貫した見た目と振る舞いを提供します。Avalonia.Controls.Maui
サンプルアプリ
| サンプル | 特徴 |
|---|---|
| WebView WeatherTwentyOne | 元は .NET 6 用に作られ、FlexLayout でサイドバーとグリッドを実装。オープンソース WebView を利用し、Linux と WASM で動作します。 |
| GraphicsView | MAUI の やプリミティブ上に構築されたコントロールがシームレスに機能;ハンドラーは新しいキャンバスへ描画。 |
| SkiaSharp.Views.Maui | 依存ライブラリ(例:Mapsui.Maui)が Avalonia MAUI と相互運用できるようラップ。MapApp はデスクトップ、WASM、ネイティブ MAUI 上でオーバーレイコントロール付きのシンプルなマップビューを表示します。 |
今後の展望
- Avalonia ベースの
の独自実装に取り組み、API サポートを段階的に拡張。Maui.Essentials - WinUI との相互運用性を計画し、Avalonia コントロールをホストして .NET MAUI ネイティブプラットフォーム物語を完結させる。
- ネイティブプラットフォーム向けにコントローラーライブラリ作者が描画メソッドへ拡張できるよう、シンプルなパターンを確立。
.NET 11 の一般公開に向けてワクワクしています。Avalonia MAUI を試し、新しいコントロールとライブラリを移植してみてください。そして、すべての対象プラットフォームで Avalonia が提供する価値を体感してください。