Chapter 02

Avalonia UIの特徴

いぬいぬ
いぬいぬ
2024.11.13に更新

特徴

  • WPF(Windows Presentation Foundation)によく似てる
    • 体感7割が同じ
    • でも似てるだけで互換性はないよ
    • WPFを知ってるととっつきやすい(ノウハウが使える)
  • UIはOSのものを使わず独自描画
    • どこでもだいたい同じ見た目にできる
    • 描画エンジンはGoogleのSkiaやDirect2D
  • 対応プラットホームが多い
    • 対応済: Windows / macOS / Linux / iOS / Android / WASM / Tizen
    • 対応予定: visionOS
    • 独自描画なので新プラットホームに対応しやすいそうです
  • デスクトップアプリが得意
    • モバイルもWASMもできるけど
    • ノウハウが多いのはデスクトップアプリ
    • デフォルトでOSのライト・ダークテーマに対応
  • MVVM[1]やMVU[2]で作れます
    • 画面はコードベースの他、XAML[3]でも作れます
      • C#+XAML+MVVMで作るパターン
      • C#+XAML+コードビハインドで作るパターン
      • F#+MVUで作るパターン
      • C#/F#だけで作るパターン

🤒よくある誤解

❌ WPFをクロスプラットフォーム対応したもの

  • WPFをクロスプラットフォーム化する有料サービスの「Avalonia XPF」とは別物
    • 「Avalonia "UI"」と「Avalonia "XPF"」は別物なので注意
Avalonia UI Avalonia XPF
これはなに UIフレームワーク サービス
価格 無料 有料
誰向け 誰でも 企業のみ
  • Avalonia UIは基本的には「いちから作る用
    • WPFとは互換性なし
      • 特にStyle周りはCSS風で全然違う
      • StatusBarみたいな使われなくなったコントロールはなし
    • WPFからの移植はしやすい

❌ Microsoft製

  • AvaloniaUI OÜ」というエストニア拠点の会社が作ってます
  • 一時期.NET Foundationに所属していましたが離脱しています

❌ 画面の設計はXAML[3:1]が必須

  • Avalonia UIの画面はC#やF#などのコードベースでも作れます
  • ある程度の規模(中規模~)やWPFのノウハウが使えるようにXAMLも使えるようになってる、という感じです
    • MVVMで組む場合はほぼXAMLを使うことになると思います

❌ クロスプラットフォーム処理ライブラリ

  • Avalonia UIは「UI」のフレームワークです
  • クロスプラットフォーム処理のためのライブラリやフレームワークではありません
    • モバイルでバッテリー残量を取得する、みたいな機能のサポートはありません
    • MAUIとかの外部ライブラリを使う前提です
脚注
  1. Model-View-ViewModel ↩︎

  2. Model-View-Update ↩︎

  3. .NET系で画面設定に使われるXML ↩︎ ↩︎