私の最初の職場は「タウ技研」という会社でした。
「電卓」を作っていたエンジニアが「コンピュータ」を作る為にスピンアウトして起こした会社でした。
今や「DOS/V仕様」PCとEWSに二極化していますが、当時は多くの小メーカーが群雄割拠し、
オリジナルのミニコンピュータを製造販売していました。
タウ技研もその一つで、自社製マシンに会計ソフトを載せて税理事務所に販売している、小さくてもりっぱな「メーカー」でした。
開発系はハード部隊とソフト部隊に分かれ、入社したての私は、社長直下の「企画開発課」に配属されました。
自社製コンピュータ「TAU68F」をUnixワークステーションとして、オムロンにOEM供給していましたが、
当時WSは大学や研究機関での学術計算用としての需要しかありませんでした。
そこで68Fを「DBオフコン」として拡販するため、アメリカ産DBOS「Pick」を68Fに移植し、
住友商事エレクトロニクス事業部を通じて販売する、というビジネスが進行中でした。企画開発課のミッションは、「Pickを68Fに移植する」と「Pickを日本語対応化」するの二つでした。
「華々しいMMI(今で言うならGUI)を駆使したく」プログラマを志したのですが、
配属された先は「移植担当」、開発言語は「アセンブラ」。
今風なら「組み込み系プログラマ」としてキャリアをスタートしました。
ところで、68Fの「68」は、MPUにモトローラ製「M68000」を搭載したことに由来します。
M68Kは、32bitのアドレスレジスタ8本と32bitのデータレジスタ8本を持っています。
アドレスレジスタ上位8bitが使われない為32bitCPUと見なされないですが、32bitアーキュテクチャを内包した16bitCPUでした。インテル系と違い、変な?セグメントレジスタを介さずダイレクトに24bitのアドレス空間をアドレシングでき命令セットもシンプルで判り易いので、私のような初学者にとっても扱いやすいアセンブラでした。
後にインテル系を使ったとき、セグメント管理はシャーシーわ、命令は逆さまだわ、16bitムーブしたらメモリ上で上位バイトと下位バイトが逆さまになるわで、インテル系CPUはあまり好きではありませんでした。
アセンブラでの開発は「動かしながら作る」ことができません。
コーディングを最後まで完了させたらアセンブルを掛けエラーを取ります。エラーが出なくなったら、紙に打ち出して机上デバッグします。自分がCPUになったつもりで、頭の中で一行一行ソースを動かします。アドレスレジスタを使い間違えていないか、ポインタは正しいか、スタック漏れはないか、ロング・ワード・ショートを間違えていないか等々、気を配りながら追って行きます。
頭の中で「完璧」に動くようになったら、いよいよ実装です。自社製ICE(アイス)に開発用ROMを取り付けます。
開発用ROMは背中に窓が開いていて、メモリに紫外線を直接当てて内容を消して何回も使いまわせるようになっています。ハード屋さんの部屋には内側に蛍光灯がついた鍋蓋みたいなものがあって、それを開けるROMが5・6個転がっています。一晩くらい寝かせたヤツを一個とって、背中の窓に遮光シールを貼ります。ROMをメモリライターに付けて、ライターと開発マシンを繋ぎ機械語ファイルをライターに送りROMに焼いていきます。自社製アイスはライターも兼ねていて、焼き終わったらM68K弁当箱をアイスに繋げます。
いきなり動かすとすぐ何処かにすっ飛んでいくので、最初は慎重に1ステップづつ動かします。動かしてはレジスタの中身やメモリを確認し、予定された数値が入っていることを検証していきます。薄暗い開発室でアイスの画面と紙のコードを見比べながら、検証が済んだステップにマークをしていきます。一通り通したら、不具合部分をまとめて改修し、アセンブルからROMに焼きなおす手順を経て、またアイスで動かします。この工程を完全に動くようになるまで何回も繰り返します。
M68Kのアセンブラを使った仕事で、少し自慢できるのは「キャプテン網を通じてビデオテックスデータを送受信するX25コンバータ」でしょうか。社長から手ほどきを受けながら「ラウンドロビンのモニター」も自作して、その上で動かすパケット通信のプログラムを実装しました。68Fの筐体を利用した「X25コンバータ」を介して画像が次々に表示されるのを見る感動は忘れられません。
自分はどちらかと言えば「通信屋」でした。
調歩同期やBSCの半二重通信からHDLCやイーサの全二重まで。
今では役に立ちませんが、シリアルケーブルならクロスでもストレートでも自作できます。プロトコルアナライザ使えば通信されている通信の手順とデータの中身が見れます。FDにプロテクトが掛かっていても、通信線上ではデータは丸裸。オアシスとオフコン間でのやり取りを解析して、オアシスを68Fに繋げ、オアシスデータからテキストデータだけを抽出して全文検索用できるようにした「オアシスネット」は、いわゆる「文書データベース」のはしりです。
ネットからの情報も無く関連ドキュメントも少ない環境で、試行錯誤しながら問題を自力で解決して最後には必ず動かした、という経験は、その後のエンジニア時代の土台を作ってくれたと思います。
ショーへの出品が迫っているのにオアシスがなかなか繋がらず、一週間悩んだある日地下鉄のホームでアイデアを思いつき試してみたら繋がった等々、うまくいかなく逃げ出したくても、我慢してやり続けたら必ず運気が上昇します。
解決策は必ず見つかります。天は自ら助けるものを助けてくれるのです。
・自分の希望に叶わないアセンブラでのコーディング
・目に見えない地味〜な通信の仕事
・誰にも頼れない一人の孤独な環境
その時はネガティブとも思われる状況が、逆にその後のエンジニア力の基礎を作ってくれたと思います。
SEになった時「技術的バックグランド」がしっかりしていないと、予見できない問題が発生してしまい、また問題が起きても対処方法を的確に指示できないことになります。
メディアファイブが「作れるSE」を求めているのは、私の成功体験が元になっています。今大変な環境にいる人は飛躍のチャンスです。真摯に正面から取り組んでください。
天はあなたを必ず助けてくれます。