質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.54%
UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

5回答

77111閲覧

新規開発ソフトのWindowsForms、WPF、UWPの選択について

退会済みユーザー

退会済みユーザー

総合スコア0

UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

4グッド

7クリップ

投稿2017/05/21 09:00

編集2017/05/21 22:28

Windowsプラットフォームでソフトウェアを新規開発するのですが、チーム内でWindowsForms、WPF、UWPのどれを採用するか割れています。

個人的には、今からはUWPなのかなとは思っていましたが、UWPを調査するとガチガチのセキュリティや配布方法に難があるなど、ちょっと過剰制約な気がします。

ならばWPFかと思いますが、WPFは実質ほとんど普及していないというのも懸念の一つです。
WPF(MVVM)の仕組みが公表されてしばらく経つそうですが、結局WindowsFormsが普及しています。

WPFやUWPなどのMVVMで作成することが良いことは確実なのですが、色々調べたりチーム内事情を鑑みると、WindowsFormsを選択すべきなのかとも思えてきました。

そこで、実際に新規開発する際に、どれを選ぶべきか、またはその選択基準はどうなのかをアドバイス等いただけませんでしょうか。
特に、同じように新規でソフトウェア開発された方の経験等あれば是非聞かせていただきたいです。
よろしくお願いいたします。

ちなみに、新規開発するソフトウェアとその環境等の条件は、以下の通りです。

  • Windows上での動作を前提としている
  • 対象OSはWindows7またはWindows10を前提としているが、UWPで開発することになるならば、Windows7は外すことを検討できる(ただしUWPの他との優位性を説得できるならば)
  • 業務用アプリである
  • 既存ソフトウェア(Win32)の入替開発としての新規開発ソフトウェアであるので、今まで動いていたのに動かないというのは厳禁(信頼性が重要)
  • チームメンバーのソフトウェア開発経験はWin32アプリが主。(WindowsFormsさえ経験ない者が多い)
  • サーバ・クライアント構成である。(調査したところ、UWPはSQLServerとの接続は不可能?らしい。別途Webサービスを立てる必要がるとのこと)
9nahito, ssmxgo, BeatStar, pitfall👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

回答5

9

将来を見据えた時、一見 UWP かなと思います。しかし、UWP もそれほど盛り上がっていない、なんちゃってマルチプラットフォームで、Windows が正式に Linux を取り込んで、仮想マシンでなく標準機能で Ubuntu になれることを選択した今、果たして本当に将来があるのかどうか疑問に思います。

UWP+C# には HTML+JavaScript という強力なライバルがいますし、MS ですら Visual Studio Code の開発に UWP ではなく HTML を採用しました。

そうなれば、将来の投資に全力を傾けるより、Forms や WPF で現状に対応する選択肢が魅力的に映ります。

WPF は開発しやすく外観が美しく作れるという特長はありますが、学習コストは高めで、外観を美しくしないといけない無言の圧力がかかるため、社内のこれまでのコード資産次第では、ビジネスソフトで無理して採用するべきかどうかも疑問です。

Forms の高解像度への対応を危惧する声もありますが、現在の Forms は GDI+ ではなく再び GDI を採用することで高解像度への対応を図っていますので、たちまち困るというものでもありません。

私の意見をまとめると

  • どれを選んでも将来性に安心はできない。Electron を選ぶ方がまだ不安が少なそう(もちろん私の個人的な印象です)
  • 将来が不明瞭な現時点で学習コストや過去の資産をどう考えるか

の二点です。

投稿2017/05/27 08:10

Zuishin

総合スコア28656

usamino, 9nahito, ozwk, BeatStar, tmz, ebiryo, ItSANgo👍を押しています

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

7

こんにちは。

考え方としては、WinForms/WPF or UWP ですね。

WinFormsとWPFを比較すると、
旧資産やライブラリに引っ張られない限りはWindFormsは私は外します。
個人的な経験から言うと、高DPIや、透過などグラフィック周りの制約が面倒になることが多いです。
ただ、チームビルディングが既に終わっているようですのでチームメンバーのスキルとも合わせたほうが良いと思います。
Win32に一番近いのはWinFormsかなと思います。

WPFかUWPかは悩ましいので要件次第だと思います。

リプレースであれば、既存ソフトウェアの機能と新しい要求などを棚卸し、そのうえで選定されたほうが宜しいかと思いますが、WPFであればUWPよりも要求事項に耐えやすいとは思います。
仰っているように機能上の制限が少ないので。

投稿2017/05/21 09:37

Tak1wa

総合スコア4791

usamino, 9nahito, ozwk, TAKAYASU, BeatStar, ItSANgo👍を押しています

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/27 07:45

ありがとうございます。 検討させていただきます。
guest

5

例示された条件を考慮すると、Win32で構築するのが一番無難なような気がしますが、なぜ選択肢にWin32が無いのでしょう?

業務アプリということなので、業務ロジックは使い回しでUIを作り変えるレベルなら、どれを採用してもそう変わらないのではと思います
諸説あると思いますが、個人的な意見を書かせてもらうと
・業務アプリでUWPを採用することは当面無い(ひょっとしたら永遠にないかも)
・DataGrid系のコントロールで件数の多いデータの表示があるならForms
・UIに凝って欲しいという要求があるならWPF(特にダッシュボード的なアプリ)
な感じでしょうか

個人的には業務アプリでDataBindingやItemTemplateが使えると楽なことが多いのでWPFなのですが、私も経験しましたがWPFは未経験だと全く捗らない時期がある
あとWPFだからといってMVVMを採用しなくてもいいですというのは声を大にして言いたい
→コードビハインドで書けばFormsもWPFも大体同じに書ける
これに縛られ過ぎると「WPF=使えない」とチームで言われだすことが多い気がする(単にMVVMの理解度?)
個人差はあると思いますが、ダイアログ1つ出すのにも泣く人も居るようです

投稿2017/05/23 18:38

dojikko

総合スコア3939

alg, 9nahito, ozwk, TAKAYASU, BeatStar👍を押しています

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/27 07:38 編集

ありがとうございます。 おっしゃる通り、リプレース後はもちろん機能アップもしますが、外向きにはUIのモダン化が主になります。 しかし、ロジック部分は初回リリースが約20年前のもので、いかんせん作りが悪い(OOPですらない)ため、内部的には大幅なリファクタリングが目的の一つとなっています。(質問に記載しておくべきでした。すみません。) そのような背景もあり、せっかく一から作り直すならUIデザインを綺麗に簡単に作れる.net Frameworkを使用しようとなりました。 また、個人的にはC#の経験が乏しいため、ステップアップも含めてC#を用いて開発をしたいという考えがあります。 WPFの件、体験談を参考にさせてもらいます。おっしゃる通り、バインディング等の説明をすると、早くも「WPF=使えない」という印象をもったメンバーもおりました。ですので、WPFにするとしても、そこらへん、ある程度は柔軟に進めていく必要はあるのかなと思います。
guest

4

Windows.Forms は高解像度環境への対応が絶望的なので、「今後」で言えば避けるのが無難です。

WPF の方が(まだ)機能的な面で有利ですが、将来性という面では少し不安を感じます。
(まだ当分の間はサポートし続けられるでしょうが、大きな発展は望めないかもしれません)

が、UWP はご存知のように制約が多いです。
(今後、制約が緩んだり、条件付き?で回避が可能になる可能性がないわけではありません)

詰まるところ、UWP の制約が許容出来るなら UWP, 許容出来ないなら WPF ではないでしょうか。

投稿2017/05/21 22:59

hidori

総合スコア402

9nahito, ozwk, TAKAYASU, BeatStar👍を押しています

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/27 07:42

ありがとございます。 やはり、新規開発なので、WinFormsは避けたほうがよいですよね。 ソフトウェアの開発工数や特性上、UWPの制約は許容できないだろうという話になっております。 参考にさせていただきます。
guest

4

ベストアンサー

WinFormsは出来るだけ外したいと考えます。

ですが、説明文を読む限り、経験が少ない人が多いとのことなので
WPF・UPFで開発するよりかはWinFormsでの開発のほうがスムーズに進めることができるかもしれません。

.NetFramework4.7のリリースによりWindows10 Creators Update上での実行のみでWinFormsにも高DPIのサポートがされるようになるのでそのあたりも説明の要素として提案してみては如何でしょうか。

投稿2017/05/21 13:29

編集2017/05/21 13:31
TAKAYASU

総合スコア146

9nahito, Tak1wa, LLman, BeatStar👍を押しています

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/27 07:44

ありがとうございます。 検討させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.54%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

同じタグがついた質問を見る

UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです