第5回コラム
「自らのソフトウェア開発経験をふりかえる」
情報アーキテクチャ専攻教授 秋口忠三
私がソフトウェアの世界に足を踏み入れたのは、マイクロプロセッサが世に出て数年、大学の研究室で計算機を自作できるようになったころでした。当初は、アセンブリ言語で書いたプログラムを紙テープに打ち込み、それをライブラリプログラムとともに計算機に読み込ませて実行させていました。アセンブラ、リンカ、コンパイラ、ディスクオペレーティングシステムなど、ソフトウェア開発に必要な道具類を研究室の研究テーマとして自作していた時代だったのです。マイクロソフトやアップルが産声を上げたのもこの頃です。
プログラミングの勉強を始めた頃、マイクロコンピュータ用の様々なプログラムのアセンブラのソースコードが出回り、これらのコードを読むことが一番のプログラミングの勉強法でした。このころ出会った印象に残るコードとして、インテル8080 プロセッサ用にわずか500行程度で書かれたLispインタプリタがあります。read-eval-print のループでS式のLisp プログラムを読み込み、800個のセル領域を含めてわずか4Kバイトのメモリ空間でプログラムが動作するのです。もちろんガベージコレクションも含まれています。ハノイの塔を動かす程度で実用的なプログラムを動かせるわけではありませんが、その設計と実装のシンプルさに驚嘆し、このようなプログラムを自分でも書いてみたい、とうい気持ちを強く持ったことを憶えています。これは ITアーキテクトがもつべき根本的は志向の一つと考えます。
プログラマとしての最初の時期に、このような美しいコードを読む経験をもったことは、その後のプログラミングに関する価値観に大きな影響を与えたと思います。プログラムはただ動けば良いというものではない。それは正しく動かなければならないし、すべての無駄をそぎ落としシンプルで明快でなければならない。それを突き詰めれば美しいコードに至る。このような考え方の種が植え付けられたように思います。当時の計算機の利用環境は時間制限の厳しいものでした。そのためにデータ構造とアルゴリズムの設計を慎重に行い、計算機にかける前に机上でのデバッグとレビューに多くの時間をかけざるを得ませんでした。その結果として計算機上でのデバッグに苦労した経験は比較的少なく、改造要求に対しても柔軟に対応できたと考えています。またこの作業の過程で無駄をそぎ落とし明快さを追求していく訓練ができたと思います。
ソフトウェア開発を生業にしてからは、ソフトウェア生産技術の研究開発の部門でソフトウェアの開発を支援するCASE(Computer Aided Software Engineering)システムの研究開発に従事することになりました。初期のころは、上流設計からプログラミング、テスト、ユーザリリースまでを経験できましたが、職級が上がり管理業務の比重が増加するにつれ、業務でのプログラミングの仕事からは離れていくことになります。管理職になることにはかなりの抵抗がありましたが組織人としては避けられないことでした。そのためプログラミングは個人の趣味として続けることになります。多くは業務上の懸案事項のプロトタイピングやプログラミング支援ツール類の開発でした。生産性と品質上の問題をちょっとした工夫で改善することを狙ったもので、いつの日か発表の機会があるかもしれません。
今から3年前に本学が開学するに当たりソフトウェア開発に関する専門職人材の教育・指導を行える実務家教員を募集しているという話は、私にとっては天の声のように思われました。企業の中の大きなプロジェクトの管理よりも、新しいIT人材の育成の方に、より大きな貢献の機会があると考えたからです。なによりも、現役プログラマに復活する口実ができます。オブジェクト指向の開発方法論や Java, Ruby, UML などの開発言語を使いこなし、アジャイル開発プロセスを実践し、教育用ソフトウェア開発環境の研究・開発というテーマで PBL 教育を実施する。20年前の精神的な若さをもち、30年前の自分自身に語るつもりでソフトウェア開発の PBL の教育に当たり、さらにその方法論を改良していきたいと考えています。