日々のつぶやき(99/05/1〜)

1999/05/26(Wed)

Mac版移植作業。あいかわらずOCRエンジン部分のコンパイル作業を続行。結構苦労したのだが、なんとかちゃんとリンクまでうまくいくようになった。新しく作ることになるDLLなどのひな形も出来たので、これでこれからの作業は少しは楽になるかな。楽になればいいな。

実はエンジン部分で使っているMSVCのランタイムとか、WindowsAPIの移植作業に関してはほとんど全然手つかずで残っている。とりあえず今の知識だけで何とかなりそうな、マルチバイト文字を扱うためのライブラリの移植作業を進める。MSVCのランタイムはソースが全部公開されているし、マルチバイト文字を扱う部分に関してはそんなにプログラミングは難しくないので、さくさく進んだ…つもりだったが、それでも結構時間がかかってしまう。これは結構コンパイラのバグ(?)に起因する問題があって、コンパイルエラーが出た部分を読んでみるのだが、全然問題になるような箇所がない。で、原因を絞りこんでいくうちにOSがお亡くなりになってしまい、仕方なしにリセットしてから、もう一度コンパイルをすると、今度は何事もなかったようにコンパイル/リンクが終了するということが2〜3回あった。勘弁してほしいものだよなぁと思う。

エンジン部分に関しては、ファイル関連とか、GetPrivateProfileXXX()系統の関数を残しているが、これについてはもう少し勉強してからでないとちょっと太刀打ちできそうもないので、今日はダミー関数を用意しただけで実質作業は見送った。

その後、いよいよ敵は本能寺のメインウィンドウの製作に取り掛かる。といっても今日やれたのは、プログラムで使うアイコンをリソースの中に埋めこんで、メニューを作った程度。ツールバーに関しては知識がないので、どうやっていいのか見当も付かないので、その部分は保留。サブメニューも出し方が分からないので、これまた保留。メニュー項目の前に表示されるはずの小さいアイコンも、出し方が分からないのでこれまた保留。保留だらけだな。(^_^;

今週に入ってからMacの調子が悪い。一日数回はハングアップするし、帰り際に「システム終了」を選ぶとハングアップするので、リセットボタンをおしてから電源オフにするのがほぼ習慣になっている。WindowsもよくハングアップするOSだとして悪名が高いが、MacOSだって似たようなものじゃないかな。会社のマシンだけだったらともかく、自宅のiMacもしょっちゅうハングアップして、会社のG3マシンはリセットボタンがあるからともかく、自宅のiMacなんてリセットボタンがない(?)から、ハングアップしたが最後、電源コードを混戦から引き抜くしか方法がなくなる。(^_^;これももう毎日のように起こる。別に無茶なことをやらせているつもりはないんだけどなぁ。(^_^;

1999/05/25(Tue)

深夜のMacプログラム。DLLと単純なライブラリのリンケージに関して、簡単なテストプログラムを書いてみようと思って、いきなりはまる。(^_^;やろうと思っていたことは単純で、Windows で書けば



//In Static Lib.

void FooInStatic(void) {

	MesssageBox(NULL, "called Static Foo", "Test", MB_OK);

}



//In DLL

void FooInDLL(void) `

	MesssageBox(NULL, "called DLL Foo", "Test", MB_OK);

}



//In Main

int main() {

	FooInStatic();

	FooInDLL();

	return 0;

}

たった、これだけのコードをMac上で実現するのに一苦労というか、結局あれこれドキュメントを探してみたんだが、リソースを読んでちゃんとAPIを呼ばないと、簡単なメッセージも表示できないらしい。ええと、ダイアログを表示するにはどうやるんだったけ?確か会社にサンプルプログラムがあったから、それを見れば分かるけど、何にもなしじゃ分からない。(;_;シクシク

前日ヘルメットのバイザーが壊れたから新しいヘルメットを買う、家に入れるお金もおろしておかなくてはいけない、何よりSF大会の参加費用をさっさと払い込まなくちゃいけないという訳で、今日は珍しく9時頃に自宅を出た。銀行に行って、近所の自転車野犬スクーター販売店に行って、ヘルメットを買う。バイザーが壊れただけだったら、それだけ換えればいいかもしれないが、それまで使っていたヘルメットはかなり年期がはいっているから、いいかげん買い直したほうがよさそうだ。(^_^;お店に行ってフルフェイスのヘルメットがないかと聞くと、売れ残りの製品だったんだろうが、結構安かった、その場で購入。ただ、ちょっと小さい(Mサイズ)かも。気に入らなかったらまた買い直そう。

会社に行ってから、認識エンジンのビルドを始める。先行してIさんがコンパイルしてくれたので、取り合えずコンパイルは通るはずだろうと思っていたが、実際やってみると、ソースコードで変なところは見つかるし、リンクしてみるとシンボルの重複定義でエラーが出る。(まあ、彼にはリンク時のエラーは無視するように指示していたんだが。)よくよく調べてみると、過去に使われてはいたが、もはや使われていないファイルまで、渡してくれたのが原因らしい。早速クレームを認識エンジン担当に送る。で、調べてみて気がついたのだが、この認識エンジン担当者はタブサイズが8でインデントのサイズが 2というソースプログラムを書いていた。私は1インデント == 1タブだと思っていたので、このソースファイルをみたときにはさすがに面食らってしまった。(^_^;その他、見つけた危険なコーディングは注意して、改善してもらった。

で、エンジン部分に関してはコンパイルさえ出来れば、問題は片付いたも同然と思っていたのだが、MSCのランタイムルーチンを使っている部分が結構あったり、型宣言に関する問題が山積していることが分かる。とりあえず、何とかコンパイル・リンクは通るように、ダミーのランタイムルーチンを定義してその場をしのぐ。問題が出たルーチンはメモり管理回りと、文字列処理関係、WindowsAPI関係など。これってあとで何とかWindowsAPIを真似っこするように作らないといけないんだよなぁ。特にファイル関係あたりは結構面倒くさそう。GetPrivateProfilexxx()関連とかなんて、どうシミュレートしたらいいのか途方に暮れる。この分だと、エンジン関係をまともに動かすだけでも、今週一杯かかるんじゃないかなぁ。特にFile I/O回りはMacのファイルシステムはちょっと特殊なので、よくよく考えないと後で取り返しのつかない事態になりそう。

その作業をしている間にCodeWarriorのバグ発見。ただし、再現性がよく分からない。短いプログラムで試してみても再現しないので、原因をつかむのに時間がかかる。なんかCodeWarrior関連ではそんな感じのコンパイラバグでつまらない時間を潰すことが多いような気がする。今回ぶちあたったバグは、こんな感じ。



//In StatLib.h

#ifdef __cplusplus

void * FooInStatic(unsigned char *);

#else

/* 引数チェックを省いてくれるようにコンパイラにお願いする */

void * FooInStatic();

#endif /* __cplusplus */



//In Static Lib.c

#include "StatLib.h"

void * FooInStatic(unsigned char x) {

	//なにかの処理

}

引数チェックをやめてくれとお願いしているのは、とてもcの古いソースがあって、今でもそのソースファイルを引きずっているんだけれど、その当時はunsignedとsigned、constとnon-constの混在があっても全然問題にならなかった。ところが、今同じことをやろうとしても、コンパイルエラーが起きてしまうので、そのつじつま合わせに苦労する。一部はコンパイラのバグだと分かったんだけれど、さて、そのバグを回避するにはどうしたらいいんだろう…と更に悩む。普通に考えれば、


//In Header

#ifdef __cplusplus

void * FooInStatic(unsigned char *);

#else

/* 引数チェックを省いてくれるようにコンパイラにお願いする */

void * FooInStatic();

#endif /* __cplusplus */



//In Static Lib.c

#include "StatLib.h"

void * FooInStatic(unsigned char x) {

	//なにかの処理

}

とやるんだろうが、CodeWarriorはこの場合にコンパイルケラーを出すことがあるようだ。(短いプログラムでは大丈夫だったが。)これをどうやって回避すればいいのか、さんざん考えたが、どうやら関数の定義部分をclassic styleになおすといいらしい、ということで一件落着。しかし、このコンパイラ、本当にバグが多いよなぁ。(sigh)

なるべく作業を自動化するのはプログラマの鉄則なので、Macでの自動化をサポートするAppleスクリプトというものをいじってみる。やりたい事といえば、「更新されたライブラリファイルを指定されたフォルダにコピーする」という、たったそれだけのことのはずなのに…、本当にただそれだけのはずなのに、全然うまくいかなくていらいらする。最終的にはAppleスクリプトでその手のことをやるのは、難しいのだろうという結論に達して、あきらめた。少しいじってみた感想で言えば、「Appleスクリプトは目くらましのおもちゃ」ということかな。(^_^;とにかくやりたい事が全然出来ないんでいらいらする。まあ、Appleスクリプトはちょっといじっただけなので本当はもっと潜在能力があるかもしれないけど、一種のRADツールなのに、日本語のドキュメントはない、言語仕様が特殊なんて、いかにも「使って欲しくないけれど、機能としては用意しました」なんて感じで、たまらなくいや〜んな感じだ。反論のある方は、私にApple Scriptを教えてくださいな。(^_^;

1999/05/24(Mon)

講師の仕事も終ったので、気合を入れてMac版の作業に取り掛かる。まだプロジェクトが始まったばかりだとはいえ、5月に入って講師役をやるようになってから、ほとんどまともに進捗していない。後れを取り戻すべく頑張らなければ。

とりあえずあまり機種依存のない部分に関してはIさんに、コンパイルが通るようにヘッダーファイルの追加などの作業やソースの微調整をしてもらっていたので、とりあえずその作業がちゃんと出来るかどうか確認してから…と思っていたが、これが結構手間がかかった。

まずコンパイルしてみると、いくつかのファイルで、「size_t が定義されていない」というエラーが出る。別のいくつかのファイルでは、ちゃんとコンパイルされているし、コンパイル時に最初に取り込む「プリフィックスファイル」に指定してあるので、出るんだったらすべてのファイルで出なけりゃ変だ。

しばらく悩んだが、CodeWarriorのヘッダーファイルを良く読んでみると、C++の場合、size_t じゃなくてstd::size_tで定義されていることが分かった。う〜ん、これって標準なのかなぁ。(?_?)とりあえずsize_t を使っている場所が1ヶ所だけだったので、何とか対処できた。

さて、これでコンパイルできるから…、と思ってビルドしてみると、確かにコンパイルできるんだが、リンク時に、シンボルの2重定義やら何やらがワンサカ出てくる。一体なんだろうと思ったが、よくよく考えてみると、元のWindows版はかなり沢山のプライベートDLLを作っている。話に聞くと、MacでDLLってのは面倒臭そうだったし、手元の本でもMacのDLLの使い方について書いてある本がなかったので、1つの実行ファイルにまとめてしまうことにしたのが敗因。そりゃ、DllMain()とか一杯あるよな。(^_^;結局Windows版のDLLに対応するプロジェクトファイルを作ることで対処。で、鬼のように沢山あるDLLを構成するソースファイルを調べ、ちゃんとビルドできるかどうか調べて、なるべくWindows版と同じようなシンボルが定義されるように…、などとやっていたらあっという間に一日が終ってしまった。げ〜、まだ仕事の下準備の段階で1日じゃ終らないんかよ。(^_^;

さて、日記を書きおわったら、iMacでMacプログラミングの勉強を続けるとするか。

1999/05/23

午後に起きて、ご飯を食べて、シャワーを浴びて…などとやっているうちにあっという間に2時半。今日はSF大会の準備会がある日なので、事務局に出かける。本当はこの準備会は毎週行われていて、今まで研修関係でとても出ている暇がなかったのだが、めでたくお役ゴメンになったので、時間が作れるようになったのだ。とはいっても長らく顔も出していないし、忙しいのは私だけじゃないはずなんで、肩身の狭い思いをするだろうなぁという思いを胸に秘めて事務局に向かう。

事務局にいったら、既に10人ほどが作業をしていたが、なんだか様子がおかしい。聞けば土曜日に大会歌以上での最後の合宿があって、朝までビデオ鑑賞をしたあげく、徹夜でこの事務局に来て作業をしているんだという。お疲れ様。(_ _)

1999/05/22

今日はMacのクラスライブラリのPower Plantの勉強をすると決めていた。もう家にiMacを買ったんだから、別に会社にいかなくてもコンパイルは出来るし、教科書を読むことだって出来る。だが、やっぱり大きな画面のほうがドキュメントもソースも見やすい。そんな訳で会社にいってPower Plantのサンプルプログラムを作ったりして遊んでいた。会社で遊ぶなんて不良社員だなぁ…とも思うが、まるっきり仕事に関係ないわけじゃないし、第一仕事でMacへの移植作業をやらなければ、こんな勉強をする必要もないわけだから、そこは大目に見てもらおう。(^_^;

Macのコンパイラは、業界標準のCode Warriorを使っているのだが、Visual C/C++と比べて、やっぱり一番の違いはClass Wizardがないってことかな。あれがあると結構作業時間を短縮できるんだけれど、まあないものは仕方がないか。

会社から帰ってからは、今度は自宅マシンでお勉強を続ける。ふと気がつくとほとんど明け方になっていた。(^_^;

1999/05/19-21

例外処理とか、純粋仮想関数とかを話す。当然使わせるつもりなんかほとんどないんだけれど、MFCになっていきなり見てびっくりするのも気の毒だから、一通りだけは話しておいたのが水曜日。木曜日、金曜日は講義をしなかった。もっとも研修生たちが課題に苦しんでいるのを見ると、これ以上詰め込んでも全部忘れてしまうだろうから意味がない。

金曜日になっても、結局まともに課題が出来た人は一人もいなかった。研修生達に聞いてみると、「時間がなかったのが原因」と言っていたが、実際に自分で書いてみると、多倍長整数クラスは1日かからなかったし、文字列クラスに関しては(必要最小限の機能しか実装しなかった -- といってもどの研修生よりも機能が豊富な文字列クラスになっちゃったが-- )数時間しかかからなかったので、1週間も与えて「時間が足りなくなる」なんてことは想像できなかった。

研修を始める前には、研修生たちにコーディングスタイルをどうやって強制しようか迷っていたのだが、1ヶ月経ってもプログラムを書くことを憶えなくちゃいけないレベルの人もいるので、頭が痛い。本人達に問題があるのか、教え方がまずかったのか。まあ、両方なんだろうけど。(^_^;

今日で講師の任期(人気はとっくに落ちているが(^_^;)が終って、来週からKさん、Yさんが講師を担当するWindowsプログラムに入る。しかしぎりぎりWindowsのプログラムが分かる程度しか力がないと思うので、Kさん達、頭を抱えるだろうなぁ。(^_^;今日までは、昼間会社にいる間は研修生達の面倒を見て、夜家に帰ってから翌日の講義の準備とか講義で使うサンプルプログラムを用意して…、という感じで、この日記の更新が出来ないわ、本業が全然進まないわで、大変な状態になっていたが、これからはやっと元のペースで生活できる。ヤレヤレ。

1999/05/18(Tue)

今日の講義はC++の動的メモリ管理について。要するにnewとdeleteの話なんだけど、単にそれだけの話なんで、話自体はあっさりとカタが付く。金曜日に出した課題が、(1)文字列クラスを実装すること、(2)多倍長整数クラスを実装することの2者択一。今日出した課題はその実装したクラスを使って、(1)ラインエディタを作る(2)分数電卓を作ることという課題を出した。

ミソは「他の人の定義したクラスを使って実装すること。クラス自身に手を入れたい場合には、クラスを作った人にお願いしてクラスを変更してもらうこと。(クラスを利用する人はクラスを変更してはいけない。)」という条件がついていることだ。これで「クラスを利用する立場」と「クラスを作る立場」というものをそれぞれ理解してもらえればいいのだが、果たしてどれだけうまくいくかは私にも分からない。(^_^;ただ、課題を出すときに、「ラインエディタというのがどんな動作をするのか想像が出来ない」という質問を受けたのはちょっと滅入った。(^_^;今時の「若いもん」(といっても私と大して年は違わないんだが←禁反論)はラインエディタなんて知らないんだ。(^_^;

1999/05/17(Mon)

体調悪くて、一日休み。午後には結構体調が回復したので、Macの設定やら、InsideMacを読んだりして、午後を過ごす。なんだ、あんまり仕事をしているのと変わらんな。(^_^;

1999/05/16(Sun)

Macのセットアップ情報とか、Mac関連のフリーソフトなどを取りに会社にいく。Mac関連のソフトアーカイブなんかを調べて見たりする。とりあえずウン万円もしたiMacである。骨までしゃぶるつもりで使わないとね。InsideMacなどをコピーして自宅でも、ある程度調べることができるように態勢を整えた。

1999/05/15(Sat)

「希望した色がない」という理由で、Macの購入をいったんは断念したんだが、現状では会社にいると新人たちのことが気になって、自分のMacの勉強に身がはいらないし、かといって自宅にはMacがないから、これはこれでMacの勉強をするのに何かと不便なので、色とかはどうでもいいから、とにかくiMacを入手することに決めた。

で、近所のコンピュータショップにいって、iMacを購入。第一志望のブルーベリーは手に入らなかったが、第2希望のパープルがたまたま在庫があったはラッキー。メモリも今日はちゃんと在庫があった。メモリは、128Mbyte"に"増設すればいいやと思っていたのだが、128Nbyte"を"増設するしかないみたいで、結局140Mbyteのメモリを積んだiMacを買うことになった。(^_^;まあ、+64Mbyteと+128Mbyteで1万円程度しか違わないんだったら、128Mbyte増設するほうが正解だってものだろう。FDDはどうせ会社の自分用MacもFDDがないし、どうしてもマックで作ったデータを会社に持っていきたいなら、自宅LANを利用して、自宅iMac→自宅ATにFTPで転送→AT形式のFDに保存→会社のATマシンでFDを読む→会社のMacにFTP転送、なんて手順で転送できるし、小さなデーターだったら、メールで送ってもいい。まあ、本当に不便になったら、購入を考えよう。(^_^;

しかし、仕事でMacをやるんじゃなかったら絶対Macなんか買わなかったろう。これでほとんど一ヶ月分の給料パーである。これじゃ、稼ぐために仕事をしているのか、仕事をするために仕事をしているのか分かんないよな。(^_^;

1999/05/14(Fri)

一応、今回の講義の山の継承が終ったということで、あとは落ち穂拾いみたいな感じの講義になる。もっとも説明しなけりゃいけないことはまだまだ沢山あるのだが、講義を受けている研修生の顔とか、作ったコードを読んでいると、テンプレートとかを詳しく話してもどれだけ分かってもらえるか分からない。(私自身が人に説明できるだけ詳しく分かっているか?というのもあるが(^_^;)まあ、C++の大雑把なところというところでは、あの程度の定義でいいだろう。

研修生の中で一人、会社に入るまでプログラムを全く組んだことのないIさんにどう研修をさせていっていいのか困っている。k&Rを読んでみて、分からない所があるかと聞いてみても、特に分からないところはないというのだが、それを実際に応用するときにどうすればいいのか分からないという。特に、関数に関して、どんな引数を取らせて、どんな戻り値を返せばいいのかというのが思いつかないというのは、頭を抱えてしまった。

私もC/C++の勉強の途中では、バカな間違いをさんざんやったり(今でもしょっちゅうやるけど)、理解できなくて苦しんだ経験はある(C++に関しては今でも全部を理解はしていないと思う)が、関数の戻り値とか、引数に関して、「どうすればいいのか分からない」というのは、私は経験がないのでどうアドバイスしていいのかさっぱり分からない。やっぱりそれって難しいことなんだろうか?

1999/05/13(Thu)

今日ようやくNさんが出社。でもあんまり体調が良さそうには思えない。

今日の研修はクラスの継承(単一継承)、オーバーライド、virtualの指定方法、protected、コンストラクタとデストラクタの話をする、継承関係とかが入ってくると、OOPは格段に難しくなってくるのは分かっていたし、実際後で研修生のレポートを読んでも今日の講義は昨日までとは格段に難しかったと感じたようだ。まあ説明が悪いかも知れないけれど、コンストラクタ・デストラクタ関係の話って分かってしまえば何でもないけれど、最初に見た時には面食らうのかも知れない。でもさっき私が最初に読んだC++の教科書を見たら、ぜいぜい1ページ程度にしか書いてなかったぞ。私は少なくとも10分程度は説明したんだから、せめて研修生には10分の説明分くらいは理解してもらいたい。しかし、今読んでみると、1ページくらいの説明で良く書いてあることが理解できたよなぁ。 < 昔の私。自分で自分を誉めてあげたい。(^_^;

先日、会社の自分のMac用にNortonさんを買ってきた。会社の金でっていう選択肢もあったのだが、どうせ後でMacを(コストパフォーマンスの悪さに嫌々ながら…これがMac担当になっていなかったら絶対買わなかったろうが…)自宅マシン用に(ってまだ買う決心が付いてないんだけど)買うことになるんだろうから、自腹を切る。消費税込みで2万円弱。で、会社で使っているマシンのハードディスクを検査してみたら、「重大な問題が起きている」とのこと。びびって、マニュアルを読んでみたら、NortoさんCD-ROMからブートして問題を解決すればいいとの御宣託。よしよし、と思ってCD-ROMを試してみると、ものの見事に失敗。

「わたし〜ぃのど〜こ〜がいけな〜い〜の」という涙目になりながら、シマンテックのページを見るとG3ではノートンさんの4.0のCD-ROMではブートできないから、4.03のCD-ROMを実費で購入してくれとのこと。なんだ、私がバカなんじゃなくて、ブート関係を変にこねくり回した(もしくはこねくり回さざるをえなかった)Appleがバカだったのか。(^_^;ATマシンの感覚で言えば、PentiumIIではブートできるFDがあるが、そいつはPentium III を使っているマシンでブートできないという事になる。こいつはちょっと想像できなかったぞ。

で、もう1つ。G3対応の4.03(現在出回っているのが4.00)を実費で2500円程度で提供するとかいっているけど、CD-ROMの値段が100円切っている現状で、梱包+郵送料が2400円ってとても実費とは思えないんだけれど、やっぱりMacを使っている人はWindowsとかを使っている貧乏人の感覚とは違うんだろうな。ノートンさんの4.03のCD-ROMを頼むとシマンテックには(払いたくもないのに)2万円以上貢いでいることになるし、金持ち達のの考えることはよく分かんないよ。(^_^;

1999/05/12(Wed)

Nさんの体調がめちゃめちゃ優れないらしい。今日もお休み。大丈夫なんだろうか?

新人研修は、private, public、friendアクセス指定子の話と、演算子関数の話をする。ここまで来るのに三日かかったのだが、これで大体C++のOOPデザインの基礎の基礎は説明したに過ぎない。研修生の日報を見ると「良く理解できた」という反応がほとんどだ。それは当たり前で、明日以降は継承だのコンストラクタだのというC++のとんでもなく怪しげな部分を説明しなくちゃいけないんだから、この程度で「よく分からなかった」などといわれたら、お先真っ暗である。こっちはコンストラクタが必要じゃないようなクラスをわざわざ作って、リファレンス型とかconstを使うと余計な混乱をしそうだから、普通だったら使う所でわざわざ使わないようにして、混乱を避けるように…、なんて最大限の気配りをしているんだからなぁ。(^_^;

明日は継承の話をしなくちゃいけないのだが、本に書いてあるサンプルは大抵断片的なサンプルしか書いていなくて、実際にコンパイルするなんてことが出来ない。まあ私はその手の本を少しは読んだ経験があるから、ある程度その不完全なサンプルからでも趣旨は読み取ることができるのだが、やっぱり今回の研修は相手がC++の初心者ということで、自宅に帰ってから、つまらない例には違いないが、説明には十分使える、ちゃんとしたサンプルプログラムを書いた。

説明しなければいけない項目を全て使ったサンプルプログラムは比較的短時間で書けたのだが、問題はそのサンプルプログラムを使ってどうやってC++の機能を説明するかである。そのサンプルプログラムを色々いじってみたのだが、説明したいことを1つのサンプルプログラムでまとめることができずに結局似たようなサンプルプログラムを6本書いた。

もっとも似ているといってもそれぞれのプログラムは、例えば「継承を説明するため」とか「仮想関数を説明するため」とかに特化させた、よく似た別バージョンのプログラムだ。ただ、そのサンプルプログラムを校正すると、「現時点では使わない方が研修生の混乱させなくて済む」とか「無理やりにでも使って、この場で説明しないといつ説明できるか分からない機能」なんてのが結構あって、そのそれぞれのサンプルで「このサンプルはここが違うぜ!」みたいな事をなるべく目立たせて、その機能をうまく紹介するというのは結構骨が折れる。結局朝の5時くらいまで、サンプルプログラムとにらめっこして、あ〜でもない、こ〜でもないと悩んでいた。

1999/05/11(Tue)

今日もNさんが体調不良でお休み。大丈夫なんだろうか?

今日は、オブジェクトの概念と、クラスの書き方の初歩の初歩。用意した教科書にはスタックをクラスを使って実現した例がのっていたが、講義中の説明は分数クラスを作って説明してみた。(まあそっちのほうが色々面倒なことをしなくてすむというのが本当だけど。)コンストラクタも演算子関数もアクセス保護も説明していないので、全然ありがたみがないクラスなんだけど、いきなり全部を説明する訳にもいかないからなぁ。(^_^;

とりあえず、コンストラクタや演算子関数を使わないで、分数オブジェクトの初期化、足し算、掛け算、表示ができるようなクラスを書いてみせて、その後、引き算、割り算を使えるクラスを書いてみること、それを使ってちゃんとプログラムが動いていることを確認できるようなサンプルプログラムを作ってみることを課題として出した。

途中経過を見てみると、メンバー関数の定義をヘッダーファイルに書いている人が何人かいて驚く。「クラスの定義をヘッダーファイルに書くように」と行ったのが誤解されたんだろうな。しかし、インライン関数でもないのに、ヘッダーファイルに関数の本体を書くってのは、私の想像を超えていた。(^_^;

Macのプログラムでモーダルレスダイアログのサンプルプログラムを書いているのだが、これがちっともうまくいかない。表示する所まではうまくいくんだが、ダイアログを消去するとOSごとお亡くなりになってしまう。(;_;)一体何がいけないのかさっぱり分からない。サンプルも見つからないし…。こういう場合には、やっぱり関連書籍の少なさが障害になってにっちもさっちも行かない。InsideMacを読んでみたけれど、それっぽいことが書いてある部分が見つけられなかった。(モーダルダイアログについては見つかったんだが、そんなものは今更サンプルを見るまでもない。)

どこかで「Macのプログラムが勉強しにくいなんてウソだ。InsideMacに全部書いてあるし、公開されているからそれを読めばいい。」と書いてあるのを読んだけど、逆に言えばInsideMacくらいしか頼るものがない、本屋に行ってもMacのプログラムに関する書籍なんて、クズレベルの本ですらほとんどない。いわんや良書をや。まあ、田舎の本屋だからかなぁ。でも、はっきりいって頼りになる参考書籍がほとんどないし、頼れる人も情報源も少なく、サンプルだってそんなに豊富だとは思えない。これでMacがプログラミングしやすいってのは、少なくともいいすぎじゃないかなぁ。

1999/05/10(Mon)

上司のNさんが体調不良でお休み。で、午前中の定例ミーティングはキャンセルされた。

C++の講義開始。C++のほうは私が講師を担当。今日はC++の導入編ということで、クラスを使わないで説明できるC拡張の部分を話した。大した量はないと思っていたのだが、話終えてみると、1時間以上話していた。

連休ボケで、それ以外の仕事はする気になれず、連休中に溜まったメールに目を通したり、Macのプログラムで気になったことを調べたり、明日以降の講義メモを作ったりして一日が終る。家に帰ったらなんだか眠くなって、10時くらいにはもう寝てしまった。

1999/05/09(Sun)

S郷さんの結婚式。大学で同じサークルだったゲームの師匠Tさん、HTMLの師匠Tさん、後輩のKさんも出席していた。当然同じテーブルだったので、おバカな話に花が咲く。

結婚式は人前結婚という形式で、誓いの言葉とかを披露宴の出席者の前で誓い、式の参列者がすべて証人という私は初めて見る形式だった。

誓いの言葉の中で、「ゲームは1日1時間以上はやらない」というS郷さんの誓いの言葉は、私のテーブルで話題になって、「この誓いはいつまで守られるか?」というのが賭けの対象になった。当然私は「一生守る」方に賭けたんで(と、書いておこう(^_^;)、そこんとこよろしく。>S郷さん

とてもいい結婚式で、2次会に出てもよかったのだが、明日はC++の講義をしなきゃいけないので、さっさと帰ることにする。C++の講義をしなくてもいいんだったら、もう一晩名古屋に止まっていってもよかったんだが。ともあれ、おめでとうございました。>S郷さん

P.S.新婚旅行先はイタリアだそうな。という訳で、彼のページはしばらく更新が止まるのであった。

1999/05/08(Sat)

S郷さんの結婚式に出席するために名古屋入り。式は翌日の11:45からなのだが、私は朝が弱いので、前日に宿舎を取ってもらえたのは有り難い。少し早めに行って電気街でも見に行こうと思ったが、よく考えて見たらどこの地下鉄で降りれば電気街に行けるのか憶えていなかったので、松本を2時頃出発し、5時頃名古屋着。式場もホテルも名古屋の繁華街栄のど真ん中。いったんチェックインして、本屋を探してうろうろしてみるがなかなか見つからない。やっとパルコのブックセンターを見つけて、C++の入門書を探す。あんまりいい本がなかったが、その中では一番良さそうなものを選んで一冊購入。

夕食を食べながら、その本を読んでいくとやっぱりあんまりいい本には思えなかった。どうしてC++の入門書ってあんまりいい本がないんだろうなぁ。

1999/05/07(Fri)

「The House Of The Dead」をやって、腕が痛くなったし、全然うまくならないので、オメガブーストに戻る。今日は何とかコンテニューなしで最終面までクリアーできた。多分まぐれだろう。難易度をHardにしたら、4面まで持たなかったのがその証拠。(^_^;

1999/05/06(Thu)

朝起きた時に、神のお告げが聞えたような気がする。さっそく神のお告げに従ってiMacを買いに行く。(不信心者の私に聞こえるお告げはその程度。(^_^;)実際、まともにMacのプログラムをやろうとしたら、会社でいじっているだけではとても時間が足りない。いざ、近所のLaoxへ。

近所でiMacを売っているお店に行くと、SOTECのPentium III 500Mhzマシンが12万円程度で売っている。思わず手が出そうになるが、ここはぐっと我慢。で、iMacの値段を見てみると、15万円ちょっと。メモリも32Mbyteしかないから増設しなきゃいけないし、CD-ROMだってそんなに早くはないし、プロセッサスピードだって333Mhzかぁ。どうせマウスも買い直さなきゃいけないし、ソフトウェアも全部買い直しだぁ。一体いくらかかるんだろう、こんなことならあのSOTECマシンを…との思いが頭をよぎる。取り合えず店の人をつかまえて、値段を聞く。

vyama「iMacにメモリを128MbyteとFDDつけてどれくらいの値段?」
店員「大体22万円弱ですね。」
vyama「(コストパフォーマンスが悪いよなぁと思いつつ)メモリを64Mbyteにすると?」
店員「1万円位しか違わないですね。」
vyama「じゃあ決まり。持って帰るからね。色はブルーベリーにするから。」
店員「申し訳ないんですが、今メモリが在庫がなくて…。それと」
vyama「まだ何かあるの?」
店員「ブルーベリーは人気が高くて、一ヶ月後まで予約が一杯です。」

AppleがMacで本気で売ろうとしていないことがこれではっきり分かったので、さっさと購入はあきらめる。「5色のMacが勢揃い」なんてバカなことを言う前に人気のある色を確保したらどうなんだろう?流通とか小売り店には5色1セットでしか納入しないという話を聞いていたので、さすがに店員に文句を言うのは止めておいたが。大体Intel系統の最速CPU使ったマシンが12万円台で買えるってのに、あのスペックであのカルテル価格。儲けようとする意気込みだけはひしひしと伝わってくるよなぁ。(苦笑)

1999/05/05(Wed)

ゴールデンウィーク最終日…のはずなのだが、私は6日、7日と休暇を取っているので、休みはもうちょっと続く。懸案になっていたThe House Of The Deadを購入。これもサルのようにやるが、全然歯が立たない。Very Easyで、ライフを最大に増やして、クレジットも最大まで増やしてやっているのだが、エンディングどころか、敵の黒幕のいるビルの中に入れない。なんでこんなに難しいんだよぅ。(;_;)

1999/05/04(Tue)

一日中オメガブーストをやっていた。夜の12時を回るくらいまで、サルのようにやっていたおかげで、コンティニューを使ってやっとエンディングデモまでたどり着く。このゲーム、病みつきになりそうだなぁ。

1999/05/03(Mon)

二日酔いでふらふらしながらも、何とかchomboさんの家から帰宅して、当然爆睡。3時頃起きた後に買っておいた「オメガブースト」というPlayStationのゲームをやりはじめる。メチャメチャ面白い…が全然クリアーできず。(^_^;

1999/05/02(Sun)

chomboさんとその家族、Mさんと一緒に花見。この日はchomboさんの家に泊まる。

1999/05/01(Sat)

金曜日に、C言語の研修が終ったので、研修生達と飲みに行く。ところが木曜日の夜は研修生たちの課題をほとんど徹夜で読んでいたので、その疲れが土曜日になってどっと出て、一日中寝ていた。


1999/4 のぶつぶつ

1999/6 のぶつぶつ

日々のつぶやき 目次

作者(vyama_at_janis_dot_or_dot_jp)への感想・意見など。
spamよけのため、_at_や_dot_は適宜@や.に入れ替えてください。

目次ページ