• ベストアンサー

プロの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

  • VC++6.0で将棋のソフトを作りたい!!

    VC++6.0で将棋のソフトを作りたいんですが、初心者なので参考になるHPなどはありませんか?comは駒を動かす必要はなく、盤面と駒のボタンがあればいいのですが…。(そして、それをテキストで保存したいです。。) 教えてもらえそうなところや、勉強になりそうなHPを教えてください。 よろしくお願いします。

  • VCで将棋のソフトを作りたい!!

    VC++6.0で将棋のソフトを作りたいんですが、初心者なので参考になるHPなどはありませんか?comは駒を動かす必要はなく、盤面と駒のボタンがあればいいのですが…。(そして、それをテキストで保存したいです。。) 教えてもらえそうなところや、勉強になりそうなHPを教えてください。 よろしくお願いします。

  • VC++導入について

    お世話様です。 初歩的な質問ですいません。 会社に派遣されているプログラマーなのですが、VCを使用してPCソフト(windows)を開発しております。 彼の様子を見ていて不思議に思った点について、お尋ねします。 私の経験ではプログラミングを行う時は、マニュアル・テキスト・仕様書を積み上げた状態で(MS-C)プログラミング作成をおこなった記憶があります。 ところが、彼は全然無しで作成しております。 依頼仕様書は持ってきますが。 彼に尋ねたところ”ああ、それはHELPで間に合います”という回答でした。 確かにHELPでAPI関数の説明がでてくる様です。 VCは企業用バージョンです。 私にもVCプログラミングを行うように上から依頼されているのですが、そもそも「コマンド・リファレンス」やプログラマーズ・ガイドといかいったものがないとプログラミングなどできるはずもないと思います。 そもそもVC購入時は、ちゃんと印刷本がついてくるんでしょうか。 APIリファレンスマニュアル(本)などは、インストールCDROMとは別費用で購入するものなのでしょうか。 できましたら参考URL等、御紹介下さい。

  • VC++の/Zm オプションについて

    仕事でVC++で開発されたソフトに機能追加をしています。 環境はVisualC++6.0(SP3)&Win2Kです。 何年か前に開発されて他の人がやってたものを今回引き継ぎました。 SDKで開発しているソフトなのですが、グローバル変数が かなり多いです。おそらくそれが原因と思われますが、 今回の機能追加の途中でビルド時にエラーが出るように なりました。 (致命的なエラー C1076 コンパイラの制限 : 内部ヒープ領域の上限に達しました。領域を広げるには、/Zm オプションを使ってください。) 調べてみたところ、/Zm コンパイラオプションで コンパイラのメモリ アロケーションの領域を設定するとよいみたいでした。 ひとまず/Zmが150になっていたものを160に設定してビルドは通るようになりましたが、気がかりな点があります。 コンパイラオプションを変えることによって、何か弊害が でることはあるのでしょうか。 今回のコンパイラオプションを変えたことが原因で不具合があってはと思いまして・・・ VC++初心者なのですごく初歩的な質問をしているかもしれません。どなたか教えてください。

  • Windows2000の良い書籍ありませんか?

    再度の質問です。 日経BPソフトプレスの本以外でお勧めの本が 有りましたら教えて下さい。 宜しくお願いします。

  • プログラマが別職種へ伝える方法をまとめたサイト

    標記ありますでしょうか? 知っていましたら教えてください。 プログラマが別職種に何かを伝える際に、 ちゃんと分かりやすく、かつ本質は失わずに翻訳することって大事だと思います。 わたしはあるソフト制作会社で働くプログラマなのですが、 このたび管理職に就きまして、これまでのプログラミング業務だけでなく、 部下(デザイナ、企画、プログラマ各職種)の管理も業務範囲となりました。 とりあえず先人の知恵を探そうと、いろいろググってみましたが、 そういったサイトは探せませんでした。 ちなみに、 「プログラマ 別職種 伝える 手法」 なんかでググってみました。 なにか参考になるサイトなどあったら教えてください。 お願いします!

  • VC++の印刷について

     VC++を勉強中のプログラミング初心者です。以前にC言語をかじった程度のレベルの者です。環境はOSはwindowsXPを、開発環境は VisualStudio2008professionalを使用しています。  現在VC++で簡単な家計簿ソフトを作成しているのですが、画面を印刷する方法が分かりません。メインフォーム画面をそのまま印刷したいのですが、どなたか方法(又は参考となる書籍、サンプルコード等)をご存知の方がいらっしゃいましたら、ご教授のほどよろしくお願い致します。m(_)m  

  • VisualC++

    さっそくですが、windows8に対応していてなおかつアプリケーションやゲーム開発などができる visualC++でお勧めなソフトは、ありますか? ただのマニア(と言ってもマニアのレベルでもない)になりたくないので趣味でプログラマーを目指すことに決めました。 どなたかご教示お願いします。

  • ネットワークエンジニアになるにはまずプログラマーから!?

     こんにちは~♪ やっぱりこんばんは~♪  私は来年からSEの内定もらった大学4年女子でーす♪  新卒派遣なのでSEと言ってもどんな業務をするかはあらかじめわかってから(職種を選べる)働くことになります。  それでNE志望なんですが、やっぱり新卒だとプログラマーからスタートなんですか??SEの場合は(ソフトの開発とかの)まずプログラマーからって言うのはよく聞くんですけどNEの場合もそうなんですか? ちなみに設計・構築・保守・運用・管理によって業務形態は変わってくるんですか?夜勤や呼び出しとか??警備員みたい(笑)でも設計とかに呼び出しとかはないと思うんですけど。。  この世界って、目に見えないからなんかピンとこないとこあるんで、詳しい方おしえてくださーい♪

  • Windowsアプリ、VBとVCどっちで開発?

    初めまして。グフと申します。 WindowsのGUIアプリケーション(デスクトップアプリ) の作成について質問があります。 Windowsのソフト開発環境の選択肢としてVB, VC, C# というものがあるようですが、C++経験者がWindows ソフトの開発にとりかかるのに、もっともとっつき やすく、開発生産性の高いツールはどれになるので しょうか? 新たにVBやC#の言語仕様を覚えるより、C++の知識 そのままが活かせるのであれば、強みづたいという ことでVCが良いのかなと感じてはいます。 ただ、現状のVBの隆盛や今後の.NETの事を考えると 今までのC++の経験はさておき、VBやC#で開発する 方がよいのかなとも悩んでおります。 現場で実際にツールをお使いの方々に、開発言語の 選択について、参考ご意見をいただければと思い、 投稿させて頂きました。 ちなみに私はこれまで、UNIX系のソフト(CUI, サーバーアプリ)をC++を使って開発してきました。 Windows系の開発経験は全くありません。 何卒、ご意見をよろしくお願いいたします。

専門家に質問してみよう