Avaloniaは、C#とXAMLでデスクトップ・モバイル・組み込み・WebAssembly向けアプリを開発できるクロスプラットフォームUIフレームワークです。対応範囲はWindows・macOS・Linuxなど主要デスクトップOSからモバイルやブラウザまで及び、単一コードベースからUIを描画できます。WPFやXamarin.Formsの後継として位置づけられている、.NET向けUI基盤を目指すプロジェクトです。
Avalonia.Baseが提供する共通レイヤーの上に、Skiaによる描画エンジンと各OS向けバックエンドを積み重ねる構成です。XAML側はAvalonia.Markup.Xaml.Loaderがコンパイルし、論理ツリーとビジュアルツリーに変換してからSkiaで実際の画面を描きます。Windows向けにはAvalonia.Win32、Linux向けにはAvalonia.X11、macOS向けにはnative/Avalonia.Native配下のObjective-C++コードが、それぞれウィンドウ管理や入力処理を担います。native/Avalonia.Native/src/OSXには、AvnView.mmやWindowImpl.mmなどウィンドウ表示・キー入力・テキスト入力方式を扱う実装が並んでいます。さらに.nuke配下のビルドスクリプトと大量の.ncrunchプロジェクト設定が、パッケージ生成と単体テストを自動化する土台になっています。Avalonia.Headless系のプロジェクトも見られ、画面を出さずにUIロジックを検証する仕組みも用意されています。
- STEP 01
build.shまたはbuild.cmdを実行すると、.NET SDKや各種ワークロードの有無をまず確認される場面に出会います。
- STEP 02
Avalonia.slnxをIDEで開くと、Avalonia.BaseやAvalonia.Controlsなど数十の中核プロジェクトが並ぶ大規模ソリューションだと分かります。
- STEP 03
ControlCatalog系プロジェクトをデスクトップ向けに起動すると、Button・TextBoxなど各種コントロールを一覧できるカタログ画面が立ち上がります。
- STEP 04
Avalonia.Headless.XUnitやNUnit向けテストを走らせると、実画面を表示せずにUIロジックの検証結果だけを確認できます。
- STEP 05
macOS向けにnative/Avalonia.Native配下をビルドしようとすると、XcodeプロジェクトとObjective-C++のビルド環境が必要だと気づきます。
ソースからビルドすれば、Windows・Linux・macOSなど各OS向けのAvaloniaランタイムと、動作確認用のControlCatalogサンプルが手に入ります。加えて.nukeとncrunch設定群により、単体テストや描画テストを自動で回せる開発基盤も一緒に得られます。
巨大なモノレポで、デスクトップ・Android・iOS・ブラウザ向けSDKやワークロードを一通り揃えないと全体ビルドが通りにくい構成です。
macOS・iOS向けのネイティブ部分はObjective-C++で書かれており、Xcodeでのビルドが別途必要になります。
与えられた資料には実行時のスクリーンショットや動作ログが含まれておらず、実際の見た目や性能は書面だけでは判断できません。
C#とXAMLで複数OS向けUIをひとつのコードベースから作りたい開発者、特にWPFやXamarin出身者に向いた基盤です。Avalonia.Base・各OSバックエンド・Skia描画・XAMLコンパイラという層構造と、.nuke/ncrunchによる自動テスト網が確認できるため、構造面での信頼性は資料だけからでも判断できます。ただし実際の見た目やパフォーマンスは、手元でControlCatalogなどを動かして確かめる必要があります。