デスクトップGUI開発を学ぶ価値はまだありますか?[閉まっている]


18

過去数年間、私が取り組んできた深刻なプロジェクトはすべて、Webベースであるか、非グラフィカルユーザーインターフェイス(サービス、コマンドラインスクリプトなど)を使用していました。WinFormsアプリをまとめて投げたり、必要なときにいくつかの簡単なWPFを実行したりできますが、MFCやQTなどの低レベルAPIを掘り下げたことはありません。

これは状況に依存することを理解していますが、一般に、デスクトップ開発についてよく学ぶのに時間をかける価値がありますか?それとも、この知識があまり重要ではないペースでアプリケーションがWebおよびモバイルデバイスに移行していますか?また、一緒に働く開発者はデスクトップGUIの専門知識を持っていると期待していますか?


5
デスクトップアプリケーションの開発は素晴らしいことですが、Knuthを愛する人にとっては、MFCを気にしないでください。Windowsデスクトップアプリジョブの95%に必要なのは、WinFormsまたはWPF / XAMLだけです。他の5%の仕事はあなたが持ちたくない。
アダムクロスランド

1
@アダム:「あなたが持ちたくない仕事の他の5%」の+1。- 仰るとおり。:)
ボビーテーブル

回答:


38

はい、そうです。プログラム開発には一種の振り子効果があります。まず、すべてがコンピューター上で直接実行されました。その後、コンピューターが複数のプログラムを実行するのに十分なほど強力になったときに、ダム端末を備えたメインフレームを入手しました。しかし、ダム端末は使いやすさの点で本当に悪いので、コンピューターが端末サイズのシステム内に適切な量のハードウェアを入れるのに十分なほど強力になるとすぐに、パーソナルコンピューターを入手し、すべてがコンピューターで直接実行されました。

その後、彼らはWorld Wide Webを発明し、メインフレーム(サーバー)とダム端末(ブラウザー)に戻りました。しかし、ダム端末は依然として使いやすさの点で非常に悪く、人々は30年前の教訓を学び直しています。 、そして我々は再びそれから遠ざかっています。最近の非常にホットな開発の多くは、ローカルで実行されるデスクトップ(またはモバイル)アプリ向けですが、機能を強化するために特定の目的でインターネットに接続できます。


5
これらの傾向は周期的に実行されることを指摘してくれた+1。ただし、ターミナルアプリがデスクトップアプリとして書き直され、ユーザーがターミナルアプリでより効率的に作業できるようになったケースを見てきました。
ラリーコールマン

2
ブラウザーとの違いは、実際にはローカルシステムでコードを実行できることであり、この機能はブラウザーの世代ごとに成長します。その結果、デスクトップアプリとWebアプリの使いやすさの違いはそれほど大きくありません。多くの人々(私を含む)にとって、GmailはOutlookよりも使いやすいです。振り子は毎回あまり揺れず、途中で停止します。基盤となるテクノロジーに関係なく、アプリはローカル部分とクラウド部分が混在しています。
ジョーリセブレヒト

13
+1、人々はデスクトップが死んだと主張し始めるとき、私は嫌いです、それはばかげています。
ハンニバルレクター博士

1
@Joeri:ほとんどの端末は、少なくともローカルで少なくともいくつかのビットとピースを実行できます。私が見た気のめいるほどの量のJavaScriptは、IBM 3270(たとえば)がローカルで実行できたことを実行します。
ジェリーコフィン

1
@Joeri Sebrichts-Gmailでタスクまたはカレンダーアイテムにメールをドラッグアンドドロップできる場合、同意するかもしれませんが、それまでは機能が少なすぎます。
ジェフ

11

デスクトップ開発を行うつもりがなくても、十分な経験を積むことをお勧めします。これにより、Webクライアントでデスクトップソリューションを使用するほうがよい場合について、十分な情報を得た意見を得ることができます。


+1:「デスクトップは死んでいる」と考え、アプリケーションをピジョンホールすることは、純粋なデスクトップ開発者が「Webアプリとしては決して良いことではない」と言うのとは正反対です。使いたいものを選びますが、本当の利点/落とし穴を知るのに十分な相手を知ってください。
スティーブンエバーズ

8

はい、しかしあなたが考えている方法ではありません。

GUIプログラミングはこれ以上難しくなく、GUIプログラミングインターフェイスに精通していること以外に専門的なスキルを必要としません。ボタンやウィンドウ、コントロールを接続するのはそれほど難しくなく、MFCのようなものを使用していた初期の時代に比べて、現代のプログラミング環境では非常に簡単です。GUIプログラミングは、必要なときに簡単に習得できるものです。

ただし、ボタンとテキストボックスの接続は非常に簡単ですが、ボタンを配置するタイミングと場所を知り、人間が使用するGUIを設計することは非常に困難です。それは非常に貴重で重要なスキルです。ただし、ネイティブインターフェイスとWebに適用される設計原則は非常に似ています。

したがって、効果的でユーザーを混乱させない優れたユーザーインターフェイスを設計する方法を学びます。そうすれば、ユーザーのプログラミングに無料で慣れることができます。


2
特に最近では、ユーザーエクスペリエンスがソフトウェア設計を担当しています。アーキテクチャはもう担当していません。
rwong

5

それは本当にあなたの状況に依存するでしょう。私は最近、Webアプリケーションをデスクトップアプリケーション(SmartClient / Click-Once)に戻すプロジェクトをいくつか行っていたFortune 500企業で働いていました。特定の状況では、それは非常に理にかなっており、既存のアプリが苦しんでいたいくつかのユーザビリティの問題を排除しました。

あなたがフルタイムの従業員であり、会社が一般にデスクトップアプリを設計していない場合、WinformsまたはWPFを完全に理解することはおそらく意味がありません。ただし、あなたがコンサルタントであり、クライアントに別のサービスを提供できるようにしたい場合は、それが害を及ぼすことはありません。


4

うーん、GMail、Stack-Exchange、私の銀行のホームバンキングに加えて、私は一日中非ウェブソフトウェアを使用しています。スマートフォンとタブレットの登場により、Webアプリケーションは私にとってさらに魅力的ではなくなりました(スマートフォンのFacebookクライアントを使用しています)。それはユーザー側です。

開発者側:過去10年間、私はほとんど非Webソフトウェアでしか働いていませんでした(そして、ソフトウェアコンサルタントとして働いていたので、私のキャリアは非常にさまざまな分野に及びました)。

はい、それはまだデスクトップGUI環境を学ぶ必要があります。


2
うわー、あなたはインターネット検索エンジンを使用しないのですか?
JBRウィルキンソン

1
@JBRWilkinson:いいえ、Gopherに依存しています。真剣に、私は一日中Googleを使用していることを確認しますが、これはデスクトップツールやアプリケーションの代わりにはなりません。
Wizard79

2

もちろん「それは依存します」-しかし、あなたの経験は典型的だと思います。作成したアプリケーションのいずれかに対してシッククライアントを作成する必要はほとんどありませんでした。クライアントをデスクトップ上で実行する必要がある特定の理由(接続性の問題や3Dゲームなど)がない限り、開発者と管理者がアプリケーションの1つの「インスタンス」を維持する方が簡単だと思います。Webアプリケーションを設計するスキルがあれば、一般的にデスクトップアプリケーションの領域に移行しても問題ありません。

実際、シッククライアント開発者がWebアプリケーションプログラミングを学ぶことはより重要だと思います。HTTPのステートレス性を継承することで、アプリケーション開発のパラダイムが難しくなります(または、少なくとも単に叩くよりも少し考えなければなりません)パネル上のコントロール)。

忘れないでください。SilverlightやAdobe Flex / AIRのような、デスクトップ/ Webアプリケーションの境界をまたぐことができるテクノロジーがあります。


+1は、Web開発がより困難であることを意味します。私はデスクトップ開発者としてスタートし、仕事でWeb開発に移らなければなりませんでした。それは間違いなくより複雑です(明らかに、これは同等のタスクを想定しているため、簡単ではありません)。
ボビーテーブル

@Guzica-はい、デスクトップアプリの開発に縛られた優秀な開発者たちと同じような態度に遭遇しました。スイッチを最初に考えたほど簡単ではないようにしようとしたら。これがWebアプリプログラミングに固有の複雑性であるかどうか、それがプログラムするためのまったく異なる方法であるかどうか、システムができることの基礎となる多くの前提が(新しいフレームワークの学習に加えて)変更する必要があるかどうかはわかりません。
ワトソン

より制限されたツールを使用して物事を行うことは常に難しく、「より複雑」になりません。それは面倒です。
サム

0

IE9チームによると:

ネイティブアプリとWebアプリの間にギャップがあってはなりません。ハードウェアアクセラレーション、高速JS、およびサイトピンニングが開始

これらの技術がより密接に成長することは安全な賭けだと思います。Java開発者の場合、デスクトップアプリとWebアプリの開発(GWTを使用)の違いはほとんどありません。ブラウザエンジンをターゲットにできる「デスクトップ」開発プラットフォームが増えることを期待するのは不合理ではありません。また、ますます多くのデスクトップアプリがWebのような配布モデル(バックグラウンドでの自動更新、クロームのようなサンドボックス化された実行)を持つことを期待するのは不合理ではありません。


3
それがトータルBSです。市場データ配信のレイテンシを「リアルタイム」で測定および表示するために、ローカルに配置する必要があるレイテンシ測定アプリに取り組んでいます。この種のものは決してクラウドに移動されません。
ティム

アプリケーションをローカルにする必要性がとてつもなくあいまいであることがわかったので、合計BSです。
マイクM.

@Tim:一部のアプリは常にローカルになるというのは正しいことです。また、他のアプリがローカルにならないこともあります(例:Google翻訳)。ただし、ローカルで実行することは、クラウドから取得したことを意味するものではありません。Chromeはローカルで実行されますが、クラウドベースのアプリです(「バージョン」を制御することはほとんどできません)。ネイティブコードの実行をブラウザプラットフォーム(Google NaCl)に結び付けようとする試みがあり、Web言語をネイティブアプリ(Adobe Air)に結び付けようとします。
ジョーリSebrechts

1
@マイクM-それはばかげてあいまいではありません。以前の仕事では、海軍の船上ソフトウェアに取り組みました。また、それらはクラウドにない可能性があります。私が働いているドメインはおそらく移行されません-レイテンシーとハードウェアインターフェイスの理由からローカルでなければなりません。Webは便利ですが、私たちの中には、理由によりネイティブアプリの分野でまだ働いている人がいます。
ティム

@Tim私のポイントは、あなたはそれが耐えられないシナリオを見つけたということです。著者は、MOSTと言うときにこれに気付きます。あなたはカウンターポイントを思いつきました、それは素晴らしいことです。あなたは、全体が根拠がないことを決して証明していません。もちろん、多くの理由でローカルでなければならない場合があります。しかし、ほとんどの場合、光ファイバーケーブルを差し込むと、10ミリ秒で1200マイルを超えることができますか?ユーザーとして、デスクトップアプリケーションのすべてがフォームの読み込みに10ミリ秒長くかかっても問題ありません。
マイクM.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.