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

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

ただいまの
回答率

90.52%

  • C#

    7112questions

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

  • WPF

    692questions

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

  • Windows Forms

    111questions

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

  • UWP

    88questions

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

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

解決済

回答 5

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 22K+
退会済みユーザー

退会済みユーザー

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サービスを立てる必要がるとのこと)
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 5

+3

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/27 16:37 編集

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

    WPFの件、体験談を参考にさせてもらいます。おっしゃる通り、バインディング等の説明をすると、早くも「WPF=使えない」という印象をもったメンバーもおりました。ですので、WPFにするとしても、そこらへん、ある程度は柔軟に進めていく必要はあるのかなと思います。

    キャンセル

+3

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

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

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

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

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

私の意見をまとめると

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

の二点です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

+2

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

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/27 16:44

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

    キャンセル

+2

こんにちは。

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/27 16:45

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

    キャンセル

+2

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/27 16:42

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

    キャンセル

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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

  • C#

    7112questions

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

  • WPF

    692questions

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

  • Windows Forms

    111questions

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

  • UWP

    88questions

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