MS_WPF - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

WPF

概要

Windows Formsの後継のUIテクノロジである。

  • WPF は、Windows Forms の問題点を解決した
    Windows の画面構築技術である。
  • 優れたアーキテクチャを採用しているが、下記の理由により、
    実装難易度は高い。

移行メモ(正式名称): WPF = Windows Presentation Foundation
.NET Framework 3.0(2006)で WCF / WF / CardSpace と共に導入された。

詳細

特徴

  • XAMLというマークアップを使用するのが最大の特徴となっている。

    • XAMLは使いこなせば非常に優れた仕組みであるが、難易度が高い。
    • XAMLは、マークアップ言語ではあるものの、
      以下のような複雑な処理の実装に使用される。
      • コントロールの表示のカスタマイズ
      • データバインディングを行うBindingマークアップ拡張
    • Visual Studioデザイナとも連動するが、
      XAMLをテキストエディタで直接記述する必要があるケースがある。
  • 各コントロールは、Window Controlではなく
    ウィンドウハンドルを持たない(独自描画)。

  • ClickOnceと、ブラウザの中でWPFを動作させる
    XAML ブラウザー アプリケーション (XBAP)」をサポートする。

補足(難易度が高い理由): 本ページは「難易度が高い」と繰り返すが、
その内実は次の 3 つに整理できる。実務ではこれが採用判断を左右する。

要因 内容
依存関係プロパティ 通常の .NET プロパティではなく DependencyProperty を登録する必要がある。値の優先順位・継承・コールバックという独自の仕組みを理解しないとハマる
データ バインディング Binding / INotifyPropertyChanged / ICommand を前提とした MVVM への発想の転換が要る。イベント ドリブンの延長では書けない
テンプレートとスタイル ControlTemplate を差し替えて外観を作る。強力だが、既定テンプレートの構造を知らないと壊れる

逆に、これらを理解した上での表現力・保守性は Windows Forms を大きく上回る
特に MVVM による「UI とロジックの分離」は単体テストの容易さに直結する。

機能 / アーキテクチャ / コントロール

SI、エンプラ系のドメインでの実績について

状況

このため、2006年に .NET 3.0 に同梱されてリリースされているが、
”個人的感覚では”、Windows Formsと比べると、
SI・業務アプリでの採用実績や開発経験者の少ない状態が続いていると思う。

  • (1)

    先日行った開発者向け調査の結果を見ると、名前は聞いたことあるけど
    実際には開発したことない、という方がまだ大半かもしれません。
    
    Windows フォームから Windows Presentation Foundation (WPF) へ
    MSDN オンライン チームブログ
    
  • (2)

    今回の.NET中心会議では参加登録時にアンケート調査を行っているのですが、
    その結果を見ると、WPFの利用者は非常に少ないようです。
    
    いま使うべき、学ぶべき.NETテクノロジはどれ? - @IT
    

トレンド

最近(2015年現在)のトレンドとしては、

  • HTML/CSS/JavaScriptやHTML5
  • スマホ ネイティブなど

のUIサブシステムが重視されている。

この理由は、

  • スマホ、タブレット向けにUIを提供できる、クロスプラットフォーム性が重視されている。
  • HTML/CSS/JavaScriptやHTML5で開発するWeb画面がリッチクライアントに近づきつつある。
    (また、jQuery等は体系的な知識が必要になるWPFとは異なり、スニペット的に使用できる)

などが考えられ、

それにより、Windows独自のリッチクライアント技術が下火になったのではないだろうか。

XAMLを使用して開発を行うSilverlight
Windowsストアアプリも同様。詳しくはリンク先を参照)。

補足(2026年時点での答え合わせ): 本ページの見立ては概ね当たったが、
WPF 自体は生き残ったという点が重要である。

結末
Silverlight 終了(2021年サポート終了)
Windows ストアアプリ / UWP 実質メンテナンス モード
WPF .NET Core 3.0(2019)で移植され、現行 .NET で継続。OSS 化(dotnet/wpf

生き残った理由は「Windows 業務アプリという確固たる需要があった」ことに尽きる。
一方で「XAML 系 UI がクロスプラットフォームの本命になる」というシナリオは
Xamarin / UWP の不振で潰え、
その役割は .NET MAUI に引き継がれている。

なお「HTML/CSS/JavaScript が優勢」という予測はそのまま現実になり、
.NET 側の回答は Blazor となった。

参考

microsoft.com

@IT > Insider.NET


Tags: 移行, .NET開発, UIサブシステム, WPF/Silverlight, XAML

⚠️ **GitHub.com Fallback** ⚠️