プリント基板設計・シミュレーション

TOP > アポロレポート > コラム > 第29回 プログラミングについて 『ちょっと休憩』
コラム
2023/02/06

第29回 プログラミングについて 『ちょっと休憩』

アポロレポート

『ちょっと休憩』

 

 ちょっと休憩。
 このコーナーに付き合って下さっている方はプログラムを作る環境は恵まれていますか?

 最近ふと昔の(といっても関ヶ原の戦いほど昔ではありませんが)ことを思い出しました。以前勤めていたときにの私は決して優遇されてはいませんでした。時代が時代だったからそれも仕方のないことだったのかも知れませんが、「お前は良いプログラムをいっぱい書いてくれればいい」なんてことは一度もありませんでした。
 初回にお話したようにコンピュータのことは何も知らないで就職し、独学でプログラムを学び、一人でプログラムを作り続けていたものでした。ソフト会社であればプロジェクトの一員になって他の人たちと協力してプログラムを作ることもあったかも知れませんが、就職したのは通信機(主に業務用のテレビカメラなど)メーカーでした。その上就職した当時はBASICで動くパソコンが1、2台かろうじてあるかないかの時代でしたので、その会社の人たちはハードが主でソフトは付録程度にしか考えてはいなかったのが当時の状態でした。製品を制御するための組み込みのソフトも、かろうじて1機種に採用されていたぐらいですから殆どの人たちはソフトの重要性は認識していなかったと思います。
 私は何の縁かは分かりませんがプリント基板のCADシステムを使ってプリント基板の設計を行うことになりましたので、最初の数年は殆どプログラムを書くことはありませんでした。なにぶんにも最初の頃は端末に自分の名前を表示するのが精一杯でしたので実用的なプログラムを書くには程遠かったのです。当時の私の本来の仕事は基板の設計業務でしたから、プログラムを書くのは余計なことなのだと上司は考えていたようです。ですから私がプログラムを勉強したのは、休み時間やバッチプログラムの結果が出るまでの待ち時間に上司の目を盗んでこっそりとやっていました。多分恵まれている方は入社するとコンピュータやプログラムの研修があるかも知れません。がしかし、その会社でのプログラムに対する認識は殆どなかったので、こうするしか道はありませんでした。

 市販のCADシステムとは言ってもプログラムの構成はプリント基板を作るための最低限のものしかありませんので、会社のやりかたに合わせ、作業効率を向上させるためは市販のソフトの周辺をなんとかしなければなりません。今思い出すと最初の頃はこれでも実用のプログラムかと思えるような100行程度の粗末なものを作って使い始めました。やはり最初は自分のプログラムを実際の仕事で使うとなると勇気がいるものです。これが第1段階のハードルです。プログラムは遊びで使っている分にはどんな内容でもいいのですが、いざ実際に仕事で使うとなると話が違ってきます。バグが出るとその責任が自分にかかってくるのですから。
 どこの企業でもプログラムを作る人はいます。それもかなりの知識を持っているのにその企業のなかでソフト屋として生きていけない人がたくさんいるのです。私が今まで見てきたそのような人たちには何が足りないのかと言えば、その最初のハードルを乗り越えられるか否かのちょっとしたところなのです。自分で作ったプログラムを実際に仕事で使用することは非常な精神的な負担になるのです。この負担を背負えるか否かが分かれ道になるのです。もしこのハードルを乗り越えることができれば、後は野となれ山となれです。言ってしまえばヤケクソです。
 市販のCADシステムの周辺ソフトを開発元に依頼して作成してもらうとなるとこれまた莫大な費用がかかってしまいます。そのシステム自体も15年前の当時で憶を越えていましたので、会社にはそれ以上の金を出してくれとは言えません。それで仕方なく自分で作ることになったのです。ハードルを乗り越えるのは避けて通れない道だったのかも知れません。最初のハードルを乗り越えた私は先ほども言ったようにヤケクソでした。バグがあったら直せばいい、会社に損害をかけたときには謝ればいいと自分自身に言い聞かせて周辺ソフトを書きました。数年で100本程度は書いたような記憶があります。それも休み時間や本来の仕事の合間にです。仕事が忙しくなると2、3週間中断するのは当たり前で、長いときには半年の間プログラムを書かなかったこともありました。それでも部品搭載用のデータ(マウントデータ)を出力するプログラム、デジタイザでデータを入力するプログラム、グラフィック端末に図を表示するプログラム、テキストエディタなど色々なものを作りました。

 当時の私の夢は自分の部署で使うプログラムは全部自分で作ったものにしたいという無謀なものでした。コンパイラだって作ってみたいと思っていました。しかし、さすがにCADシステム自体を作るとなると話が大きくなり過ぎて自分一人ではどうにもならないと思っていました。
 やがてそんな自分に転機がやってきたのです。その会社で専務の首が切られるという事件が起こり、当時の部長や課長などがその人を慕って次々と退職していったのです。私もその一人になるはずだったのですが結局は居残ることになりました。上司の課長がいなくなったので当然のことですがその後釜の課長がやってきました。その課長はコンピュータのことなど何も分からない人でしたので、その点ではやりやすかったですがその頃はダウンサイジングという言葉が流行はじめた時期だったので、なにかにつけワークステーションだのUNIXだのC言語だのと言うのでした。私は背丈程もあって空調の効いた部屋に置かなければならないミニコンのVAXー11/780のVMS上でFORTRANを使ってプログラムを書いていましたので、その言葉をいつも我慢して聞いていたものです。時代が過ぎた今となってはUNIXのワークステーションだけで横一線に並べるのは無理があると世間が分かったようで、パソコンメーカーやワークステーションメーカーもサーバー機を作っていますが、当時はそのようなやりかたが一番いいんだなどと様々な雑誌ではやし立てたものですから、私は肩身の狭い思いをしていました。そのままでは長い間、慣れ親しんできた計算機、OS、言語とも別れなければなりません。
 岐路に立ちました。1つの道はいままでのデータやプログラムの資産を生かすためにVAXをなんとか残す道、もう1つは流れに身をまかせてUNIXのワークステーションに切り替える道です。まだ当時が具体的にはそのような話はありませんでしたが、そうなるのは時間の問題であることは分かっていました。私はやっぱりVAX/VMSとFORTRANが好きでした。もしかすると他の人と違ったものを使っているんだぞというのが1つのステータスだったのかも知れません。
 そのころCADシステムはライブラリに登録したデータが許容量を越えようとしており、扱えるデータ量が小さいというのも問題になっていました。その上VAX/VMS上で動作するCADシステムを作っているメーカーは殆どなくなっていました。どこも皆UNIXワークステーションで動作するものばかりなので、VAXを守る手段は過去のデータのメンテナンス用に残すしかなくなるのです。
 大きな選択でした。私はVAXをこよなく愛していましたのでこの計算機で動くCADシステムを作ることを決心したのです。失敗すればUNIXワークステーションです。負けたくありませんでした。上司になのか、流行になのか、自分になのかは分かりませんが負けたくなかったのです。プリント基板のCADシステムというのは様々なプログラムの集合体です。結果的には100本を越えるプログラムで数十万ステップのものとなりましたが、今から思えば無謀なことをやったものだと思います。
 毎日が焦る気持ちと、上司の小言と難関の連続だったのは言うまでもありません。データベースの設計から始めてコーディングもシステムの立ち上げも一人でやるのですから辛くはありませんでしたが孤独でした。いつのときでも私の場合は一緒にプログラムを作る人がいなかったので孤独でしたが、このときは格別でした。
 このシステムを作る上で大きな壁だったのがポリゴンの演算処理でした。ポリゴンというのは多角形のことです。これの演算処理というのは多角形どうしの図形としてのAND、OR、NOTのことでこれができないと目標とする機能が実現できないのです。いったいこれを何に使うというと、プリント基板というのはその製造過程でネガとポジを反転することがあり、CADシステムでもプリント基板の設計時に初めからネガポジを反転してデータを作ることがあるのです。この反転しているデータから電気的な接続を検査するためなのです。これには苦労しました。グラフィックエディタは半年で完成したのですが、この計算を行うバッチプログラムは5千行程度しかないのに3ヶ月を費やしてしまったのです(もっともこのポリゴンの演算処理が完璧になるのはこのシステムの後継ソフトの開発を行ったときでした)。
 ほぼ1年でCADシステムは完成しました。ということはグラフィックエディタとこのバッチプログラムに9ヶ月を費やしたことになりますので、残りのソフトは数日で作り上げるといったハードな作業でした。ソフトが出来上がった後はシステムを立ち上げるための作業です。これも一人で行うのです。部品の図面を書いては入力を行うといった単純な作業の繰り返しですが、これも一日で50枚程度の図を下記データの入力を行いました。そして最後の仕上げはそれまでのCADシステムからの移行です。自分の部署の各担当者に教育を行った後、実際に移行したのは1日で完了してしまったのです。
 それが10月頃でした。その後に待っていたのは、パフォーマンスの向上を行うことでした。なにぶんにもプログラムを開発するときにはあまり大きくないデータで実験するのですから、実際のデータでは計算に時間がかかり過ぎたのです。これを改善するために暮れと正月をストップウォッチを片手に費やしました。このときの改修で、それまで1時間かかっていた計算が5分と驚く程速くなったのです。多分最初のバージョンはいい加減な作り方だったのだと思いますが、このときの経験が計算速度をあげるためのノウハウとなって今に至っているような気がします。

 話はだいぶ外れてしまいましたがCADシステムは順調に動作し、次の課長に代わったときにもっと処理速度の速いVAXを導入することになったのでした。その後私が退社した今現在でも使用しているそうです。

 さてその後の私ですが、CADシステムの開発が一段落した後はまたまた新しい課長との間での確執に悩むことになります。その課長もUNIXとC言語が大好きな人なのでした。一難去ってまた一難というところでしょうか。「これからはFORTRANでプログラムを書いてはいかん」とまで言われたのですから。その言葉は無視していましたがこのときに私はC言語というものがどれほどのものなのかを研究しました。そして自分でプログラミング言語を作ってみようと思い立ったのです。最初のバージョンはおもちゃのようなものでしたが、ちゃんと静的変数、動的変数、関数、再帰呼び出しなどを備えたものでオセロゲームなどを作ったものでした。その次のバージョンはオブジェクト指向の考え方を入れたものになるはずだったのですが、それは色々な事情から中断してしまいました。

 とどのつまりは、自分で作ったCADシステムの後継ソフトを開発しるときにバブルが崩壊し、会社からの様々な規制が強くなり上句の果ては仕事をするなと言われて退社することになったのですが、それまでに手がけて途中で中断したソフトはこのソフトを含めて2本でした。400本のうちの2本ですから許せる数だと思います。

 昔話はこれくらいにしましょう。現在の会社では私はプログラムを書くのが仕事ですので幸せな環境ですが、思い返してみれば以前は必ず誰かが自分の邪魔をしていたような気がします。多分そのおかげで経験を積むことができ、色々なプログラムを書くことができたのだと思いますが決して楽しいものではありませんでした。いつも一人で闘っていたようなものですから。それも計算機だけが相手ではなく。

 もしこのコーナーを読んで下さっている方に、私のような苦労をされている方がいたら是非とも負けないでがんばって下さい。ソフト屋さんはいつも孤独ですからね。

           ファイト!   オー!


そのお悩み、
アポロ技研に話してみませんか?

アポロ技研でワンランク上の物創りへ!
そのお悩み、アポロ技研に話してみませんか?