見た目の整ったGUIアプリにはWPFを:良い点と気になる点
公開
この記事は2021年に書いたものです。ソフトウェアのバージョンや配布状況など、いまとは異なる場合があります。
GUIアプリは見た目で選ばれる
「人は見た目が9割」という言葉があります。第一印象で人柄まで判断されてしまうのは理不尽にも思えますが、まったくの的外れとも言い切れません。
この言葉は、GUIアプリにも当てはまると考えています。ほとんど同じ機能のアプリが2つあれば、殺風景なものより、デザインに気を配ったものが選ばれるはずです。多少機能が劣っていても、見た目の良いほうが「良いもの」と受け取られることさえあると思います。
そのため、GUIアプリを作るときは見た目にもこだわるようにしています。モダンなデスクトップアプリを作れる道具として、Visual StudioとWPFをすすめたいと思います。
WPFで作れるもの

これは、グラフ以外はWPF標準の部品だけで作った画面です。ボタンとウィンドウの角を丸めたところが、こだわった点です。
さらに、マテリアルデザインのテーマを使って作り込んだのが次の画面です。

特に何もしなくても、ボタンを押したときのエフェクトなどが格段に良くなり、感動しました。ファイルサイズは標準の部品だけの場合より3MBほど増えますが、全体で5MBに満たないので許容範囲です。ついでにハンバーガーメニューも付けて、今どきの見た目に近づけました。
このアプリはVectorで無料公開していて、それなりにダウンロードしてもらえています。見た目の効果も大きいのではないかと、ひそかに思っています。
作ったときの話は「PDFの結合・分割ソフトの製作記:Vectorでの初公開まで」に書いています。
WPFの良い点
まず、XAMLで画面を記述できることです。最初は戸惑いましたが、簡単なアプリを2、3個作るうちに感覚がつかめ、慣れると快適です。Android Studioでアプリを作っている人ならXAMLのような書き方には馴染みがあるでしょうし、C#はJavaやKotlinにも似ているので、すんなりデスクトップアプリを作れると思います。
そして何より、モダンな画面を簡単に作れるフレームワークが豊富です。Visual Studio自体も歴史が長いだけあって、細かいところでVS Codeより使いやすく、気に入っています。
気になる点
一方で、Windows向けのアプリしか作れないのは気になっていました。どうせ作るなら、いろいろなOSで動くほうがいいに決まっています。
Visual StudioにはXamarinという、Windows以外のOSやモバイルまでまとめて開発できる仕組みがあると知りました。WPF並みに凝った画面が作れるなら試してみたいと思っています。
同時に、最初からクロスプラットフォームに対応した言語やフレームワークも気になっています。趣味で作っているので、効率よりも楽しそうなことをやりたくなるものです。
調べてみると、QtやElectronが見つかりましたが、いちばん気になっているのはGo言語です。Googleが作った言語で、ほかの言語にある多くの機能をそぎ落とした簡潔な設計だそうです。並行処理が得意で、速度の面でも期待できそうです。マスコットのGopherがかわいいのも、ひそかな決め手です。
GoのGUIフレームワークでは、Fyneが良さそうです。Goの勉強も兼ねて、何か作ってみようと考えています。
2022年5月の追記 いまは.NET Coreで、C#のクロスプラットフォーム対応が進んでいます。新しいPowerShellも.NET Coreで作られていて、LinuxやmacOSでも動きます。