May 23, 2005

師匠と、弟子

海くんが・・・司法書士試験を受ける!?
何でまたそんなめんどくさいものを受けようと思ったのやら。
個人的には正気の沙汰とは思えず。
・・・冗談ですよね?


さてさて、今回の話題は、ボクの弟子だと言い張る人のお話。
記事タイトルは「砂ぼうず」より。
あれ、意外といいんで、機会があったらみてほしいなぁ。

以前にも書いたことはあるけど、ボクには数人の弟子がいます。
もちろん、プログラムのつながりです。
あぁ、そういえば、以前紹介した就職先がなかなか決まらなかったある弟子さんは、IBMの方に行ったみたいです。
ボクよりも全然いいトコですね。
うらやましい限りです。
それでも、ボクのことを師匠と呼ぶ彼は、ちょっとおかしいのかもしれませんね(笑)


さっき書いたとおり、弟子は何人かいる訳なんですが、
その中に、いまだに就職をせず、ゲーム会社を狙っている方がいます。
その彼から、時々、質問を受けまして、答えていたりします。
この日も、2時間くらい、メッセにて講義を開催。
もう、ゲームなんて全然作ってないんですけどねぇ、ボク。

彼に限らず、質問を受けるとき感じるのは、
どうしてそう平面的にしか捉えられないんだろう、てこと。
一つの目的、たとえば昨日の話題で一つあったのが音声再生の件なんだけど、
とりあえずそれさえできれば、組み方、その中身を知ったつもりでいることが多い。
でも実際は、そんなことわからなくても、構築自体はできたりする。
ヘルプについてるチュートリアルとか、
どっかのサイトに載ってる情報とか。
そういうのを見れば、下手したら、素人だってできるかもしれない。
でも、それには応用性は全くない。
その上、問題が出た場合、対処の仕方も全くわからず、
どうしてそういう書き方をしたのかも、理解できていない。


彼は、スレッドを使ったストリーミング再生クラスを作ろうとしたらしい。
以前渡した、ボクのゲーム開発用モジュールはそうしていたし、
いくつかある方法の一つとして紹介したから、やろうと思ったのかも知れない。
しかし、彼にはそれがなんの役に立つのか、
スレッドとはなんなのか、
それらを全くわからずに作り上げ、あたかも正しくできたかのように思っていた、らしい。
しかし、そこでバグが出て、その原因がわからず、ボクに質問してきたのだ。
彼いわく、
「ウインドウを動かすと、音声データの転送を行えていない」
ということだった。
はっきり言ってありえなかった。
メインのスレッドとは別に作ったスレッドにて、常にデータ転送を行っているのに、
ウインドウを動かしたからといって、別スレッドに影響が出るはずがないのだ(知識不足なだけで、ありえるかもしれない)。
その時は、デバッグの方法をレクチャーし、後でそれを行うように指示する。

その後、別のことを教授していると、再びスレッドの話題へ。
「スレッドを作ると、フレームレートが落ちるんだけど、なんででしょ?」
再び意味不明。
先ほどの音声データ転送のスレッドでなるというので、
ためしに転送なし&スリープをかけさせることを指示。
しかし、やはり落ちるとのこと。
・・・ありえない。
だって、Windowsは常にたくさんのプロセスがあって、いっぱいスレッドがあるわけですよ。
それなのに、ある1プロセスで、1スレッドを生成しただけでそんなにパフォーマンスが落ちるなんて・・・。
しかも、スレッドの中身はスリープしかさせてないのに。

ここでようやく、ソースを見せてもらうことに。
はぁ?
・・・愕然としました。
彼は、メッセージループ内にてスレッドを生成しては破棄、を繰り返しているじゃないですか!?
まるで、スレッド生成をタダの関数呼び出しのように使用している。
ここまで無駄な処理は、かつて見たことあったでしょうか?というくらい。

ここまで来てようやく、さっきの「ウインドウを動かすと・・・」ってのが理解できた。
そうですね、そりゃー転送されないですよね。
それからしばし、お説教をしました。
自分でも、結構ひどいかな?っていう、なんていうか静かなる怒りをぶつける。
こういうチクチクとダメージを与えるのは得意という、意味のない嫌な特技を発揮して。


以前は、基本的に、聞かれたことにたいして、答えを授けるようにしていました。
でも、それじゃ何にもならないのよね。
てことで、今は、疑問・問題について、答えを出せるように誘導しています。
もちろん、答えを教えてあげる方が簡単なのよね。
少しずつ情報を出して、相手の考えをまとめてあげながら、自分で答えを出させる。
こんなしんどいことはないです。
その上、メッセだから、感情が伝えきれず、微妙に嫌な感じなムードになることも。
それでも、もしもプロの世界に入るなら、そんな甘いもんじゃない。
教えてもらえるだけラッキーでしょう。
メチャメチャ初歩的なことだとバカにされたりもあるでしょう。
第一、わからないことがあるたびに答えを聞いてるようじゃ、やっていけない。
ここで諦めた方がいい。
そう思って、このスタイルでやることにしてます。

プログラマ同士の会話ってのは、わからないことを聞くんじゃなく、
お互いある答えを持っていて、それに対して相手に意見を聞く、というのが一般的なんじゃないかと思う。
面白いことに、プログラムには正解はたくさんある。
それこそ、無数と思えるほど。
その中の一つを抱え、相手と話をし、取り入れたり、逆に与えたり。
そうやって上に上がるんじゃないかな。

そんな相手が欲しかったな、と思いつつ、
すでにダメ人間に成り下がったボクは、ボケーっと周りを見つめることしかできなくなってしまったのでした。

[ サークル日記] Posted by AHO at May 23, 2005 01:29 AM
Comments
Post a comment






Remember personal info?