Basics/Keyword:AvaloniaAvaloniaは、クロスプラットフォームで動作するXAMLベースのUIフレームワーク。Windows、macOS、Linux、iOS、Androidをサポートする。});連載目次Avaloniaは、クロスプラットフォームなXAMLベースのUIフレームワーク。Windowsに加えて、macOS、Linux、Android、iOSでの動作をサポートする。本稿執筆時点(2017年10月16日)ではαバージョンとなっている。FrameworkでリッチなUIを持ったデスクトップアプリを構築するためのUIフレームワークだ。WPFのコードネームが「Avalon」だったことは多くの方がご存じかもしれない。「Avalonia」は「現代のC#の機能を使ってWPFを再実装しようとしたらどうなるだろう」というところから始まったオープンソースのプロジェクトだ(旧称は「Perspex」)。2.0とGTK3を使用することで、Windows以外のプラットフォームでもXAMLとC#で記述したAvaloniaアプリを実行可能となっている。本稿では試せなかったが、AndroidとiOSの実験的なサポートも始まっている。Studio(以下、VS)用の拡張機能としてインストールするのが簡単だ。Editionを使用している)。Studio」拡張機能をインストール拡張機能をインストールすると、[新しいプロジェクト]ダイアログの左側のペーンに[Avalonia]というグループが作成される。Framework用の2つのプロジェクトテンプレートが用意されている。Core用のプロジェクトテンプレートを使って、新規にプロジェクトを作成してみた。プロジェクトを新規作成すると次のような画面になる。2017残念ながら、WPFプロジェクトとは異なり、コントロールなどをツールボックスからドラッグ&ドロップしながらUIを構築するといった機能はまだないが、プレビューは可能だ。上の画像ではUIが表示されていないが、これはビルドを一度も行っていないため。ビルド後は、[XAML]タブへの入力内容が[Design]タブにリアルタイムに反映される。XAMLのパースに失敗した場合などには、エラーがあることを教えてもくれる。2017からデバッグ実行をしてみよう。すると、最終的にはdotnetコマンドを経由して、アプリのデバッグ実行が始まる。2.0をインストール済みのmacOSにコピーした。macOSでこのプロジェクトを実行するには、.csprojファイルを以下のように修正する必要がある。2.0をターゲットとするように修正している(<TargetFrameworks>要素から<TargetFramework>要素に変更している点にも注意)。gtk+3」コマンドを実行するなどして、gtk+3パッケージをインストールしておく必要もある。run」コマンドを実行するだけだ。macOSでの実行画面もちろん、プロジェクトテンプレートそのままのシンプルなプログラムだからということもあるかもしれないが、Windows上で動作するXAML+C#ベースのアプリがmacOSでもそのまま動作するというのはちょっとした驚きだ。Avalonia固有の機能Avaloniaはもちろん、WPFにインスパイアされて生まれたものだが、まるっきり同じというわけではない。その一例として、今度はMainWindow.xamlファイルに次のようなXAMLコードを記述してみた。/></StackPanel></Window>AvaloniaではスタイルはResourcesコレクションではなく、Stylesコレクションに記述するこのコードは、StackPanelにコントロールを配置するだけではなく、そのスタイルも同時に記述している。WPFはこうしたResourcesコレクションに記述していたが、AvalonではStylesコレクションに記述するようになっている。ここで注意したいのは「Selector」という記述と「Classes」という記述がある点だ(上の強調書体の部分)。Avaloniaではセレクタとクラスなどを使用した「CSSライク」なスタイル指定が可能となっているということだ。上の例なら、Classes属性に「Heading」という値を持つTextBlockについてはフォントサイズを大きく、文字色を青にするといった指定を行っている(その下のButtonコントロールのスタイル指定にはセレクタがないので、StackPnael内の全てのButtonコントロールにこのスタイルが適用される)。実際に実行した結果を以下に示す。WindowsでもmacOSでも動作している。実行画面(上はWindows、下はmacOS)この他にもWPFとは異なる部分が数多くある。Developers」ページで触れられている。詳細については「Spec」ページから参照できる。Avaloniaはクロスプラットフォームで動作するXAMLベースの新たなUIフレームワークだ。「XAMLの方言がまた1つ」といった感想を抱く人もいるかもしれないが、昨今のXAMLをベースとしたクロスプラットフォーム技術の登場は、これまでのMicrosoftテクノロジーに慣れた人が新たな世界へと進む1つの手段として有効かもしれない。興味のある方はウォッチしてみよう。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。