皆さんこんにちは、マリモです
突然ですが、皆さんは業務でWindowsアプリを開発する際はどんな技術を使われていますか?
低レイヤーのWin32APIから、今どきだとWeb系技術のElectronなどがありますが、.NET FrameworkだとWindowsFormが有名ですね
WindowsFormは.NET Framework1.0から実装されているAPIですが、かれこれ20年近く経過している技術にも関わらず、今でもメインの開発環境として君臨しているようです
かくいう私もWindowsFormでちょくちょく業務アプリを開発しているのですが、以前Windowsタブレット向けにアプリを開発した際に以下の点が気になっていました。
- すぐUIが壊れる
- タッチ操作だと不具合が多い
- デザインの自由度が低い
特に二番目に関しては致命的で、マウス操作しか無かった時代に作られただけあって、至るところで不具合が頻発しました。。。😣
そこで今回業務アプリを作るにあたってWPFを採用してみましたが、これがめちゃくちゃ良かったです😊
まずXAMLでのUI開発ですが、最初はWindowsFormのコントロール配置と同様にドラッグ&ドロップでデザイナーで開発をしていました
ところが実はこれが一番WindowsFormからWPFへの移行でハマる失敗だったらしく、途中でGridやStackPanelを活用するとかなりスッキリしたデザインで書けるようになりました
またデータバインディングに関してもWindowsFormだとイベント内で逐一コントロールの変更をロジックで制御していたと思います
ところがWPFだとXAML内のバインディングの定義だけでButton等の色を変えられるため、そもそもロジックを状態としてUIに組み込めてしまいます
MVVMまではまだ手をだしていませんが、ロジックとUIの切り離しはやはり便利ですね😃
という感じでWPFの良いところを挙げてみましたが、デメリットとしてWindowsFormに比べるとXAMLが若干ややこしい点やWindowsFormと一部コントロールが異なるあたりは気になりますね
ただそれでもWPFのメリットは非常に大きく、正直ネットの至るところでWPFがオワコン扱いされているのを見ると、やはりどんな技術も一度は自分で体感してみるべきだとつくづく感じました