概要
サラリーマン個人開発者が同一コードで、Windows, Macで動くGUIアプリを作る場合、何を使うべきか?サーベイしてみました。
前提として、サラリーマン個人開発者は時間が最も大事なので、かっちょ良さ、ユーザーの利便性を落としたり、お金を払うことで時間が短縮できるならそうするべき、という価値観を仮定します。
なので、敷居の低さ、初心者の利用実績、**ユーザーが多いか?**を重視します。
まとめ
結論
WindowsFormsが良さそう。
ネック1
ネイティブでは無いことがネックですが、ビジネスロジックは全てC++で書いてDLLでAPIを提供して、C#からそのAPIを叩くという開発スタイルで良さそう。どうせ、全てC++で書く場合も同じ構造になる。APIを叩くことがボトルネックになるほど性能にシビアなアプリだと避けるのが良さそう。
ネック2
.NETをインストールしていないと起動できないことがネックですが、今後減ってくるはずなのと、ドキュメントで緩和できると思うので、妥協するのが良さそう。
ネック3
かっちょ良くないですが、平凡ということは親しみやすく使いやすいUIということなので、トントンです。
メリデメ
観点 | Qt | WPF | WindowsForms | EssentialStudio | FireMonkey |
---|---|---|---|---|---|
かっちょ良さ | 〇 | 〇 | × | 〇 | 〇 |
枯れているか? | 〇 | 〇 | 〇 | 〇 | 〇 |
ユーザーが多いか? | 〇 | 〇 | 〇 | × | × |
ネイティブか? | 〇 | × | × | × | 〇 |
依存DLLは少ないか? | △ | × | × | × | 〇 |
敷居の低さ(主観/直感) | × | 〇 | 〇 | × | 〇 |
LGPLでないか? | × | 〇 | 〇 | 〇 | 〇 |
初期コスト(金銭)は低いか? | 〇 | 〇 | 〇 | 〇 | × |
初心者の利用実績は多いか? | × | 〇 | 〇 | × | × |
macで使えるか? | 〇 | × | 〇 | ? | 〇 |
ライブラリ一覧
Qt
歴史が長いのと、C++で使えるという部分に惹かれているが、結論以下の否定的な意見を参考にして却下。
否定的な意見1
https://stackoverflow.com/questions/2201365/quickest-easiest-gui-mfc-or-c-sharp-or-qt-or
速攻でGUI作りたいなら、C#かDelphi使えって書いてる。直感的にもそうだよな。
否定的な意見2
https://softwareengineering.stackexchange.com/questions/88685/why-arent-more-desktop-apps-written-with-qt
敷居の高さ(ゴツさ)やLGPLであることが敬遠されているらしい。
タイトル(なぜQtで書かれたアプリは少ない?)が本当だとすると、実績として使いづらいから少ない可能性がある。
直感的に避けたほうが良いような気がする。そういうときってたいがい半年後くらいに書き直すんだよな。
WPF
敷居は低い。昔からあったので枯れている。
http://www.atmarkit.co.jp/fdotnet/dotnettips/1061wpfthemes/wpfthemes.html
かっちょ良いテーマを当てられるらしいです。
そもそも、WPFがmacで使えないので惜しいですが論外。
WindowsForms
敷居はWPFと同程度。かっちょ良さで比較すると、WPFに劣る。ネイティブではないところと、ユーザーが.NETをインストールしていなくて起動できないというお問い合わせが来るのがネック。
EssentialStudio
敷居はWindowsFormsより高そう。ただし、WindowsFormsよりかっこよくなるかも知れないので後で検討するのはよさそうです。C#なので後で移行するのもたぶん簡単。
FireMonkey
Delphiに慣れている人にとっては、WindowsFormsと同程度に敷居が低そう。ただし、初心者の利用実績や、ユーザーの多さでWindowsFormsに負ける。一方で、ネイティブなので他のネイティブDLLとの連携はWindowsFormsよりは容易。良さそうですが、ネイティブが必須でなければWindowsFormsで良さそうです。
Avalonia
https://github.com/AvaloniaUI/Avalonia
C#のUIライブラリ。Starが2286個。
面白そうだが、調べるのも面倒。その時点で敷居が高い。
xwt
https://github.com/mono/xwt
C#のUIライブラリ。Starが913個。
面白そうだが、調べるのも面倒。その時点で敷居が高い。