Topics

Visual C++トレーニングコースについて講師にインタビューしました
~独学では学べない、Visual C++の作法を学びませんか?~

マイクロソフトのC、C++、C++/CLI用統合開発環境 (IDE)であるVisual C++は事実上のWindowsの標準開発環境であり、その最適化性能は非常に高く、標準C++企画への準拠度も高いことから広く普及しています。

NECマネジメントパートナーはNEC eラーニング事業部時代から20年以上Visual C++のトレーニングを行ってきており、現在国内有数のVisual C++のトレーニングコースラインアップを有しています。今回は、Visual C++関連トレーニングにおいて国内現役トップクラスのVisual C++講師経験を持つ、人材開発サービス事業部 主任 三上 宏(以下、三上)に、NECマネジメントパートナーのVisual C++トレーニングコースの魅力について、シニアマネージャー 山崎 明子(以下、山崎)がインタビューしました。

Visual C++関連トレーニングにおいて国内現役トップクラスの経験を持つ講師が教えるVisual C++トレーニング 独学では学べない、Visual C++の作法を学びませんか?

2015年11月

文法とは違う「作法」、独学では気が付きにくい

山崎:
早速ですが、三上さんはVisual C++のトレーニング歴が長いですよね。
三上:
Visual Studioのバージョンが6.0の時からVisual C++を担当していますので、もう20年近くになります。Visual C++は基本手法である作法をマスターできると、とても効率的で使い勝手が良く、奥も深い面白い開発環境ですので、20年近くも教えてきても飽きないです。
山崎:
そうですよね。Visual C++は私もVer.1.0から愛用していましたし、当然教壇にも立っていましたので、独学でつまずいてきた方が、作法を学んでマスターした途端、感激することが多いので、教えている私の方もとても楽しくトレーニングしていました。
三上:
書籍では作法は書かれていないものも多く、誰かに教えてもらわないと気が付かないというか理解できずに、そのままつまずいてしまうことが多いです。作法は文法とは違い、マイクロソフトが想定している正しい書き方になります。文法上は正しくても作法を知らないとうまく動かなかったり、とても非効率的になったります。プロフェッショナルなプログラマーがVisual C++を使う場合、その成果物は最終的にはお客様に納品され、多くの方が使うアプリケーションになるため、トラブルを起こさないようにしなければなりません。また、軽いアプリケーションを作らないとお客様のそのアプリケーションに対する評価は下がってしまいます。それゆえに作法はとても重要であり、アプリケーションの開発効率と品質にとても影響します。

ご参考までに、従来のVisual C++のバージョンを利用した集合研修でいただいた、受講者の声を受講アンケートから抜粋してご紹介します。

「悪い事例も含めて解説しているところがよかった。」
「MFCを使うメリットや、使う上での勘所が少し理解できたように感じます。有意義でした。」
「非常にわかりやすかったです。短い時間の中で、デモを多く取り入れていたのがよかったです。」
「テキストに記載されていない有用な情報もたくさんご説明いただきました。また、個別の相談も親身にお応えいただき、大変役立つものとなりました。」
「独学で理解できなかったところを整理することができました。」

Visual C++のコース全てを「教室de eトレーニング」に対応

山崎:
うれしいですね。ありがたいお言葉をたくさんいただいています。
ちなみに、その「作法の気づき」なのですが人によって気が付くポイントが少し違う時があります。そこで、最近、NECマネジメントパートナーは「教室de eトレーニング」というラインアップを増やしました。これは、教室にお越しいただき、eトレーニングを受けていただくのですが、その教室には講師がおり、いつでも好きなタイミングで質問ができるというものです。自分のペースで学べるeトレーニングとマシン実習を行いながら、わからない時にいつでも個別に講師に質問ができる、とても効率的な学習方法です。
三上:
そうですね。従来の教室での集合型トレーニングですと、理解している受講者が理解できていない受講者の質問への回答が終わるまで待たなければなりませんでした。その点、教室de eトレーニングは自分のペースで学べ、いつでも質問できるのでとても効率的に学習していただけます。

教室 de eトレーニングの肝でもあるeトレーニングのコンテンツを作成する際にいつも気を付けていることは、多くの受講者からいただいた質問や、演習でつまづきやすいところなど、経験上のノウハウをしっかりとコンテンツに盛り込むことです。

教室de e トレーニングで利用するコンテンツも、受講者により多くの「作法の気づき」を提供できるように配慮して作成しています。

山崎:
とても良いことですね。NECマネジメントパートナーでは、以下のVisual C++のコース全てを教室de eトレーニングに対応しました。
三上:
ちょっと宣伝ですが、上記のコースのうち下の二つは大手ラーニング会社では行っていないコースなんですよね。この二つはネイティブのWindowsアプリを効率的に開発しようと思った際にとても有効なので、極めたい方はぜひ受講いただきたいです。
山崎:
Visual C++の最初の2つのコースは他社様でも実施されているようですが、4つのコース全てをNECマネジメントパートナーで受講していただけると、さらに効率的に学べますか。
三上:
それはそうですよね(笑) 同じ講師に通しで学んだ方が理解が速いのは当然です。

作法のご紹介(その1)-「Visual C++ による MFC プログラミング基礎」コースから-

山崎:
それでは今日のインタビューのテーマでもある作法について、一部をご紹介いただけますか?
三上:
はい、トレーニングコース「Visual C++ による MFC プログラミング基礎」で教える作法の中からまずは一つ、参考程度にご紹介いたします。
再描画処理

Windowsアプリケーションは、最小化状態から復元されたり、他のウィンドウの背後にあったものが前面に来たり、サイズが変わったときに再描画をする必要があります。MFCアプリケーションでも、再描画への対応は開発者が行います。

再描画が必要なときにアプリケーションに送られるメッセージとして、WM_PAINTがあり、これはウィンドウメッセージの一つですが、WM_PAINTに対するハンドラ関数は通常作成しません。

代わりに、ビュークラスのメンバ関数であるOnDrawのオーバーライドを利用します。ビュークラスのOnDrawは、アプリケーションウィザードがひな形を生成しているので、開発者はOnDrawの中に再描画コードを実装するだけで済みます。OnDrawは、MFCのフレームワークがWM_PAINTを処理した時に呼び出すOnPaintから、OnPaint内で生成するデバイスコンテキストのポインタを引数として受けて呼び出されます。このOnDrawは、印刷イメージの生成など、WM_PAINT以外のハンドラ関数からも呼び出される共通の描画コードとして利用されます。

また、ビューを更新するために手動でWM_PAINTを送信するには、ビュークラス側からはCWnd::Invalidate( )、ドキュメントクラス側からはCDocument:UpdateAllViews( )が利用できます。

作法のご紹介(その2)-「VisualC++によるWindowsプログラミング基礎」コースから-

山崎:
おー!このような作法がジャンジャン学べるのですね!他にはありますか?
三上:
ジャンジャンというかこのトレーニングはある意味究極の作法集なので、かなり多くの作法を学べます。
では、「VisualC++によるWindowsプログラミング基礎」から一つ作法をご紹介します。
アプリケーションの終了1

こちらは、アプリケーションの終了処理に関する作法です。

Windowsアプリケーションでは、[閉じる]ボタンや[閉じる]メニューをクリックすると、WM_CLOSEメッセージがメッセージキューに送られ、DispatchMessage関数からウィンドウプロシージャーに渡されます。WM_CLOSEメッセージの処理がウィンドウプロシージャー内で独自に処理されずにDefWindowProc関数が処理を行う場合、DefWindowProc関数はユーザープログラムで作成したウィンドウを破棄するDestroyWindow関数を呼び出します。

DestroyWindow関数はウィンドウを破棄するとWM_DESTROYメッセージがメッセージキューに送られ、DispatchMessageを経由してウィンドウプロシージャに渡されます。

この時点で作成しているサンプルプログラムでは、枠組みのみ動作するサンプルですが、すべてのメッセージをdefaultラベル側で処理することはせず、WM_DESTROYメッセージだけは独自に対応しています。WM_DESTROYメッセージが送られてきたときに実行するPostQuitMessage関数は、WM_QUITメッセージをメッセージキューに送信する関数です。

WM_QUITのメッセージをメッセージキューからGetMessage関数が取得すると、このメッセージの時だけは戻り値としてゼロを返します。戻り値ゼロがwhileステートメントの継続条件として評価され、条件が成立していないためメッセージループが終了します。するとreturnステートメントにより_tWinMain関数が終了し、アプリケーションが終了します。

作法のご紹介(その3)-「VisualC++によるWindowsプログラミング基礎」コースから-

山崎:
なーるほど!そうですよね。それからそれから?
三上:
それでは「VisualC++によるWindowsプログラミング基礎」からもう一つご紹介します。
ダイアログプロシージャ―の形式

ウィンドウで発生したメッセージを処理するためにウィンドウプロシージャーを作成したように、ダイアログで発生したメッセージを処理するためにダイアログプロシージャーが必要です。

ダイアログプロシージャーの形式は、こちらに示す通りで、ウィンドウプロシージャーの形式に似ています。

第一引数は、ダイアログ本体のハンドルです。ダイアログもウィンドウの一種であるため、ウィンドウと同様にハンドルで識別可能です。

第二引数以降もウィンドウプロシージャーと同様にとらえることができます。

戻り値はTRUEかFALSEの値を返します。ダイアログプロシージャー内で、メッセージを独自に処理した場合はTRUEを返し、独自には処理をしなかった場合はFALSEを返すのが原則です。戻り値の型はINT_PTR型ですが、このデータ型は、ターゲットが32bit環境であれば32bit整数として扱われ、64bit環境であれば64bit整数として扱われるデータ型です。

作法を体系的に学べるNECマネジメントパートナーのVisual C++トレーニング

山崎:
素晴らしいです!じゃぁもう一個だけ!
三上:
もうだめです!(笑) 続きはぜひトレーニングで学んでください。

今回、3つの作法をご紹介しました。知っている方は知っていると思うのですが、知らない人はなかなか気が付かないのではないかと思います。

山崎:
確かに!
NECマネジメントパートナーのVisual C++トレーニングコースはこのような開発標準ノウハウともいえる作法を体系的に学んでいただけます。講師もVisual C++関連トレーニングにおいて国内現役トップクラスの経歴を持つ講師が教えるコースですので、得られるものが多いと思います。Visual C++の受講を考えている方はぜひ受講ください。

■Visual C++コースラインアップ

○教室 de eトレーニング

○eトレーニング

お問い合わせ

NECマネジメントパートナー 人材開発サービス事業部
マイクロソフト開発系担当
e-mail: msudev@educ.jp.nec.com

ページの先頭へ戻る