1980年 1月初旬
書斎の片隅で、哲也は分厚いマイコンの取扱説明書を開いていた。父が用意してくれたのは、現在、NECの主力マイコンの心臓部に用いられているCPUを直接操るための、「コンピューターが理解できる最も基本的で難解な言葉のリストとルールブック」だった。
MOV (データを移動させろ)、JMP (指定のアドレスに飛べ)、ADD (足し算をしろ)。たった数バイトの命令で、コンピューターの最も深部を操る感覚は、BASICとは比べ物にならないほど生々しかった。だが哲也は、この「機械の言葉」が、未来のコンピュータの基礎だと知っている。この仕組みを理解せずに世界有数の企業を立ち上げるなど夢物語だ。
哲也は、この難解な「機械の言葉」を操るため、最初の2ヶ月間を、ひたすら基礎的な命令の習得に費やした。命令の習得に苦戦していると、よく父の言葉を思い出す。
「BASICは『言葉』だったのに対して、これは『電気信号』だ」
その言葉の意味を、命令習得の序盤で理解しているつもりではあったが練習問題でより痛感させられることになった。
それは「画面に『コンニチハ』と表示させる」というもので、BASICではPRINT《文字を出せ》 と打てば、コンピューターの奥にある複雑な処理が自動で動き出し、モニターに映してくれる。それは「秘書に『手紙を書いて』」と伝えるような行為だった。
対して、アセンブリ言語で文字を出力させようとすると先ず出力したい文字を入力し、文字がどこにあるかを示す住所《アドレス》の特定、作業台《レジスタ》に「文字列表示機能」のコードをセット、モニタの特定の住所へ飛んで、処理を実行、終わったら戻るという複雑な工程が必要になる。
「ロボットのネジ一本一本に、手動で指示を送っているみたいだ」
先程、BASICは「秘書に『手紙を書いて』」と伝える行為だと言ったがアセンブリは「手を動かせ」「ペンを持て」「文字を一つずつ書け」「書き終わったら手を止めろ」と、作業のすべてを、数値と住所《アドレス》で、いちいち指定している。
1980年 3月
基礎の命令を習得し、いざプログラムを組もうとすると、すぐに壁にぶつかることになった。それは、データの「移動」と「格納」に関する命令だ。
「このPUSHとPOPは、荷物を積むのと降ろすのと、どっちがどっちだっけ……」
PUSHはスタックという特殊な記憶領域にデータを積み込み、POPはそれを取り出す。この操作は、プログラムが一時的に別の処理へ移る際、「今やっていた作業内容を忘れないように保存しておく」ために不可欠だったが、少しでも順番を間違えれば、大事な数値が上書きされ、プログラムが意味不明な暴走を始める。
「よし、これで完璧なはずだ....」
自信を持ってキーを叩いた瞬間、画面に映し出されたのは、意味不明な記号の羅列だった。数週間かけて、慎重に割り振った「数値の住所」が、たった一つの命令ミスで全てズレてしまい、プログラムは完全に崩壊した。
「くそっ! なんでこんな非効率な設計なんだ!」
哲也は、椅子から立ち上がり、思わず取扱説明書を床に叩きつけた。目の前が真っ赤になる。これまで何回も似た結果になっているからだ。
「未来の知識があるのに、目の前の機械すらまともに扱えないなんて……!」
哲也の頭の中では、「失われた30年」という巨大な暗雲と、「世界を変える」という壮大な夢が、この小さな失敗によって遠ざかっていく焦燥と混ざり合い、大きなストレスとなっていた。彼は叫び出しそうな衝動を抑え、乱暴に髪をかきむしった。
その時、書斎のドアがノックされた。
「哲也、お茶と、お煎餅置いとくわね」
母の声だ。哲也は何も返せなかったが、カチャリという音と共に、静かに温かい緑茶の湯気と香ばしい醤油の匂いが漂ってきた。母は、哲也の荒れように気づきながらも、何も言わずに、日常の温もりだけを置いていったのだ。
その数分後、静かに書斎のドアが開き、父・寛介が入ってきた。
「どうした、哲也。そんなに荒れて」
父は、床に落ちたマニュアルと、苛立ちで顔を真っ赤にした哲也を交互に見つめた。
「お前の夢は、そんな簡単な壁で崩れるのか? BASICは誰でもできる『おしゃべり』だ。だが、このアセンブリは『機械の心臓を動かす設計図』だ。その設計図が描けなきゃ、お前の夢も、ただの子供の落書きで終わるぞ。」
その瞬間、哲也のストレスが爆発した。
「父さんに何がわかる! 俺は、俺だって必死でやっているんだ! なのに、この機械は、こんな非効率で古いやり方でしか動かない! こんなもので世界が変えられるわけないだろ!」
哲也は、父に向かって叫んだ。その言葉には、未来を知る者としての焦り、自分を理解してほしいという切実な願い、そして目の前の壁を乗り越えられない苛立ちが込められていた。
父は、一瞬驚いた顔をしたが、すぐに真剣な眼差しを哲也に向けた。
「そうか。非効率な設計に見えるか。古いやり方に見えるか」
父は一歩、哲也に近づいた。
「いいか、哲也。技術とは、今ある制約の中で、最大限の結果を出すことだ。お前は、この難解で非効率な『設計図』を、誰よりも速く、正確に、そして美しく描くことができなければ、新しい時代を切り開くことはできない。その苛立ち、焦りは理解できる。だがな、本物の設計者は、機械を罵る前に、その機械の限界と可能性を見抜くんだ。」
父の言葉は、まるで鋭い氷のように哲也の心に突き刺さった。哲也は、怒りに燃えていた視線を父から外し、先程までの怒りを他人にぶつける自身の行いを恥じた。父の顔には、苛立つ子供を叱る厳しさと同時に、新しい世代の挑戦を嬉しく思う温かい期待がにじんでいた。
「ごめん、父さん……」
何も言わず、哲也の肩を軽く叩いて部屋から父か去っていった後、哲也は椅子に座り込んだ。
テーブルに置かれた湯呑から、湯気はもう立っていなかった。哲也は冷めたお茶を一口飲んだ。彼の脳裏には、未来で見た、洗練されたUIと、瞬時に処理を終えるCPUの姿が鮮明に浮かび上がった。
なぜ、俺は未来を知ってるのに、この時代でこの古い設計図を学ばなければならないんだ。
目の前のTK-80BSは、あまりにも原始的で、未来の「洗練された常識」とはかけ離れていた。しかし、その時、床に落ちていたマニュアルを拾い上げ、埃を払った指先に、紙の分厚さと、何十万という命令コードの重みが伝わってきた。
「違う……。この時代に生きた人たちが、この複雑で非効率な機械から、あの未来を創り出したんだ」
哲也は、父の言葉を反芻しながら、再びプログラムに向かった。彼は、未来の知識を「カンニング」するのではなく、「洞察」として利用した。
「未来のコンピューターが『洗練されたデータ処理の常識』を持っているなら、このTK-80BSの設計にも、その『思想の源流』があるはずだ。きっと、この時代の設計者が求めたのは、『ムダを省いた、最もシンプルなデータの運び方』だ」
哲也は、未来の「洗練された設計思想」という知識をヒントに、この時代のコンピューター(TK-80BS)にとって最も合理的で無駄のない命令の流れを考えた。データの流れを、何度も紙に書き出し、設計図を描くように、命令の順序を再構築した。
「住所のズレ」は今まで新しいデータを追加すると全体がズレ住所が変わってしまい管理が難しかった。それを特定の『基点となる住所』だけを固定し、残りのデータはそこからの『距離』で指定し直すことでデータの「住所のズレ」を無くすことができた。
1980年 6月
この間に哲也は小学5年生になっていた。
次に取り組む学習内容は、「ハードウェアの直接制御」である。すなわちI/O操作へと移行した。
今までのBASICは、キーボードからの電気信号を、いくつもの窓口を通してからCPUに渡しており、そのせいでキー入力からキャラに反映されるまでにラグが生じていた。
それをアセンブリ言語では、キーボードとCPUを繋ぐ『電気信号の出入口』をプログラムから直接操作する命令、IN(入れろ)、OUT(出せ)を用いて、直接的な操作により、キーが押された瞬間の電気信号の変化を、瞬時に捉えることに成功。中間処理のラグが消えたことで、操るキャラクターは、画面上で滑らかに動けるようになった。
ここから哲也の学習スピードは上がっていき、ついにアセンブリの基礎のほとんどを学び終え、かつてBASICで作った経営シミュレーションゲーム『フロンティア・カンパニー』のアップデートに、向き合い始めた。BASIC版では、プレイヤーが「ターン終了」を選択するたびに、画面が数秒固まり、企業間の複雑な計算や市場変動のシミュレーションがもたつくという問題があった。
「まぁ、だからこそターン制にしたんだけどね」
これが、当時のBASICでプログラムを動かす限界だった。
BASICでは、コードが人間向きになっているため、コンピュータ側が一言一句機械語に翻訳しながら実行しているのに対し、アセンブリは、機械語に極めて近いため一瞬で動かすのに近い動きができる。
哲也は、この「計算のもたつき」、すなわち処理落ちを解消するため、シミュレーションの核となる複雑な計算部分を、すべてアセンブリに置き換えた。何十回、何百回と繰り返される企業の売上計算や市場の変動シミュレーションが、BASICの時の十分の一以下の時間で完了した。
さらに、縦スクロールの描画処理に挑んだ。BASICがカクカクと不自然な動きを見せたのは、画面の全データを一コマごとに書き換えていたからだ。哲也はアセンブリを使い、画面の一番下の行だけを素早く読み取り、それを上へ一行ずらし、最後に最下行の新しいデータだけを書き込むという、効率化の極限に挑んだ。
その結果、BASIC時代には不可能だった、滑らかで違和感のない縦スクロールが実現した。
縦スクロールの実現とキー入力問題の解決により、哲也は、リアルタイムアクションゲームにも挑戦した。その結果、滑らかな縦スクロールと敵の動きと、シンプルに縦に発射される攻撃を追加した簡単なシューティングゲームを完成させた。父も小学生という幼さでここまで技術的に進歩したことには目を見張ったが、「これはただの技術習得の証明だ。お前が目指すのは別にあるはずだ」と釘を刺した。
「お前の技術は、間違いなく成長している。だが、哲也。お前が目指すのは、ただの速いゲームじゃないだろう?」
「今年の冬までに『月刊アスキー』の読者投票で最高評価を取れるようなゲームを作って投稿してみろ。それができれば、お前のゲームは『世界に通用する商品』だ。載らなかったとしてもそれはお前にとって良い経験になるはずだ」
父さんは、技術力、創造性、そして市場で評価される商業的センスという、ゲームで金を稼ぐのに不可欠な三要素を試そうとしていた。
アセンブリを学ぶ過程であった、焦りや苛立ちはもうカケラも感じさせない挑戦への強い決意が哲也の目には宿っていた。
「わかった、父さん。必ず、最高評価を取る!」
彼は、父が言った『月刊アスキー』という名の戦場を思い浮かべる。
「日本には、この雑誌を舞台に、俺と同じく時代を切り開こうとしている天才たちが、もういる。まずは、この市場で勝つ」
哲也の挑戦は、「技術の習得」という内なる修行を終え、いよいよ「市場」という名の外なる戦いへと向かい始めたのだった。
評価、感想よろしくお願いします