Chienomi

私の初期の技術と習得に関する話

雑感::mythings

「2歳からプログラマ」というのは、私を説明する上で、それほど積極的に言及しているわけではないのだが、なぜITを?ルーツは?と聞かれた場合には言及せざるを得ない事実である。

だが、このことについて真実味がないと感じる人も居るのではないだろうか、と考え、ここに昔のことを記すこととした。

なお、この内容は既に何度も触れているものである。

原点

父がIBMに勤めており、家にIBM JXがあった。 これが全てである。

昔のコンピュータを知らない人、そしてJXを知らない人のために説明していこう。

IBM JX (Bilby - 投稿者自身による作品, CC 表示 3.0, https://commons.wikimedia.org/w/index.php?curid=11119474による)

JXは1984年にデビューしたIBM製のパソコンであり、売れなかったものである。 プロセッサはIntel 8088を採用しており、16ビットCPUである。 当時のパソコンで人気だったNECのPC-8800シリーズが8ビットだったので、より先進的だったと言っていい。 2DDの3.5インチフロッピーをメインの補助記憶装置として使用するが、これも先進的だ。一般的にはまだ5.25インチのミニフロッピーディスクが使われていた。

見ての通りJXには2つのフロッピードライブがある。 2DDのフロッピーディスクの容量は720kBである。 Windows 1.0の登場よりも先だ。私が使用していたJX3は128kBのメモリ(キロバイト、である)を搭載する。Intel 8088プロセッサの動作クロックは4.77MHzだ。

ちなみに、フロッピードライブの下の口は「拡張カートリッジスロット」で、ここにカートリッジを指すと(アメリカで売られている)PCjrの互換モードで動作したり、マルチステーション5550のサブセットモードで動作したりする。

また、キーボードから線で出ていないが、乾電池式で赤外線で通信する。 確か、単三が8本とかだった気がするのだが、ライフが短かった。オプションで本体と接続できるケーブルもあり、これはポート形状はPS/2と同じ。ただし、電気的互換性がない。

で、今みたいに起動すればとりあえずわかる、という感じのものではなかった。 IBM JXが起動できるのは「日本語DOS」か「PC DOS」である。 PC DOCはMS-DOSがベースになっており、現在もWindowsで「コマンドプロンプト」を起動すると、MS-DOSのめちゃくちゃモダンなバージョンが起動する。 日本語DOSの大きな違いは、「日本語(漢字含む)が表示できる」ということである。

で、起動したらこれが表示されるわけだ。 まぁ、一言で言えば画面にただ

A:\>

という文字だけが表示されるわけである。コンピュータを使いたければ、ここでコマンドを打つ必要がある。 だが、ぶっちゃけこのDOSには、何か生産的なことを行うことができる機能はなにひとつない。今でいうところの「アプリ」もないし、DOSにできるのはファイルを表示することくらいだ。

ゲームなど、一部のディスクはAUTOEXEC.BATというファイルが含まれており、DOSを含んだディスクであれば起動時にこのファイルが実行されるようになっていた。 そのため、これが起動スクリプトになっており、そこからなんらかのプログラムをロードする、という手法が取られた。 この場合、ゲームをするのに特にコマンドを打ったりする必要はない…のだが、私がやっていたゲームは大概、コマンドを打つことを求められた。

つまり、コマンドを打たなければ結局何もできないのである。 だから、私はまずはコマンドを覚えた。何を打てばいいのか、ということは父や姉に聞いた。

JXの本は今も私の手元にあり、ダンボール一箱分ほどある。 その中で私が特に読んでいたものは3つ。「日本語DOSのマニュアル」「BASICの基本」「BASICの応用」の3種類である。

BASICというのは教育用のプログラミング言語で、大抵のパソコンにはBASICのインタープリターが載っていた。 つまり、誰でもBASICのプログラミングだけはできたし、また、しなければ生産的にパソコンを使う方法がなかった。

当然ながら私もBASICを触り始めた。これが、3歳になるちょっと前の話である。

さすがにこの頃は私も文字が読めない。正確には、全く読めないわけではないのだが、不自由しないほどではない。 だが、プログラミングするにあたり、「手本は本にある。キーボードには文字が書いてある」わけで、「キーボードを叩くとそこに書かれている文字が出る。本に書かれている通りの文字にすれば動く」ということを理解し、自分でプログラミングするようになったわけだ。 F1キーでコードを確認し、F2キーで実行する、という手順は手探りで覚えた。

基本の本の最後には、ロボットがギーコーギーコーと音を発しながら歩く(というか、2枚のグラフィックを切り替えながら移動する)というものが書かれていた。 確か500行くらいあったと思う。他のコードが長くても30行くらいなので、圧倒的に長い。 私が3歳のときに、14歳だった姉はこれを書き上げた。 姉にとってはこのコードを書くことがパソコンからの卒業になったが、私は対抗心もあってオリジナルのプログラムを書き始めた。 この「オリジナルのプログラムを書く」という行為の背景には、BASICで書かれたゲームのコードを一部書き換えて、メッセージを変更したり、ステージを飛ばしたり、挙動を変えたりといったことが私にとって楽しい遊びだった、という背景もある。

JXでの遊びは、私に算数迷路ゲームで四則演算を覚えさせたし、迷路ゲームで空間認識能力を鍛え、hangmanやMissing letterで英単語を覚え(中学時代にはMissing letterは英文法を覚えるのにも役立った)、トップマネジメントで経営と経済を覚え、そして本を読むために日本語を覚えた。 私が小学生になるときには、5桁の足し算引き算、ひらがな、カタカナ、少しの漢字、英語(あくまで一部の単語だけ)が分かる、という子供だったわけである。ちなみに、天文の本をよく読んでいたからその内容も覚えていた。そしてBASICでプログラミングもできる。今から考えてもなかなかのものだと思う。

岐路

このことが今に繋がっている――と理解されることが多いのだが、それは事実に反している。 それは、中学校2年生のときの決断によるだろう。

小学校6年のときにいくつかの文章でお金をもらうことができた私は、「文章を書く」ことにハマっていた。 特に、小学校5年生でスレイヤーズを読み始め、小学校6年生でファンロードを読み始めた私はオタクへの道を歩み始めていたのだ。

文章スキルそのものはどちらかといえばコラム的なものにおいて発揮された。作文に関しては、親のチェックにより、親が望むとおりのものを書かされたから、学校において発揮するチャンスはなかった。 そして私の一番の楽しみが、「物語を書く」ことだった。

昔から妄想癖があり、物心ついたときにはもう、二次創作やオリジナルのストーリーが頭の中を占めていた私は、「ついにアウトプットを得た」という状況だった。 なお、普段、という意味では原稿用紙に書く、という習慣はなかった。それは、仕事や作文でやるものだ。

ことの起りは姉が持っていたワープロ「With Me」であった。 電池を内蔵したモバイルタイプで、プリンタ別体のため薄くて軽かった。1.8kgとあるから、今の基準でも普通に軽いと思う。

姉は大学生で、大学では一人暮らしをしていたから、それほど会うことはなかったのだが、家に帰ってきているときはWith meを借りて物語を書いたり、タイピングの練習をしていた。 (卒論の邪魔であると怒られもした)

姉が自宅に戻ってから、私は主張したのだ。「私もワープロが欲しい!」と。 相当ごねまくったところ、母が知り合いからお古のワープロをもらってきてくれた。 だが、これは液晶が1行しかないもので、確か画面には8文字しか表示できなかった。さすがにこれでは作業できない。私はこのワープロを使うことはなかった。

姉が卒業すると(私は小5だ)、父は姉にパソコンを買い与えた。 それに対して私は不満を述べた。明らかに姉よりも私のほうがパソコンのスキルは高いし、有効活用しているにもかかわらず、私は時代遅れのJXを使い続けている、ということだ。私もパソコンが欲しい、というよりも「GUIプログラミングがしたい」と主張した。

これは聞き届けられなかったが、中学1年のときに父が会社から廃棄品のパソコン(Aptiva)を持ち帰ってきた。 Windows 3.1の入った古臭いものであったが、私の希望によりOS/2に変更され、Visual Basicが導入された。

だが、これが致命的だった。 まず、Windows 3.1でも動作が厳しいようなパソコンであるから、OS/2を入れたらほとんど「動かない」といってよかった。「クリックにも難儀する」レベルだったと記憶している。 加えて、Visual Basicは何のドキュメントもなく、どうしていいのか全くかわらなかったのだ。

途方に暮れた。 結果的に、ここでパソコンから離れてしまった。 これは、私がごね続けた結果、姉がWith meを譲ってくれたから、というのもとても大きいだろう。 文章が書ければそれで満足だったのだ。

中学2年生のとき、父がパソコンを買ってやろうか、と持ちかけた。これは、プログラミングのためではなく、文章を書くためである。 私は何かと文章を書く機会が増えていたし、制作物も増えていた。それを見かねてのことだろう。 というよりも、父のAptivaを使って制作していることが多かったから、邪魔になった、というほうが大きかろうけども。

このとき、私はワープロが良い、と主張した。 父はパソコンのほうが良いのではないか、と言ったが、私はLotus WordProの挙動がどうにも理解に苦しむ(勝手に変換されたり、行間を変えられたりしてしまう)ことに耐えられず、あくまでワープロが良いと主張した。

結果的に、私の手元にはNECの文豪が来た。これは、私の希望通りの品であり、わざわざ秋葉原に出て買い求めたものだ。

これが失敗であったことはすぐに理解した。 文豪のキーボードはこの上なく打ちにくいものだったし、変換はこの上ないほどアホだった。 私は文豪でいくつかの小説を書き上げ、同人出版もしたが、あまり良い思い出はない。

再起

高校2年生のときに、仕事上どうしてもパソコンが必要になった。 私はもうプロのサウンドクリエイターになった後であり、DTM作業もあったからパソコンが必要だったのだ。

それまで仕事はMacでしてきたが、師匠にはWindowsでも良いのではないか、と言われた。 このために私はSony VAIO PCV-MX2を購入した。50万円ほどしたので、当時としても最高級のセットだったと言って良い。

それから、割とすぐにインターネットをはじめた。一時インターネットに関わりはあったものの、主体的に使うのも、ユーザーとして使うのも初めてだったから不慣れであった。 だが、コンピュータそのものに対する「勘」はある。

当時はまだパソコンを使っているだけで「オタク」と言われてしまう時代だったし、ほとんどの人はパソコンについては何も知らなかった。当時、「SE」などと言えば過酷だがかっこいい仕事だ、などと憧景を持って受け止められていたところもある。

当時は誰もがホームページを持つ時代だったが、HTMLを書ける人、というのはほとんどいなかった。 部分的にいえば、タグは知っていて、「こういうタグを書くとこういう効果が出る」みたいな知識は出回っていたのだが、HTMLを全部書けるわけではないし、ましてJavaScriptやPerlを書ける人はほとんどいなかった。 CGIスクリプトも、配布されているものをマニュアル通りに操作して動かす、みたいな話であった。

そんなところに、プログラミングの経験があり、プログラミングやOSなどコンピュータテクノロジーに関する初歩的な知識のある高校生の私である。当然ながら「すごい」などと崇められることになる。 それどころか、当時ITを職業にしていた人たちでさえ、「彼はすごい、よくわかっている」などと褒め称える状況だ。

ちょっと待って欲しい。確かにプログラミングの経験はあるし、COBOLでプログラムを作ってお金をもらったこともある。 OSに関するある程度の知識はあるし、コマンドを打つくらいなんの抵抗もない。 Sun Workstationを使っていたこともあるからUnixに関するいくらかの知識もある。 プログラミングは趣味だったので、今改めてHTMLやJavaScriptやPerlについて触れても特に抵抗はないどころか、「便利な言語だなぁ」と思って嬉々として書いているのは事実だ。

だが、それだけだ。「分かっているか」と言われれば、「分かっていない」に決まっている。

自宅(ローカル)サーバーをやりたいと思っていたことから姉に煽られてLinuxを始めたのが高校卒業前の2002年。 そのあとLinuxに入り込むようになり、やがてOSSの開発にも関わるようになる。 その過程でも、常に評価が先行していて、私には「そんなみんなが思ってるほどすごくないんだよ」という気持ちでいっぱいだった。

それが解消されるのは、仕切り直しでスタートする2014年を待つことになる。 特に2008年以降は、ものすごく勉強もしたし、本気で取り組んだ。 どんなに尊敬されても、崇められても、その上をいく実力を持とう。その意思の結実を見たのである。

Finally

私のコンピュータの原点はどこにあるか? と聞かれれば、2000年のMX2だ、という答えが自然だと思う。

Erinaにつながるコードが起こされたのもこの時期だし、PerlやJavaScriptもこの頃覚えた。 そこからLinuxを体験したことは明らかに今につながることだし、ちゃんと理解せずにフィーリングで書いていた子供の頃とは全く違う、はっきりした理解を持ってコードを書けていたというのも大きい。

だが、そこで自然に「コンピュータ的な考え方」や「プログラミング」を受け入れられたのは、やはり2歳からコードを書いてきたこと抜きには考えられない。 さらにいえば、そういうロジックの組み立てに関しては、プログラミングよりもRPGツクールの経験のほうが大きいと思う。

しかし、こうした経験が直接今に繋がっているか、というとそれはそれで疑問だ。 今のスキルの原点は、という話なら、2008年という答えがしっくりくる。

私は、2003年に、インターネット上で色々嫌なことがあったこともあり、「私はコンピュータが好きじゃない」という気持ちになった。 実際、音楽の仕事もあったしバイクも楽しかったからそんなにPCに触れていなかった(といっても一般的に見て「そんなに」かどうかは怪しいが)。

でも、Linuxをいじるのは楽しかった。 日に日に発見があり、良くなっていくシステムは楽しかった。

2008年にRubyにちゃんと触れて(プログラミングRubyを読んで)、プログラミングがまた楽しくなった。 ここから猛烈にのめり込むことになり、また「音楽の仕事がなくなった」と失意の中にあった私にとって「コンピュータを仕事にする」という明確な意思を持ったスタートでもあった。

だが、これはこれで、それまでのLinuxの経験や、プログラミングでの積み重ねがなければやはり成し遂げることはできなかっただろうし、そんなふうに考えもしなかっただろうから、2008年に始めたのだ、というのも違和感がある。

だからなんだかんだ、2歳のときのはじまりが今に連なっている、と言っていいのではないだろうか。