• ベストアンサー

プロのVC++プログラマはどこまで学習すべきでしょうか?

こんにちは。いつもお世話になります。 VC++6.0 MFC使用 Win2kの環境で 事務系(販売管理とか、顧客管理など)ソフトウェアを 完全オーダーメイドを一人でやってます。 日経BPソフトプレス 「プログラミングVisualC++6.0」(すごく分厚いです) を参考書としてはや3年やっておりますが、前半は理解しましたが、 後半のCOMとかはさっぱり理解できません。 ソフト開発業者のプログラマの皆さんはこういったことを、理解されているのでしょうか? また、こういったことをソフト開発現場では必須理解なんでしょうか? と申しますのが、他の参考書はCOM等全く触れていません。今後、オーダーソフトだけでなくシェアウェア等の開発にも着手したいと思っています。 どこまで学習すべきかプロの方、ご教授ください。お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

企業でプログラム書いてます。業務系からリアルタイムシステムまでいろいろこき使われています・・・。 COMは少しハードルが高いようですが、入社時C++を少し知っているレベルの新入社員でも半年もすれば理解して今では普通に作ってます。ATLを使うのが簡単です。以前は、自分で一からコードを書いていましたが、面倒なので止めました。 COMを書ける人は私の周りにごろごろいます、その程度もものです。ただ、COMが書けたからといって優秀であるとは思いません。ユーザや顧客の要求を満たす事が重要で、技術的なテクニックは必要だから使うだけの話です。それとCOMは必要の無いところで使うと返ってできの悪いソフトができてしまいます。。。。 COMを勉強するくらいなら、デザインパターン、UML、XP(エクストリームプログラミング)あたりのキーワードを中心に勉強されてはいかがですか? プロなら、デザインパターンは暗記、UMLは速記、XP(or RUP etc...)は実践ができないとだめ。 このままCOMを勉強されても、次のステップにはいけないと思います。開発プロセス(XP、RUP、etc..)、表記法(UML)、パターン(デザインパターン、アナリシスパターン、アーキテクチャパターン)に進んでください。今まで行ってきた開発作業を半分以下の時間でできるようになります。 ちなみに、デザインパターンを理解するとCOMの本質が見えてきます。

ponkochan
質問者

お礼

返信遅くなりすみません。 ALTは聞いたことがありますが、その他は全く初めて接する単語です。 大変ありがとうございます。 非常に貴重なお答えです。早速、調べてみます。 また、このご意見はコピペさせてもらいます。

その他の回答 (3)

  • otn
  • ベストアンサー率66% (14/21)
回答No.3

私も独立して業務をこなしていますが、プログラミングに関しては刻々と新しい技術(ライブラリ?)が生まれ、古い技術がすたれたりしている状態ですので、その業務で必要な技術をその都度学習していくのが一番効率がよいと思います。 DirectX系(ちなみにCOMで組みます)のものを作るとそれがよくわかると思います。例で言いますと、ライブラリバージョンが9.0以前の物と9.0以降の物ではガラリと書き方が変わりました。もし、これを必要でないときに学習していたとすると最新のライブラリでは全く通用しないことになるのです。このような例は他にも多々あると思います。 今後何がすたれて何が残っていくかは誰にも予想がつかないと言うのが現状です。ただ、自分が学習をしていない分野のソフトを組むとき予想もつかないところで躓くことがある(学習してある分野でもそうなることがありますが・・・)ので、日数の見積が非常に大変だと思いますがこのようにしていくのが一番ではないでしょうか。

ponkochan
質問者

お礼

返信遅れましてすみません。 「その業務で必要な技術をその都度学習していくのが 一番効率がよいと思います」 このご意見に大変救われました。 万全を期して、とついつい考えてしまい、全ての準備をして、 さあやるぞ!でなくていいんですね。 おっしゃるとおり日数の見積りには苦労してます。 お客様に迷惑を掛けています。お客様には出来あがったもの しか見えませんから。ありがとうございました。

回答No.2

> また今思えば、COMとは何のためにあるのかも知っていないんですから > まずそこから始めるべきかもしれません。 簡単に説明すると、メインプログラムから切り離されたプログラムモジュール (サブプログラム)のようなイメージです。 拡張子は、*.dll, *.ocx, *.exeだったりします。 このモジュールは、必要に応じて、プログラム実行時に、メモリー上にロード されて、実行されます。不要になると、アンロードされます。 COMのメリットは、以下のとおり。 1.モジュール上のバグがあった場合、dllファイルを 交換するだけで、対応することができる。 メインプログラムは、いじる必要なし。 2.モジュールの機能が必要なときに、メモリ上にロードされるので、 プログラムに必要なメモリが少なくなり、メモリ消費が抑えられる。 3.メインプログラムと切り離すことで、メインプログラムのサイズが 小さくなり、軽くなる。 4.Automation仕様に従うと、他のアプリやVBなどからも、使用することが できるようになる。 5.DCOMにすると、ネットワーク越しに、遠隔制御できたりする。 COMのデメリットは、以下のとおり。 1.なんでも、かんでも、モジュール化すると、オーバーヘッドが 大きくなり、プログラムの動作が重くなる。 私自身もCOMに関しては、まだ初心者レベルなので、 もしかしたら、間違ったことを書いたかもしれませんが、 私のCOMに対するイメージは、こんな感じです。 プログラムが大規模になって、しかも、ユーザーによっては、 まったく使わない機能がある場合、そういうところをモジュールとして 切り離すと、効果があるかもしれません。 私ではないのですが、20人がかりで、やたらDLL化したソフトを作った ところがあり、そのソフトは、重たすぎるとユーザーからブーイングされて いたのを聞いたことがあります。ちなみに、DLLは40-50ほど作ったみたいです。 "ANo.1"さんと同じで、必要に迫られてからで、いいと思います。

ponkochan
質問者

お礼

非常に詳細なご回答、大変ありがとうございます。 みなさんこんなスキルをお持ちなんですね。 これまでなら、自分のレベルの低さに落ち込む ところですが、みなさんの「必要に迫られて」という ご意見で、体験を積んで絶えず学習と情報の収集を怠らないこと で、すべては解決すると確信しました。 ありがとうございます。

回答No.1

> VC++6.0 MFC使用 Win2kの環境で > 事務系(販売管理とか、顧客管理など)ソフトウェアを > 完全オーダーメイドを一人でやってます。 この段階であなたは、十分にプロです。 > 後半のCOMとかはさっぱり理解できません。 自分がプロとしてやって行くのに必要であれば勉強(OJT)する必要がありますし、「わからないからその部分に抵触するソフトは作らない」のであればそれで良いのではないでしょうか(その分、オーダーが減る可能性があるのかオーダーを伸ばせなくなるのか)。

ponkochan
質問者

お礼

ありがとうございます。 一人でやっていると、自分の技術水準がどこにあるのか? と不安になってしまいます。 ご指摘のようにOJTで必要になったとき学習するのが、 いいのかもしれませんね。また今思えば、COMとは何のためにあるのかも知っていないんですからまずそこから始めるべきかもしれません。

関連するQ&A