ソフトウェア・エンジニアへの道(その 5)MFC編

さてさて、コミカレも3セメスター目に入りました。自分でもビックリ、SIの仕事も続けています。そして多分このころからだったかと思いますが、校内で別の仕事も増えてきました。一番良かったのはオープン・コンピューター・ラボでの見張り役。校内には学生が自由にパソコンを使える部屋がいくつかあったのですが、そこでは常に学生のバイトがサポートとして座っているのです。サポートと言っても、普通は利用者は勝手にPC使って勝手に帰って行くので、バイトの出番はなく、空き時間は何をしていてもよい、ゲームしててもいいし、宿題をやっててもいいし、とにかくいればいいだけの仕事(笑)。SIをやっていて良かったのは、その辺りで働いている人たちとのコネができるので、空きができると教えてもらえるわけです。もうちょっと先のセメスターの話ですが、最終的に自分は、SIと、2つのコンピューターラボと、チュータリング・センターでの数学のチューターと、なぜかナース学科の資料管理部屋でのバイトをかけ持つ事になり、校内で週にに32時間とか働いてました(注:合法です)。。まあSIの仕事以外は、仕事中に宿題できるので、何もしないで稼げるようなものなんですけど。とにかく当時のスケジュールはびっちりでした。

SIはというと、このセメスターもセフィアニ氏と共に継続する事となりました。SI仲間のチャット君はこの時確か、初級と中級と、2クラス掛け持ちでやってたかな?凄かった。新しいセフィアニのクラスの生徒の中に、多分コミカレ時代で出会った中で一番才能のあるグレッグという男の子がいました。最初は皆と同じ初心者だったのが、もう後半には、C++でグラフィックを使ったゲームとか作ってた、、いやもうレベルが違ったわね。当然、セフィアニ氏の大のお気に入りとなりました。しかし彼はまた、「俺できるんです、見てくれよ俺ができるのを!ハッハッハッ!」みたいな子でw、クラス中が彼とセフィアニに色々な意味で置いてけぼりを食らっている形になっていました(笑)。彼は後に、私に変わってセフィアニ氏のSIを継ぐ事になります。いやお二人お似合いですわよ(笑)。私のセッションのほうはというと、初回は8人くらい来て、ビックリ。どの子も本当にいい子でした。このセメスターの最後のセッションで、一人の男の子がお世話になったお礼に、と、猫のぬいぐるみをくれました。感動です。今でも持ってます。。

さて履修クラスですが、この時講師の配置換え?がありました。目を引いたのは、先セメスター、アッセンブラを押してもらって、尊敬してやまなかったミロア氏が、MFCを教える事になったという事!いやMFC、自分の当時の憧れでした(笑)。Windows MFCとは、、当時主流だった、C++のWindowsプログラミング・フレームワークの事で。それ以前はWin32という方法が取られていましたが、それをオブジェクト指向にしたものがMFC、、というのが、多分究極に大雑把で多分あまり正確でない説明です(笑)。今でこそ(今はWindowsプログラミング自体そんなないですが)C#などが普通に使われるWindows Formプログラムですが、当時はまだC#は新しく、動作の軽いWindowsアプリケーションを作ろうと思ったらWin32かMFCが使われる事が多かったのです。

そしてMFCはまた、難易度が高い事で知られていました。その、「難しい」というワードがまた魅力的でした。。難しいものを理解したい、チャレンジしたい、できたらカッコイイ!!(笑) 本当にそんな感じでした。しかしMFCのクラスは、C++の上級クラスを修了している事が条件でして、でもこれまた理由がうろ覚えなのですが、MFCをとにかくそのセメスターに取りたくて待ちきれなかったので、前セメスターで中級クラスの講師だったKent氏に、交渉に行きました。MFCはC++だけど全く別の世界、C++の中級を飛ばして上級に行くのと訳が違う、上級クラスを未履修なのは心配だ、と多少渋られました。が、「でもまあ、Kaoriなら大丈夫だろう、でも飛び級はデパートメントのチェアのサインが必要だから」と、言われました。「チェアって誰ですか?」「サコ(セフィアニ)だよ」って。なーんだ、ということで、自分のSI主の所に聞きに言ったら、当然あっさりOKでした。ていうかあの先生、チェアなんだね。。w

セメスター始まる前に、MFCのクラスの為に自分でC++上級クラスの内容は全部予習したものの、結論から言えば、C++上級クラスは多分あまり必要ではなかったw 確かにMFCはオブジェクト指向だけども、もうテンプレが出来上がっているので、やりたい事に合わせて特定の場所にコードを書いていく、という印象でありました。でも確かにMFCのテンプレの構造自体を理解するのも大変で、どこに何を書けばいいのか、最初はかなり戸惑うと思われました。

そして予想通り、MFCの難易度を、ミロア氏の講義がさらに上げましたw 自分としてはかなりワクワクしていました。というのも、今まで見て来たKent氏、シュナイダー氏、セフィアニ氏、どの方も授業の為のプログラミングであって、ソフトウェア開発のプログラミングではないのです。なので警告が出ても、エラーが出てても、プログラム全く走らなくても、最悪コンパイルしなくても(笑)、まあコンセプトが分かっている事、努力した事が示せればオッケー、誰でもがんばればAは取れます、という感じで。でも私は、実際の現場ではいくら素晴らしいコードを書こうが、プログラムが予定通り動かなければ、何の価値もないのだから、ちゃんとエンジニアになる為に訓練して欲しい、と切望していました。ミロア氏は、そういった期待通りの先生で、本当にありがたかったです。

ある課題では、実際に動くプログラムを提出して、自分は完璧な仕事をしたと思いました。なのに、2点だか何だか、減点されていました。どういうことかと聞きに行ったら、「実行しようとしたらエラーが出て、それを直すのに結構かかった」というのです。なんで??自分がテストした時全く問題なかったのに??と疑問でしたが、しかしどうやら、自分が当時使っていたのが日本語版Windowsで、それゆえのセーブしたエンコード云々が問題だったようで。でも自分の書いたコードの内容自体は問題なかった。と抗議しても、それでも「納品してそれが相手の環境で実行できなかったら終わりでしょ」と言われ、確かにそうだと納得せざるを得ませんでした。本当に期待通りの教えを頂きましたw

しかし当然の事ながら、一般の生徒からの評判はよろしくない。Aが取りにくい先生は、とにかくAが欲しい志の低い学生ばかりの中ではどうしても低評価になってしまうのです。。本当に価値のある先生はこういう方なんだけど。

我ながら、自分は他の生徒たちの役に立ったとも思っている。ミロア氏はいつもの事ながら、前半講義で後半実技課題。レクチャーではまるで経験のあるベンダーに説明するがごとく、予備知識のないうちらにポンポンぽんぽん説明していくので、案の定、クラスの大半がポカーン、となります。でも私は以前のクラスで既にそのパターンに慣れているので、うちら置いかれてる!と思ったところで私は「ちょっと待った待った~!」って感じで先生を止めるw 「何だって?一体何がわからないっていうんだい?」ってまたニヤニヤしながら。。この先生は多分わかっててやってて、きっとこれを楽しんでいるんだと思う(笑)。

MFCは複雑だったけど、楽しかったですね~。神経衰弱やブロック消しゲーム作ったりしました。座標の計算や、マルチスレッド、再帰的な処理など、MFCに限らない事も色々学べました~。もう今の時代こんなフレームワークを使う人はいないと思いますが、、まあネイティブなC++使って、メモリーリークと常に隣り合わせなコード書くのも良い経験になりました。テストしてる最中、突然Windowsの全画面の色がおかしくなったりとかして、きっとどこかでアドレス違反を犯していたんだろう、、という事がたまにありましたw なかなかもうそんな心配する事もなくなりましたね。。

神経衰弱ゲームでは、ちょっと凝って、カードめくるアニメーションっぽい要素を入れたら、おぉぉ、と感嘆の声が上がりましたw なんか嬉しかったですね~。


この記事が気に入ったらサポートをしてみませんか?