SSブログ

プログラミング言語の経験(2) [プログラマー現役続行]

1984年4月に就職して、7月初旬までの塚原研修所での泊まり込み集合研修を終えて、海老名事業所での勤務が始まりました。新たなワークステーション(Fuji Xerox 6060 Workstation)を開発するプロジェクトに配属されて、UnixおよびC言語を学び始めました。


Fuji Xerox 6060 Workstation

UnixおよびC言語は、大学時代はほとんど触ったことがなかったのですが、どうやって学んだのかはあまり覚えていません。ただ、「Unix Magazine」が創刊されると、それから米国に赴任する1988年11月頃までは購読して読んでいました。

米国に赴任するまでは、C言語で開発していたのですが、当時は、コードレビューの習慣もないし、自動でテストを行うテストコードを整備するという時代でもありませんでした。

ワークステーションのソフトウェアを開発しながら、開発用ツールとして、私自身はネットワーク系のツールも開発していました。それらは、主にXNS(Xerox Network Systems)プロトコルに基づくもので、XNSのサーバを利用するツール群でした。当時のゼロックスグループ内には、Mesa言語で書かれたツールは多数存在したのですが、私が属していたプロジェクトは、一からワークステーションを開発しているため、ツールも自作する必要がありました。ファイルサーバ、プリントサーバ、メールサーバを利用できるようにするツールや、Ethernet上のパケットを収集するなどのツールを開発していました。

製品のソフトウェアと異なり、これらの開発用ツールは、私の趣味で作っていました。つまり、業務の一環として開発するように指示された訳ではなく、自分が欲しいツールを勝手に業務時間中に作っていました。もちろん、作成したツールは、プロジェクト内で共有していました。

製品ソフトウェアではないので、新たな機能を追加するごとに、頻繁に書き直していました。書き直しの多くは、既存のコードのままでは、新たな機能を追加するのが困難場合に行いました。そのため、設計を変更してから、機能を追加することが多かったです。

しかし、当時はまだC言語による抽象データ型の実装は全く知らないし行っていませんでしたので、結構、ひどいコードを書いていたと思います。ただ、書き直しの過程で、色々なことを試していました。たとえば、ネットワークプログラミングをしている部分で、コネクションが切れた時の処理としてsetjmp/longjmpを使用してコードをすっきりさせるとかしていました。

テストコードが無かったので、厳密には「リファクタリング」にはなりませんが、頻繁に書き直してはデバッグすることを繰り返していました。商品のソフトウェアでは、テストコードがなければ書き直しを経験することはほとんど皆無です。しかし、自分で作成したツールであれば何度も書き直しができるので、そのような経験をするためのツールを持っていたことは、当時としては非常に重要だったと思います。

(関連記事「Breakable Toys」)