『読みがなコンバーター』DTMメロディ譜面&ボカロ歌詞入力支援ツール Ver.Up
以前公開した「読みがなコンバーター」をアップデートしました。
C# + .NET6 + Avalonia UIでコードを書き直し、マルチプラットフォーム対応になりました。macOSでもローカルで実行できます。
こちらからどうぞ。
今回macOS版を作るにあたって、いくつかのマルチプラットフォーム対応UIフレームワークを検討したのでメモです。
Electron
デスクトップアプリケーションでも実績は多いですが、配布サイズが大きくなるのが難点。JavaScriptでデスクトップアプリを作れる!と言うとお手軽そうに見えますが、実際やってみるとUIとロジックの通信に癖があって、そんなにお手軽じゃないです。JSでWebも触りつつ、MVVMパターンに既に慣れてる人の方が向いてるのかも。(あんまりいなさそう)
Python + Kivy、PyQt、wxPython
いくつか試しました。IDEと組み合わせた総合的な開発環境としてみると、わざわざPythonでデスクトップアプリを作る人はあんまりいないと思いますが、言語自体は、インデントの扱いやシンプルな構文など、元々僕が使っていた日本語プログラミング言語「なでしこ」の仕様によく似ていて、書きやすそうに思いました。Pythonはとにかく自然言語処理や機械学習絡みのライブラリが豊富にあるので、ChatGPTで何かやろうとすると何でも揃っているPythonはうらやましく思います。(.NETでPythonライブラリをラップする方法もありますけど)
.NET MAUI
一応、Microsoftイチオシの最新マルチプラットフォーム対応UIフレームワークですが、モバイルはともかくデスクトップアプリではまだまだのように感じます。実は「よみがなコンバーター」は一度MAUIで完成させていたのですが、パブリッシュが既存の.NETアプリのようにお手軽じゃなくて、最後の最後でAvaloniaに移行しました。
具体的には、デスクトップアプリでは欠かせないDataGridがまだ実装されていない事と、マウスホバーのアクションが効かなくて数時間苦戦したんですが、なんと.NET6では実装されておらず、.NET7で実装されたばかりだということが分かりオドロキ。でも、スマホやタブレットには「ポインタ―がボタンの上にある」なんて概念は無いので、そりゃまあ、無いですよね。
MacではCatalyst動作になるので「メインウィンドウ」という概念がなく、サイズや位置の設定も公式ではアポートされていません。
モバイル以外のドキュメントやサンプルも少ないので、まだまだこれからなんだと思います。
.NET + AvaloniaUI
今回の採用フレームワークです。.NET MAUIよりも歴史は長いですし、C#でマルチプラットフォーム対応のデスクトップアプリを作る事に関して言えば、現状は明らかにAvaloniaの方が作りやすいように感じました。XAML上のコントロールやプロパティはMicrosftとは少し変わってきますが、ドキュメントもサンプルも揃っているし、そんなに苦労はしません。macOSもCatalystではなく、通常の.NETがフル機能で使えるので、フリーソフトの開発・配布にも向いていると思います。MAUIに無いDataGridや、DockPanelのライブラリも公開されています。ただ、日本語の情報はほとんどありません。
今回の作業で、XAMLやMVVMパターンには少し慣れたと思うので、本丸のChatGPTのクライアントソフト(まだ未公開ですが、WinForm版が完成済み)をAvaloniaで移植していこうと思います。
この記事が気に入ったらサポートをしてみませんか?