ソフトウェアエンジニアとして転機(7) [ソフトウェアエンジニアとして転機]
前回は、Fuji Xerox DocuStation IM 200の開発までの話でした。
4週間の研修期間中に佐野力社長からの講話があって、内容はほとんど覚えていませんでしたが、次の言葉(正確には覚えていませんが)は今でも記憶に残っています。
研修が終わって、私自身は、Oracle Applicationsの一つであった人事・給与システムの開発マネージャとして開発の責任を負うことになりました。税制の違いもあり、Oracle Applications中で、日本で開発が許されていたのが人事・給与システムだけでした。
開発マネージャと言っても、一人3役に近かったです。開発のリーダー、開発チームの予算管理などを含むマネジメント、ビジネスパートーナーである日本ユニシスとの交渉役でした。開発内容や予算はすべて、英国へ報告し、そこから米国へ報告されるという報告ラインでした。私がマネージャとして仕事を始めた時点(10月)で、年間開発予算を使い切っていたので、追加予算の獲得のため米国へ出張もしました。
自分自身では開発はしなかったのですが、開発をリーディングする必要があるため、日本オラクル在籍中は、オラクルDB関連の勉強はかなりしました。
朝早くから夜まで、長時間働いていましたが、一人3役で仕事をこなし、自分では開発をしないのは、精神的にもきつく、転職することにしました。
富士ゼロックスを退職
IM 200の後継機の開発はなく、私自身は1996年8月末で富士ゼロックスを退職しました。1984年4月に社会人になって働き始めてから、12年5か月勤務したことになり、私の今までの経歴で最も長く勤務した会社となります。残念ながら、今年の4月から社名から「ゼロックス」の文字が消えて、「富士フイルムビジネスイノベーション」と変わります。日本オラクル入社
1996年9月からは、日本オラクルで働き始めました。実は、データベースに関する知識というのは、日本オラクルに入社するまでほとんどなく、入社後の4週間の集合研修で学びました。当時は、中途入社した人達全員で同じ研修を受けました。4週間の研修期間中に佐野力社長からの講話があって、内容はほとんど覚えていませんでしたが、次の言葉(正確には覚えていませんが)は今でも記憶に残っています。
5年後、10年後に日本オラクルを背負うのは、中途入社の皆さんではなく、新卒新人です。したがって、新卒新人は育てていきますが、みなさんは、即戦力として頑張ってください。この言葉は、その後、私が若手のエンジニアの育成に力を入れるようになったきっかけです。それ以前の私は、「できなプログラマーにはプログラミングさせるな」という意識が強かったです。
研修が終わって、私自身は、Oracle Applicationsの一つであった人事・給与システムの開発マネージャとして開発の責任を負うことになりました。税制の違いもあり、Oracle Applications中で、日本で開発が許されていたのが人事・給与システムだけでした。
開発マネージャと言っても、一人3役に近かったです。開発のリーダー、開発チームの予算管理などを含むマネジメント、ビジネスパートーナーである日本ユニシスとの交渉役でした。開発内容や予算はすべて、英国へ報告し、そこから米国へ報告されるという報告ラインでした。私がマネージャとして仕事を始めた時点(10月)で、年間開発予算を使い切っていたので、追加予算の獲得のため米国へ出張もしました。
自分自身では開発はしなかったのですが、開発をリーディングする必要があるため、日本オラクル在籍中は、オラクルDB関連の勉強はかなりしました。
朝早くから夜まで、長時間働いていましたが、一人3役で仕事をこなし、自分では開発をしないのは、精神的にもきつく、転職することにしました。
日本オラクルでの思い出
7か月10日と短い期間でしたが、目まぐるしく、色々なことを経験した期間でした。記憶に残っているものを挙げると、以下の通りです。- 入社時の4週間の研修。
- 前述の佐野社長の講話。
- 同期入社した人達との毎月の飲み会。
- その年の新卒新人5名を一ヶ月預かっての研修。全員が米国の大学を卒業していました。
- 当時は、Oracle DBに保存されているPL/SQLのソースコードを見るために、開発者はSQL文を実行していたのには、私自身びっくりしました。それで、若手のエンジニアにJavaとJDBCを使ってビューアーを作成してもらいました。後に、彼が米国Oracleへ異動して、そこでもそのツールが好評だと聞いて、さらにびっくりしたのを覚えています。
- 日本ユニシスや英国Oracleとのさまざまなやり取り。
2020-12-06 11:05
コメント(0)
ソフトウェアエンジニアとしての転機(6) [ソフトウェアエンジニアとして転機]
Fuji Xerox DocuStation IM200
Xerox PARCでのPageMillプロジェクトの成果を商品化するために、1993年5月に日本に帰国しました。34歳でした。商品化したFuji Xerox DocuStation IM 200については、富士ゼロックスの「商品・サービスの歩み」の1996年に写真とともに簡単に説明されています(古いアーカイブはこちらです)。製品を開発するための開発室が富士ゼロックス内に作られて、製品計画、ハードウェアエンジニア、ソフトウェアエンジニアがその開発室に集められました。ワークステーション事業からの撤退が決まっていたので、私を含めて集められたすべてのソフトウェアエンジニアが、ワークステーション関連の開発からデジタル複合機に開発に従事することになります。ワークステーションから組み込みシステムと180度転換したように思えますが、実はそうではありませんでした。
IM200の開発では、デジタル複合機としてコピー/Faxを基本機能として実装するのですが、それに加えてPARCでの成果としてのペーパーユーザーインタフェースを実装しなければなりませんでした。開発が始まったのが1993年ですが、使われた主な技術は以下の通りです。
- CPU:SPARC
- OS:Solaris 2.3
- 開発プログラミング言語:C言語(デバイスドライバー)、C++言語(コントローラソフトウェア)、PostScript(ペーパーユーザーインタフェース処理エンジン)
- 全体デザイン:レイヤ構成で、複数のプロセスから構成され、各プロセス内ではマルチスレッドプログラミング
二つの大きな課題
外見はデジタル複合機ですが、内部は普通のワークステーションと同じでした。このプロジェクトでは技術的に問題が多かったのですが、今から考えると無謀とも思える課題がありました。- 私も含めてすべてのソフトウェアエンジニアが、C++での開発経験がなく、ましてやC++でのマルチスレッドプログラミングは初めて。
- 私を含めてすべてのソフトウェアエンジニアが、ハードウェアデバイスを制御するコピーやFAXの設計・実装の経験がないし、ドメイン知識も持っていない。
C++を学び始めて、全員で開発を始める前に解決する必要があると痛切に感じた課題は、「API設計の基礎」に書いた「実装の隠蔽」です。それは、「1.5 C++言語による実装の隠蔽」に書いていますので興味がある人はそちらを参照してください。
「ドメイン知識なしのコピー/Faxの開発」は、プロジェクトの後半で大きな手戻りを発生させました。完成が近づいたと思ったころに、従来のデジタル複合機を開発していたエンジニア達が完成度の確認をするためにテストを始めてくれたのですが、(ドメイン知識がないまま開発したことによる)さまざまな問題点を指摘されました。その問題の修正のために余分な開発期間を必要としました。
学んだこと
このIM200のプロジェクトでは多くのことを試行錯誤しながら、さまざなことを実践していきました。学んだことや実践したことをまとめる次の通りです。- (当時の)C++でのプログラミング
- メモリーリークやメモリー破壊の問題を解決するために独自のメモリ管理ライブラリを実装(「clibと呼ばれるライブラリー開発の思い出」)
- マルチスレッドプログラミングによるデッドロックのデバッグの経験
- 夜間ビルドの導入
- QAからの障害報告への対応をエンジニアが日替わりで担当する「Debugger of the Day」の導入
mmap
によるファイルへのアクセス技法- さまざまなサービスを
.so
ファイルに分割作成して、起動時に動的ローディング - コピー/Faxに関するドメン知識の獲得
1996年にFuji Xerox DocuStation IM200は商品化されてリリースされ、あらたなビジネスモデル(ペーパーユーザーインタフェースのサービスを使うごとに課金)を模索したのですが、残念ながら売れませんでした。後継機の開発もなく、1996年8月に私は富士ゼロックスを退職しました。
追記
IM 200開発では、朝7時過ぎに出社して、夕方まで働いて、それから飲み会という日が週に3日はありました。当時は、富士ゼロックスでは福利厚生の補助で安く飲み会ができました。2020-04-26 12:08
コメント(0)
ソフトウェアエンジニアとして転機(5) [ソフトウェアエンジニアとして転機]
Xerox PARC(パロアルト研究所)
1991年4月にPARC(Palo Alto Research Center)で働き始めるに先立って、その前にアパートを探すために一度Palo Altoを訪れました。アパートは、スタンフォード大学の敷地に面した通りを挟んだOak Creek Apartmentsに南向きの2ベッドルームを見つけることができました。スタンフォードショッピングセンターも近くよいところで、2年間を過ごしました。PARCで従事したプロジェクトはPageMillプロジェクトと呼ばれていました。LAからの引っ越しでは、荷物は業者に任せたのですが、LAからPalo Altoまでの約400マイルを妻と二人で車を運転して移動してホテルにチェックインしました。アパートへ入るのではなく、翌日妻を伴って日本へ帰国しました。PageMillプロジェクトに関して米国ゼロックスと富士ゼロックスでの会議へ出席するためでした。
PageMillプロジェクト
プロジェクトのリーダーはZ Smith※でした。私と同じぐらいの歳で、彼の部屋の隣に私の部屋が割り当てられました。研究所なのでプロジェクトメンバーは博士ばかりで、彼らの優秀さは半端なかったです。その中で、なんとかプロジェクトのメンバーとして認められるのに必死でした。私の役割は、彼らのアイデアを実際にソフトウェアで実現して検証することでした。※ ファーストネームであるZは、略したのではなく、本当に一文字のZです。
仕事以外でPARCで印象深かったことがいくつかあります。
- 研究所内にフィットネスルームがある。
- カフェテリアで昼食を購入して、会議室でランチミーティングをすることが多かったのですが、昼食のトレイや食器を会議室の近くの休憩コーナーに返却するだけでよかったです。
- 毎週木曜日の16時からPARC Forumが開催されて、外部からスピーカーを呼んで社外からの参加がよい場合もあれば、Xerox内に閉じた話題で社外からは参加できないものとありました。PageMillプロジェクトも一度ForumでZ Smithが話をして、私はデモ係でした。
- カフェテリアでの昼食が2時間ぐらいになることも多かったです。11時30分頃に昼食を食べ始めるのですが、食べ終えても色々な人が加わってくるので、食事を終えてからずっと話すことが多く、結果として2時間が経過していることも多かったです。
- スーツを着た日本人のグループが、富士ゼロックスの営業に連れられて、PARCを見学していることがよくありました。
4年半の間に、二つのプロジェクトに従事し、多くの優秀なソフトウェアエンジニアや研究者と仕事して、どちらもカリフォルニアですが2か所(Rancho Palos VerdesとPalo Alto)に住むことができました。一方で、昭和が終わり、ベルリンの壁崩壊、サンフランシスコの大地震、湾岸戦争、ロサンゼルスの大暴動があったのもこの4年半でした。
2019-12-20 07:47
コメント(0)
ソフトウェアエンジニアとして転機(4) [ソフトウェアエンジニアとして転機]
米国ゼロックス社に駐在
米国に駐在してソフトウェア開発をするようにと、1988年の夏前ぐらいに言われました。それまでゼロックス社固有のハードウェア上で動作していたStarワークステーションのソフトウェアをSunワークステーション上のSunOSへ移植するSalientと呼ばれたプロジェクトでした。正確な人数は覚えていませんが、当時の富士ゼロックスから私と同期や先輩達の20名以上が米国のEl Segundo, CAおよびSunnyvale, CAへ駐在員として送り出されました。米国へ赴任したのが1988年11月で29歳でした。そして、私にとっては生まれて初めて日本を出たときであり、多くの不安を抱えながらの赴任でした。
赴任前の送別会で、今は亡くなられた先輩のS.U.さんが「米国では与えられた仕事をやり遂げたら、次に難しい仕事が割り当てられるけど、仕事ができないと判断された、日本と違って仕事が割り当てられなくなる」といった趣旨のことを言われて、そうかなと思ったのですが、実際の米国ゼロックス社でのソフトウェア開発はそうでした。
2年半弱、El Segundo, CAでSalientプロジェクトに従事して感じたことは次の通りです。
- 歳を取ってもソフトウェア開発は続けられる
- プロジェクトに面白さが失われていくと、優秀な人は転職していく
William Maybury
私が所属したVP Document Editorチームには、William Mayburyという年配のソフトウェアエンジニアがいました(でも、おそらく今の私よりも若かったと思います)。当時の日本では、彼と同じ年齢の人がソフトウェアを開発し続けているというのは全く想像できなかったので、私にとっては衝撃でした。私事ですが、「さらなる学習」に掲載されている「Mesa Language Manual」の著者の1人であるWilliam Mayburyの名前を見ると、彼と一緒に仕事をした2年半の米国El Segundo, CA時代が懐かしく思い出されます。彼は、私よりもかなり年上でしたが、驚いたことにマネジャーではなく、現役のソフトウェアエンジニアとして働き続けていました。本書が生涯ソフトウェアエンジニアを目指して、常に新たな技術を学び続けている人々に読まれれば幸いです。そして、米国に赴任してから31年の月日が流れて、私自身が今でも日々ソフトウェア開発をしているのは、彼の影響が大きかったのかもしれません。
『プログラミング言語Java 第4版』の「訳者まえがき」より
優秀な人は転職していく
Salientプロジェクトは、Mesa言語で書かれたStarワークステーションの膨大なソフトウェアを移植するプロジェクトでした。しかし、プロジェクトの終盤になってくると優秀な人からゼロックスを辞めていきました。プロジェクト次第で、優秀は人は会社を変わっていくことを実感したのはこの頃です。当時、うらやましく思った転職先は、PenPointを開発していたサンフランシスコにあったGO Corporation社でした。残念ながらPenPointは時代的に早すぎ、製品を出さずに7年間後にGO社は解散しました。追記
El Segundo, CAでのSalientプロジェクトも終わりが近づき、日本への帰国がそろそろだと思ったので、1990年12月にはリオデジャネイロとブエノスアイレスへ旅行しました。しかし、1991年になると多くの駐在員が帰国するなか、PARC(ゼロックス社のパロアルト研究所)に駐在することになりました。PARCへ転勤する前にPARCで従事するプロジェクトの説明を聞くために初めてPARCへ行った日は、1991年1月17日でした。その日は、米国がイラクを空爆して湾岸戦争が始まった日でした。2019-12-06 08:52
コメント(0)
ソフトウェアエンジニアとして転機(3) [ソフトウェアエンジニアとして転機]
Fuji Xerox 6060ワークステーション
1984年に就職して夏に配属されたのは、独自のワークステーションを開発するグループでした。当時、富士ゼロックスはBTronにも取り組んでおり、プロトタイプもあったのですが、独自にJ-Starに似たワークステーションの開発に着手しました。J-Starのソフトウェアを移植するのではなく、OS(Idris: Unixクローン)を除き、CPUボードからすべてを一から開発するプロジェクトでした。
この開発で私が初めて学んだ主な技術は、以下の通りです。
- Unixの基本知識
- Unixのコマンド
- vi
- C言語
- Ethernetプロトコルを含むXNS(Xerox Network Systems)のプロトコル体系
Unixの基本知識、コマンド、vi
大学院の終わりの頃に、どこかの研究室にUnixワークステーションが導入されたのですが、ほとんど触ったことはありませんでした。6060ワークステーションでは、UnixクローンであるIdrisと呼ばれるOSを採用していましたし、開発にはVAXを使って、その上でBSD 4.2(?)が動作していました。当時のUnixは、今日のLinuxやmacOSなどと比べると非常にシンプルでした。- スレッドはなく、プロセスのみ
- プロセス間通信は、fork/execしてパイプでの通信のみであり、共有メモリもない。
- 任意のプロセス間で通信するためのメッセージング機構
- プロセス間でメモリを共有する共有メモリ機構
今日でも使っている基本的なUnixのコマンドはこの頃に学びましたし、エディタとしてのviも学びました。しかし、今から振り返ると非常に貧弱なエディタ環境でした。80桁×24行のキャラクタ端末を使ってソースコードを編集していたので、ソースコード全体の見通しが悪かったのです。そのため、ソースコードはいつも印刷していました。印刷するといっても、当時はドットインパクト式プリンタでしたので、音がしてうるさかったです。
この6060ワークステーションの開発環境をはるかに飛躍させたのは、4.3BSDが登場して、4.3BSDにXNSプロトコルが提供され、J-Starワークステーション開発用のXDE(Xerox Development Environment)から4.3BSDが使えるようになったことです。4.3BSDに提供されたXDE用のコマンド(確かREdit)のネットワークプロトコルをリバースエンジニアリングして、同じコマンドをIdris環境にC言語で実装してからは、エディタとしてXDEが使えるようになり、マルチウィンドウやウィンドウ分割、それに、XDEからのターミナル接続などができて快適になりました。
開発ツールの整備
6060ワークステーションの開発は、ユーザに提供するアプリケーションの開発のみならず、すべての開発用ツールを独自に開発するものでした。XNSプロトコルの設計・実装を担当していましたので、英語の仕様書しかなったXNSプロトコルを理解して、Idris上で動作する以下の開発用ツールを開発しました。- Ethernet上のパケットをキャプチャーしたり、TCPに相当するXNSプロトコルのSPP(Sequence Packet Protocol)レベルでファイルにダンプしたりするツール。
- Printingプロトコルを実装して、ソースコードをInterpress形式(Xerox社のPDL:Page Description Language)へ変換して、レーザープリンターへ送って印刷するツール(ドットインパクト式プリンタと違い、オフィスが静かになりました)。Interpressへの変換は他のエンジニアが実装しました。
- Filingプロトコルを実装して、J-Starのフィルサーバを使えるようにするツール。これで、離れた開発拠点へファイルを電子的に送ることができるようになりました(これ以前は、フロッピーディスクに保存したファイルを物理的に運ぶためにバイク便を使っていました)。
- Mailingプロトコルを実装して、Idrisからも社内の電子メールを読んだり送信できたりするようにしました。
- リモートログイン機能。Idris間でリモートログインできるようにするためのデーモンとrlogin相当の機能。これは、私ではなく他のエンジニアが作成しました。SPPを使って実装してあり、Unix 4.3BSDに搭載されたデーモンと同じプロトコルを採用していたと思います。
6060ワークステーションの開発は、私にとってUnix関連の基礎となる多くの経験を積むことができたプロジェクトでした。最初に述べた事柄に加えて、「不便なことを解決するために自分達でツールを開発して、配布する」ことを行うようになったプロジェクトでもありました。
6060ワークステーションの当時のテレビCM
こちらです。2019-11-22 08:20
コメント(0)
ソフトウェアエンジニアとして転機(2) [ソフトウェアエンジニアとして転機]
富士ゼロックスへの就職
就職先として選んだのは、富士ゼロックス株式会社でした。当時は、推薦状をもらって1社受けるだけで、落ちない限り次の会社を選ぶことはなかったのと、修士課程を出て不合格になることはまれだったこともあり、富士ゼロックスに就職することになりました。情報工学科の先輩で就職した人はいなかったのですが、当時としては、福利厚生(特に住宅補助)が非常に良かったという不純な理由で選びました。入社後の塚原研修所での3か月の新人研修期間は、ほとんどがコピー機に関連する研修ばかりで、就職する会社を間違えたと思いました。
J-Starワークステーション
配属された開発部門は、当時のJ-Starを開発している部署でした。しかし、私は、J-Starではなく、独自のワークステーションを開発する開発グループに配属されました。J-Star関連の開発に従事するようになったのは、2年後の1988年からですが、J-Starおよびその開発環境であるXDE(Xerox Development Environment)は、時代の先端を行っているソフトウェアでした。就職した1984年(Windows 95もMacintoshも登場していない)で、すでに以下の機能を備えていました。- ビットマップディスプレイとマウス
- マルチウィンドウ(J-Starはタイリングのウィンドウシステムでしたが、XDEは普通にオーバーラップするウィンドウシステムでした)
- Ethernetと各種ネットワークプロトコル
- レーザープリンター
- リモートデバッグ機能(別のワークステーションからデバッグできる)
- 依存モジュールを世界中のゼロックスグループ内のファイルサーバーから自動でフェッチする機能
私は、J-Starの開発グループではなく、独自のワークステーションを開発するグループに配属されたので、上記の機能の多くを独自に開発することになります。
2019-11-15 08:53
コメント(0)
ソフトウェアエンジニアとして転機(1) [ソフトウェアエンジニアとして転機]
60歳を前に、これまでの人生でソフトウェアエンジニアとして転機となった出来事をまとめていきたいと思います。
当時、家に電卓もない時代で、そもそもコンピュータを触ったことも見たこともありませんでした。それでも、コンピュータについて学んでみたいと思い情報工学科に進学することにしました。その頃、九州で情報工学科を持っている大学は、九州大学と九州工業大学の二校だけでした。自分の成績から判断して、九州工業大学の情報工学科へ進学することにして、幸い合格できて進学しました。
当時、九州工業大学は単科大学(学部はなく、さまざまな学科から構成され、現在の工学部がある戸畑キャンパスのみ)だったためか、一般教養の教科に加えて、一年生から専門教科も教えられていました。つまり、一年生のときから、プログラミングやコンピュータの動作原理などの基礎知識の教科がありました。
初めて学んだプログラミング言語は、Fortranでした。大学では、プログラミング言語だけでなく、コンピュータの動作原理、データ構造とアルゴリズム、コンパイラの動作原理とコンパイラの作成演習といったさまざなことを学びました。振り返ってみると、社会人になってから学ぶ機会がないような知識だったと言えます。
大学時代使ったコンピュータシステムで、今日では見かけることがない以下のようなものがありました。
HOLENETは、通信コントローラボード作りからでした。最初は、回路図の読み方から始まり、DMAコントローラとCPUとの間でどのようなタイミングシーケンスでDMA転送が行われるのか、割り込みとCPUの動きといったことを座学で学びました。また、HDLC/SDLC用の通信LSIを使うので、ネットワークプロトコルも当時はかなり勉強しました。ネットワークプロトコル関連では、当時の電電公社の横須賀通信研究所のデータ通信網研究室には、2回もインターンとして行きました。
実際の通信コントローラボードは、2枚の基板から構成され、1枚は1層のプリント基板であり、もう1枚はラッピングで作るというものです。その2枚1組の通信コントローラボードの5セットをほぼ一人で組み上げて、プローブが1つしかないオシロスコープだけで5セットをデバッグしました。5セットがある程度安定するまで何か月を要したか覚えていませんが、長い期間ハードウェアをデバッグしていました。ハードウェアが安定してきたら、その上で動作する通信ソフトウェアをZ80アセンブリ言語でひたすら書いてはデバッグしていました。
九州工業大学での最後の3年間は、ハードウェアのデバッグから、Z80アセンブリ言語でのプログラミング、ネットワークプロトコルと広範囲な経験をすることができました。
九州工業大学情報工学科への進学
中学3年生になったときに、父の転勤で佐賀県の嬉野から山口県の下関に引っ越しました。高校は、下関西高等学校の理数科へ進学しました。当時、理数科は普通科と異なりクラスが一つしかなかったので、三年間、クラス替えなく過ごしました。当時、家に電卓もない時代で、そもそもコンピュータを触ったことも見たこともありませんでした。それでも、コンピュータについて学んでみたいと思い情報工学科に進学することにしました。その頃、九州で情報工学科を持っている大学は、九州大学と九州工業大学の二校だけでした。自分の成績から判断して、九州工業大学の情報工学科へ進学することにして、幸い合格できて進学しました。
当時、九州工業大学は単科大学(学部はなく、さまざまな学科から構成され、現在の工学部がある戸畑キャンパスのみ)だったためか、一般教養の教科に加えて、一年生から専門教科も教えられていました。つまり、一年生のときから、プログラミングやコンピュータの動作原理などの基礎知識の教科がありました。
初めて学んだプログラミング言語は、Fortranでした。大学では、プログラミング言語だけでなく、コンピュータの動作原理、データ構造とアルゴリズム、コンパイラの動作原理とコンパイラの作成演習といったさまざなことを学びました。振り返ってみると、社会人になってから学ぶ機会がないような知識だったと言えます。
大学時代使ったコンピュータシステムで、今日では見かけることがない以下のようなものがありました。
- 80桁×24行の「キャラクタ端末」
- パンチカード、マークカード、紙テープ
- コアメモリのコンピュータ(実験で使いました)
- APL端末(APL言語に特化した端末。ALUを含むCPUの原理をAPL言語で記述した本で学ぶ講座がありました)
- 8インチフロッピーディスク
- 音響カプラー
- ラインプリンタ
- etc
HOLENETの開発
大学4年生になったときに、当時の安在教授の研究室に入り、重松保弘助手の下で、HOLENET(HDLC Oriented Local Area Network)というローカルネットワークの構築に行うことになりました。大学4年と修士の2年の合計3年間は、このHOLENETのハードウェア開発、ソフトウェア開発、そして、HOLENETを使った学生実験の指導を行いました。この3年間は、九州工業大学での6年間の中でも、最も楽しく多くのことを学んだ3年間でした。HOLENETは、通信コントローラボード作りからでした。最初は、回路図の読み方から始まり、DMAコントローラとCPUとの間でどのようなタイミングシーケンスでDMA転送が行われるのか、割り込みとCPUの動きといったことを座学で学びました。また、HDLC/SDLC用の通信LSIを使うので、ネットワークプロトコルも当時はかなり勉強しました。ネットワークプロトコル関連では、当時の電電公社の横須賀通信研究所のデータ通信網研究室には、2回もインターンとして行きました。
実際の通信コントローラボードは、2枚の基板から構成され、1枚は1層のプリント基板であり、もう1枚はラッピングで作るというものです。その2枚1組の通信コントローラボードの5セットをほぼ一人で組み上げて、プローブが1つしかないオシロスコープだけで5セットをデバッグしました。5セットがある程度安定するまで何か月を要したか覚えていませんが、長い期間ハードウェアをデバッグしていました。ハードウェアが安定してきたら、その上で動作する通信ソフトウェアをZ80アセンブリ言語でひたすら書いてはデバッグしていました。
九州工業大学での最後の3年間は、ハードウェアのデバッグから、Z80アセンブリ言語でのプログラミング、ネットワークプロトコルと広範囲な経験をすることができました。
まとめ
九州工業大学への入学は、ソフトウェアエンジニアとしてのキャリアの始まりであり、その後のキャリアにとっての基礎を学ぶことができました。「コンピュータの基礎はいつ学ぶのか」でも書いていますが、今日では学んだり経験したりすることが難しいことの多くを大学で経験したと思います。2019-11-08 08:40
コメント(0)