新入社員のころ干されていた女

私が新入社員として配属されたところは、大学院時代に研修と称してアルバイトをしていた大阪にある部署であった。
ちょうどそのころ、大きなプロジェクトが走り出して軌道に乗り始めたところで、私のやることは何もなく、その上、プロジェクトが忙しすぎて、誰も仕事をさせてくれなかった。(寂)

それではあまりにも…とのことで、見かねた人がオモチャをくれた。

Visual C++ 2.0

VC++2.0ですよ。今は Version6.0を超え、.Netの時代になっているので、今となっては骨董品である。
当時でも、Version4は出ていた時代だったはずなので、ライセンスの関係上、あまっていたコレを渡してくれたのだろう。

「コレを使ってコンポーネント作ってみ」
VC++を渡してくれた人はそう言って、また私はほったらかされ(笑)な時間を過ごすことになった。

とはいうものの、コレはかなりいいおもちゃだった。
まず、C++は読めるものの、ロクに書いたことがない上、VC++の使い方が判らないので、とりあえず、保険としてネット検索をしてVC++メーリングリストを探して入会。
そして、英語のマニュアル(コンポーネント作成関連のマニュアルは当時英語だった)にある、チュートリアルを読みながら、ボタンコントロールを作ってみる。
コントロールを試す場は

Visual Basic 4.0

コレはC++よりもっとわからない世界だったので、保険…と言うより、本当に勉強したくてメーリングリストを探して入会した。
とは言うものの、こんな簡単な統合開発環境があっていいのかー!というぐらい、ユーザフレンドリーな開発環境であったためか、そう苦労せずに使うことができていた。(^^;)

ボタンコントロールを作成したところで、何とかコンポーネントを作る感覚をつかめたので、今度は無謀にもWin32APIだけでダイアログコンポーネントを作ろうと試みるのであった。

Win32APIだけでコントロールを作る。
まず、WindowsGUIがどういう仕組みで動いているかを理解しなくてはならない。
幸い、大学時代からUNIXX11GUIを作成したことのある経験があったので、基本的には同じような仕組み…すなわち、OSから来るイベントが来るのをずっと待機するように作りこむ、と言う動作で動いているはずだと言う頭があったことが手助けとなった。
UNIXX11のように、ループ処理でイベントを待つ、ということではなく、コールバック関数という仕組みでイベントを待つという形にしているという点が違うものの、予想通り、同じ感覚の作り方をすればよいようになっていた。

あとは、コントロール用のメイン関数をWin32APIで作るという部分さえできれば、こっちのもの。
OCXで作成する方法があまりよくわからなかったので、とりあえず、DLL形式で作成することに。
コレならば、サンプルも多かったので、苦労なく作りこむことができた。

ところが、ここで厄介な問題が一つ。
WindowsはそのOSの種類や微妙なバージョンによって、Win32APIの挙動や利用範囲がまちまちなのであった。(悲)
やはり、作るからには、今、目に見えているOSの種類ごとに対応できるよう、…すなわち、どんなOS上でも同じ挙動をするよう、作りこむ必要があった。

自分が起動しているOSが何かを判定するAPIも、一発ではOSが確定しない。
その上、OSの種類・バージョンによって、分岐が増える。
よって、処理が複雑になり、テスト時間は増えるしプログラムの挙動も怪しくなってくる。
また、Win32APIを使うと、…というより、誤ったパラメータを入れたバグプログラムを実行したあとは、どうもマシントラブルが多くなる。(涙)
当然、OSから再インストール…ということを何度も繰り返す。
時にはOSだけですまず、ハードウェア的にトラブルを起こすこともあり、メーカーさんとのやり取りも増える。(泣)
しまいには「OS再インストールの達人かもしれん」なんて妄想を抱くぐらい、再インストール&現状復帰が上手になっていた。(爆)

…と、こんな調子で1年半程度、CAMUSは社内で干されていたのであった。(爆)
でも、ただ干されていはいない。
UNIXしか知らなかった人間をWindowsユーザにころっと変えさせた挙句、VC++VBの両刀使いにさせてくれたのだから…。(^^;)