原点を学ぶことの重要性

 ただの思い出話になってしまうのは残念なことですが、私が大卒後に新入社員として、とあるソフトウェア開発会社に就職した頃の話をしたいと思います。
 今は亡き私の父親は自営業で溶接をやっていました。私は、長男でしたが、家業を継がずにサラリーマンとして会社勤めをする道を選びました。が、コンピュータのソフトウェア開発というものがどういうものか、職人気質の父に説明できるほどよくわかっていませんでした。すると、私の父は、「ソフトな衣服(ウェアの意味?)を買ってくれるお客を開発する仕事のことか?」と聞いてきました。私の父は、中卒だったので、その程度の知識や常識しかありませんでした。だから、子供に学歴や学力を付けさせたいと思っていたのかもしれません。
 その頃の私は、アルバイトで稼いだお金で買ったプログラマブル電卓でBASIC言語を覚えたり、学校の電子計算機実習でFORTRANを学んだりしていました。そうはしていたものの、コンピュータのソフトウェア開発についての、根本的な知識というものは全く知らなかったと思います。
 当時人材不足だった中小のソフトウェア開発会社では、理系大卒に限らず、あらゆる分野から人材を求めていました。また、当時の私は、文学部英文学科卒の予定でしたが、就職活動中の会社説明会でコンピュータへの興味をうまく吊り上げられてしまって、入社することとなりました。当社の取締役(50代)の人の説明では、全く技能や知識が無い人でも一から教えるよ、とのことでした。小中学生だってできるような仕事だよ、とまで言われました。それらの言葉を私も信じて、4月からの新人研修に参加しました。
 研修室の隣のガラス張りの部屋には、カードパンチャ―や、衣装箪笥の大きさのミニコンピュータ(ミニコン)が置いてありました。そのミニコンには、プリント出力兼用入出力コンソールやカードリーダ(紙のカードから入力データを高速で読み取る機械)がケーブルでつながっていました。それを見て、私は、この会社がこれまでは大型コンピュータやミニコンのソフトウェア開発の業務を請け負ってきたということを知りました。後に私は、小型応用システム部という部署に配属されましたが、そこで初めてマイクロコンピュータマイコン)のソフトウェア開発が当時始まりつつあることを知りました。現在は、ワークステーションからパソコンや組み込み家電まで、マイクロコンピュータの全盛期になっています。しかし、当時は、まだそれほどでもなかったので、ミニコンピュータアセンブリ言語で動かすのが、新入社員の教育には適材だったのだと思います。
 私を含む20人余りの新入社員たちのほとんどは、コンピュータのソフトウェア開発はおろか、プログラムを組むのに使うアセンブリ言語にさえ無知でした。電子専門学校卒の人もいましたが、彼らが学校で習得したマイコンを操作する技能とも少し違っていたようです。新入社員たちにプログラム作成の講師となった人は、当社で営業を担当していた40代の人でした。
 その人は、カードリーダに読み込むデータとプログラムをある程度用意されていました。それを教えつつ、残りの足りない部分を新入社員たちに考えさせて作らせるという教材でした。研修室の隣の部屋に衣装箪笥のように置いてあるミニコンアセンブリ言語を一通り教えた後、白板上で四角く囲った領域を、メモリ上にあるAさんの個人情報と見立てて、それをプログラムでどういうふうに持ってきたらいいかという問題を出されました。
 この問題を、新入社員たちは誰も解答することは出来ませんでした。そこで、ヒントが出たのですが、誰も正解を出せませんでした。さっき教えたアセンブリ言語の中のたった一つの命令だけでそれが可能だとおっしゃられました。いくら考えても答えが出てきません。新入社員の誰もが、そのような時間を長く感じていたはずです。
 実は、当社のその営業部長の人は、元は某大企業メーカーの大型コンピュータの技術者だったのだそうです。新入社員の誰もが、そのことを知りませんでした。それで、彼が当社の営業担当で、口調がおだやかな教育係というイメージだったので、内心では彼の実力をなめていたようです。「こんなのわかんないのかなあ。簡単だよ。」などと言われても、どうしても正解にたどりつけませんでした。
 問題が出てから10分も経たないうちに、その営業部長さんは白板に「LDA $Inf」などと書いて説明を始められました。「Aさんの個人情報は、メモリ上にひとまとめにしてあるので、そのメモリの先頭アドレスをコンピュータのレジスタに読み込んでしまえば、Aさんの個人情報全部を引っぱり出すことができるんだよ。」つまり、$Infが、Aさんの個人情報のメモリ上の先頭アドレスを表すオペランド(番地アドレス)であり、その値をCPUのレジスタ・メモリに入れる命令コード(オペコード)が、LDAというニーモニックの(このミニコン特有の)アセンブリ言語だというわけです。
 この講義を聞いて、新入社員たちのほとんどは、「なんだ。こんなに簡単な答えだったのか。大したことないや。」と思ったはずです。その一人だった私も、「これまでの人生で出会ったこともない知識だったので、正答できなくて当たり前だな。でも、知らなくて悔しいな。」と思いました。
 以上が私の思い出話なのですが、その営業部長さんが新入社員教育で教えて下さったコンピュータのIT技術(インフォメーション・テクノロジー)のアドレスに関するささいなことが、なぜか私には忘れることができません。日本国民のほとんどがそう考えると思いますが、こんなこと知っていたって全くお金にならないじゃないか、というのが一般的な考えであり、正論だと思います。一銭にもならないということに私も異論はありません。しかしながら、私の個人的な教養としては、何にも代えられない宝と考えています。
 なぜならば、私の頭の中では、「『必要とする情報の先頭アドレス』を引っぱり出して来る」というコンピュータの操作一つで、インターネットも、QRコードも、オブジェクト指向も、コンピュータのあらゆるソフトウェア技術が理解あるいは説明できてしまうからです。もし仮に私が十分に若かったら、今ごろハッカーになって悪いことをしているか、あるいは、ホワイトナイトになって善行を重ねているかもしれません。私の考えでは、あの頃に学んだ上記のエピソードこそが、コンピュータのソフトウェア開発における最重要点であり、かつ、原点(あるいは基準点)であったと思われます。
 私たちの生きている日本が、技術立国の地位を世界的に失墜しつつあることは、残念なことです。しかし、その現状を分析してみると、いかなる技術においても、その原点(あるいは基準点)となるものが、その技術自体に感じられないことが多いと思います。つまり、科学的な技術やその応用が、一体何を軸として、何を原点(あるいは基準点)として成り立っているかが見えづらくなっていると思うのです。それを見つけてくれるのは、今やほとんどの場合が外国人であり、日本人はそうした外国人の評価ばかり気にしているように見えます。せめて、日本人自らが、自らの科学的技術を独自に評価して、自らそのことに自信を持てるようになれないかとも思います。そのようになったほうが、ずっと良いと思います。