【WPF】WPFってなんですか?

記事内に広告を含みます

WPFについて

WPFってなに?
WPF(Windows Presentation Foundation)は、Microsoft社が開発したGUI(グラフィカルユーザーインターフェース)開発用のフレームワークです。
WPFの特長は?
WPFでは、GUIのデザインを決まったパーツではなく、XAMLと呼ばれる拡張マークアップ言語を使って、いわゆるXMLのように”<>”でタグを記述して画面をデザインしていきます

かつて、.NET Frameworkのアプリを開発するときに主流だったのはWindows Formsでした。しかし、デザインパーツは決まったものを使用するため「デザイン性」が課題でした。

その点、WPFは自分好みのデザインのパーツが自作できるなど、非常にカスタマイズ性に優れています
WPFを使うメリットってあるの?
WPFは画面表示をXAML、ビジネスロジックをC#で記述するように構成されているため、画面設計とロジック設計を別々に進めることができます

このように、WPFというのは『GUIデザインの自由度の向上』と、『アプリケーション開発の並行タスク化』を目指したフレームワークということが言えるのではないかと思います。

WPFを使うには

WPFはVisual Studio上で動作しますので、以下の記事からダウンロード&インストールしてもらえば利用することができます。

WPFの特長を感じてみる

まずはWPFでアプリを作ってみる

アプリの仕様

AボタンおよびBボタンをクリックした数が表示されるアプリを作ります。

ボタンは交互に押すことを強制するために片方をクリックすると非アクティブになり、もう一方がアクティブになるようにします。

アプリの画面

アプリの画面はこんな感じです。

Windows.Forms版
WPF版

Windows.Forms版のソースコード

Windows.Formsでは、コード上で参照するときにわかりやすくするためにパーツのプロパティからNameを設定します。

WPF版のソースコード

通常、WPFのプロジェクトを新規作成すると「①.xamlファイル」と「.xaml.csファイル」が生成されます。

WPFはこの①にビューを②にビジネスロジックを記述するように設計されているのですが、今回はMVVMパターンでアプリを作成したので、「①.xamlファイル」のみ使用します

一方、ビジネスロジックについては、追加したViewModelとModelのうちModelに記述することにしました

補足

アプリ作成は、MVVMフレームワークのPrismを利用しています。

MVVM』および『Prism』については、こちらで詳しく解説しています。

これでひとまずWindows.Forms、WPFともに同じ動作のアプリを作成することができました。

もしもアプリの仕様が突然変わったら・・・

ある日、アプリの仕様変更の依頼があり、『Labelコントロールへの表示ではなく、TextBoxへの表示に変更になってしまった』としましょう。

すると、Forms版およびWPF版のそれぞれ以下のような変更が必要になります。

TextBoxに変更するためにNameプロパティを変更します。

さらに、これに合わせてロジックも変更する必要があります。

WPF版の方はビュー側のXAMLだけ変更すればOKです

アプリの画面

画面はそれぞれ以下のようになります。

Windows.Forms版
WPF版

結論

Windows.Formsで作った方はビュー側とロジック側の両方とも変更しないといけませんでした

一方、WPFで作った方はビュー側を変えるだけで済みました

システム開発の現場では、改修や機能追加の際はなるべく触る範囲を小さくするのが鉄則です

その理由は、コードを触るだけバグを盛り込んでしまうリスクが増えるからです。

その意味で、『そもそもロジック側を触る必要がない』というお墨付きは、開発時の心強い味方になってくれるのです。

その他にもWPFの特長は以下のようなものがあります。

WPFの特長
  • 画面描画性能が高い
  • レスポンシブ対応している
  • テキストベースで画面レイアウトを構築するのでGitなどのバージョン管理システムと相性がよい(差分が見やすい)

参考までに、今回の記事のソースコードは以下のGithubに置いています。

WPFに先はあるのか?

よくWPFについて議論されるのが、WPFの将来性についてです。

結論から言うと、『まだまだ生き延びるフレームワークだが、活躍の場は少ない』ではないかと思います。

10年以上前のシステムでは、Windows.Formsが当たり前のように使われてましたが、WPFの登場と同じ時期にWPFの将来性を大きく変えるあるものが登場しました。

スマートフォンです。

スマートフォンの登場により、スマートフォンでも業務システムにアクセスしたいという当然とも言える需要が出てきました。

すると、WindowsだけでなくAndroidやIOSでも動作する、いわゆるクロスプラットフォームのアプリケーションを開発する必要があります。

そのため、近年ではデータの処理や保存をバックエンドとなるサーバーで行い、フロントエンドとなるPC上でWebAPIを介してデータを授受し画面上に表示する(Webアプリケーション)が主流になっており、Windowsでの動作に限定されるWPFにはあまりスポットが当たらないのが現状になっているのです。

しかし、WPFは画面のカスタマイズ性に非常に優れており、いわゆるjavascript系のフロントエンド向け言語よりも柔軟な画面設計が可能です。また、何より開発元があのMicrosoft社なので、そう簡単にWPFを過去のものにするような扱いはしないでしょう。

以上のことから、今からプログラミングを学ぶ人にはあまりおすすめしませんが、より凝ったデザインに仕上げたい場合や他の言語でイメージ通りの画面が作れない場合は一つの選択肢になるんじゃないかなと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です