December 25, 2003
と、偉そうなタイトルをつけておきながら、僕はVC++でアプリを作ったことがない。作る機会に恵まれてないのもあったが、VBに比べチャレンジして成果をコミットするだけの時間対スキルがないのも原因だ。
ということで、猫でもわかるシリーズのNewバージョンが出ていたので即買いした。
前シリーズの猫でもわかるWindowsプログラミングはとても良い本だった。
Win32プログラミングがこんなにシンプルなものだと教えてくれた本だった。
Win32のプログラミングとは非常に乱暴に言うと、こんな感じだ。
・アプリケーション起動時に呼び出されるWinMain関数にお決まりの処理を書く。
大体、初期化処理を書いた後は無限ループに入る。終了処理が呼ばれたらループを抜けて終了する。(じゃないと、×ボタンで終わることができないアプリになる)
・ボタンが押されたときなどに呼び出されるの単一の関数名は、↑の初期化時に登録しておく。(この登録方法もお決まりの書き方がある)いわゆるコールバック関数というもので、イベントが起きたときに向こうから呼び出してくれる関数だ。その中で、プログラムの機能実現に必要なイベントを拾って、処理を記述する。実態は、いわゆるswitch文で欲しいイベントを振り分け、自分で作った関数を呼び出すような分岐プログラムに過ぎない。
この分岐処理の内容如何でゲームだろうがWordだろうが通信アプリも作られていると言うことだろう。あとはOS様をどうコントロールするか?である。
・・・そんなことを教えてくれる本だった。実際、もっとわかりやすいので、この辺知りたければ本を買うと良い。とにかくWin32の基本的な制御構造自体は驚くほどシンプルである。でも、これを簡単に説明してる本は非常に少ないし、このシンプルさが初めて理解できたのがこの本だ。言葉とは恐ろしいものである。
今回のネットワークプログラミングの本は、Win32のシンプルな制御構造の上にHTTP、FTP、SMTP、POP3、ソケットプログラミングによる同期/非同期アプリの作り方を知ることができる。重要なのは制御構造を知ることなので、ネットワークの動きが詳しく解説されている。これはネットワーク関連の仕事に関わるなら買っておいて損はしないだろう。
また、ネットワークプログラミングであろうが、Win32のプログラムの基本構造からは離れないのでプログラムの構造自体、とても理解しやすいのはうれしい限り。
ちなみにWin32に対して、MFCやVBなどが存在する理由は、Win32のシンプルな構造は、先に記述したコールバック関数になんでもかんでもメッセージが送られてくることを意味し、分岐がやたら冗長になって、きっと不具合の元になることだろう。また、異様に1パターンな定型処理も多いだろうし、さまざまな機能が実装されたWin32apiの関数の引数もやたら長いのが多い。
このように、さまざまなメッセージのハンドリングが一つの関数内に記述されるのを防ぐために、クラスとして機能をまとめ、プロパティ、イベントという仕分けされた形でプログラムを記述するようにし、わかりやすくしたのが、MFCだったりVBだったりするのではないだろうか?(VBは、さらに、いろいろかぶせてあってメモリ保護などの機構があるわけだが。)
ただ、アプローチとしてWin32アプリを一度経験するのは重要だと思う。
結局、ブラックボックスのVBで自動的に発生するイベントに実装を記述するのではなく、コールバック関数の分岐を経験したほうが圧倒的に、イベントの存在意義は理解しやすいと思う。
同時に、一番中途半端なのはMFCではないだろうか。あれはメッセージの意義が理解しにくかった。スケルトンコードとやらも、いきなり大量のクラスと格闘しなくてはいけないのは辛い。とりあえず、自己スキルを棚上げにさせてもらうと、そんな印象だ。Win32レベルで考えると、とてもしっくりくるのに。本が悪かったかな?!個人的には、Win32レベルで、かったるいところまで知ってから便利さを実感するのがMFCの魅力ではないのかな?と。
もう、いよいよ.NETの時代になりそうだし、さよならWin32apiという話も聞くが、いまやC言語はプリミティブな技術だと言い切らせてもらえば、プリミティブな技術は不変だと思われるだけに、Win32を勉強するのはVBからJavaやC#に移行しつつある人にもオススメだ。このお正月休みにでもチャレンジしがいのある課題だと思うがどうだろうか?
■関連キーワード検索(powered by BLOGNAVI)