プログラマーになったきっかけはINKEY$

12万のプログラミング情報商材が詐欺だのどうだの、とSNSで話題になっておりますが、プログラミングが流行っている、という感覚が全くなかったので、そこを狙った商売があることに驚きました。
(世間的にはプログラミング教育?が注目されているとかいないとか)

うちのPHPやSQLの記事のアクセス数それほどないですしねー。

これはアレか、既存のプログラマー向けのノウハウを書いているから母数が少ないのであって、もっと初心者向けの記事を書けばアクセス数がウッハウハ(死語)なのでしょうかw

まぁそれはさておき、どんな事柄でも「はじめるときのキッカケ」と「ステップアップの足がかり」が大事だと思っています。いわゆる入門本と初級本の違い、みたいな。

今日はそのへんを絡めた、ぼくがプログラマーになったきっかけ的な昔話です。

プログラミングに興味を持ったきっかけ

何かに興味を惹かれるのに大層な理由は必要ないと思うんです。将来的にITブームが来るなんて考えもしなかったし、インターネットが普及するなんて想像できるハズもありません。

ぼくがプログラミングに興味を持ったのは小学校の2年生くらいの頃、兄がポケコン(ポケットコンピュータ)のCASIO PB-100でシューティングゲームを作ったのを見かけたからです。

ポケコンってその名のとおりポケットに入るちょっと大きめの電卓くらいのサイズで、液晶画面が1行しかないんですよ。1行ですよ1行。

■CASIO PB-100

引用元:wikipedia

だから、シューティングゲームといっても左に自機がいて、右からやってくる敵をひたすら撃つだけ。

でもさ、それを自分の兄が作ったと聞くと「スゲー!」と思うわけですよ。ぼくは当時小学生でしたし、兄もたぶん中学生くらいだったと思います。

そんな兄貴がゲームを作れちゃう。なにそれ、ぼくも作ってみたい。

どうやって作ったの、と聞いたらマシン語で作ったと言います。なんだろうマシン語って…。小学生のぼくには全くわかりませんが、いつかぼくもマシン語とやらを出来るようになろう。そんなふうにずぅ~~~と思い続けました。

…………騙されているとも知らずw
(うちの兄貴がマシン語を素で書けるスーパー中学生のワケがないのですw)

コンピュータは小学生には買えない

まぁ当たり前の話ですが、ポケコンといっても何万円もするものですし、とても小学生のお小遣いでは買えません。

お金を貯める術がわからないので、いらなくなったおもちゃを家の前に置いて、値札を付けて売ろうとしたりしました。「おい、恥ずかしいからやめろ!」と親に怒られてひっこめましたけどw

ほかにも空き瓶を集めて酒屋に持っていって換金してもらったりしましたが、せいぜい数十円~百円にも満たないくらいの収入源です。

そんなこんなで小学生なりに頑張ったつもりですが、ポケコンが買えるほどのお小遣いを貯めることはできなかったので、ぼくのコンピューターデビューは中学2年生の頃まで引き伸ばされます。

はじめて手に入れたマイコンピューターPC-E200

■PC-E200

引用元:Wikipedia

若い方にはこれのどこがコンピュータやねん、と思われるかと思いますが、ポケコンで4行も表示できるなんて革新的だったんですよ。

少なくとも2万円近くしたと思いますが、お正月のお年玉を貯めて買ったのをよく覚えています。冬休み中はずぅ~~~とこのポケコンいじってましたからね。

何もしなければポケコンはただの関数電卓

当時は関数電卓という名称すら知りませんでしたが、PC-E200は何もしなければ本当にただの関数電卓です。そもそもぼくは勉強が出来るほうではなかったので、log関数とか言われても何のこっちゃです。

とっととBASICモードにして、プログラミングをはじめました。

はじまりは Hello World

……だったかどうかは記憶にありませんが、BASICのPRINT文からはじめたのは間違いないと思います。

10: PRINT "Hello World"

と入力して、RUNコマンドで実行すると画面上に Hello World と表示されるのです。ワクワクが止まりません。

10: PRINT "Hello World"
20: PRINT "Hello World"
30: PRINT "Hello World"
40: PRINT "Hello World"

無意味に4行一杯に表示してテンションMAXです。

がしかし、Hello Worldを表示したくてポケコンを買ったわけじゃありません。ゲームを作りたいのです。

でもシューティングゲームにこだわりがあったわけでもありません。

当時、ドラゴンクエストが大人気だったというのもあり、ぼくが次に書いたコードはコレ。

10: PRINT ">たたかう"
20: PRINT " ぼうぎょ"
30: PRINT " どうぐ"
40: PRINT " にげる"

※当時、日本語変換機能はなかったため、実際は「たたかう」→「タタカウ」等の半角カナ表示です

ふぉおおおお!!!ドラクエみたい!ドラクエみたい! と中学二年生のぼくは大はしゃぎ。

でも、困ったぞ。

カーソルを動かすにはどうすれば良いんだろう…。

当時は電子マニュアルなんてものはありませんから、BASICの構文についてのリファレンスマニュアルもPC-E200に付属しており、これが分厚いのなんの。辞書みたいな厚さです。

どうやってカーソルを動かす方法を知れば良いのかわからないため、1ページ目から読みふけります。…………ひたすら読みふけります。

辞書を1ページ目から読んでいるような感じです。

そしてINKEY$に出会う

「ポケコンとか懐かしいな、おい」

そこへたまたま兄貴が登場です。

おぉ、これ幸いにと「昔ゲーム作ってたよね? キーを入力したら動くようにしたいんだけど、どうやるの?」と率直に聞いてみます。
(このときはまだ兄貴がプログラミングが出来ると信じていた)

「……ちょっと貸してみろ」

そう言ってぼくの持つリファレンスマニュアルをパラパラとめくる兄貴。けっこう時間が経ってから、

「これじゃね?」

と、INKEY$という関数のページを開いてみせます。

その説明欄には「入力された文字を返します」というようなことが書かれていました。

あー、なるほど。”A”とか”B”とか入力されたキーの文字を返してくれるのか。たしかにコレっぽい。

「ま、がんばれ」

といって消える兄貴。

もう少し具体的に教えてくれても良いのに、と思ったぼくですが、きっかけを掴めた後はどんどんとアイデアがあふれてきました。

CLS関数で画面を消して描き直す方法を学ぶ

さて、下記のようにメニューを表示した後、INKEY$でキー入力を待ち受けることには成功しました。

10: PRINT ">たたかう"
20: PRINT " ぼうぎょ"
30: PRINT " どうぐ"
40: PRINT " にげる"
50: A$ = INKEY$

“A”や”B”といった文字だけでなく、カーソルキーも判別できることがわかったので、カーソルの上を押された、あるいは下を押された、という判断は出来ます。

問題は、そのあとどうするのか。

この矢印「>」を2行目に移動したいのですが、その方法がわからない。

どれだけリフェレンスブックを読んでもそんな便利な関数は見当たらないのです。2行目の1文字目、というのを指定して文字が表示できれば良いだけなのに…。

そんなとき、ふと、画面を消してもう一度描けば良いんじゃね?と思いつきます。

 60: CLS
 70: PRINT " たたかう"
 80: PRINT ">ぼうぎょ"
 90: PRINT " どうぐ"
100: PRINT " にげる"

CLS関数で画面を消した後、再度1行目から4行描けば良いのでは?と。

表示するのがものすごく遅かったらどうしよう、という懸念はありましたが、実際に試したところ、それこそ一瞬で4行の書き換えは完了しました。

こうなると一気に作業が進み始めます。

カーソルの下を押されたら一個下に「>」を表示すれば良いものの、その一個下っていうのはどう判断するんだ? そうだ、変数というのにメニュー番号を入れよう。たたかうが1番、ぼうぎょが2番だ。

カーソルの下を押されたらメニュー番号を+1、上を押されたら-1。あれれ、マイナスになったらエラーになるなぁ。

よし、メニュー番号が1のときにカーソルの上を押されたらメニュー番号を強制的に4に変更しよう。

おぉぉぉ、上から下までループするメニューができた………!!

そんなふうにぼくの中学二年生の冬休みは過ぎていきました。

高校生の頃には1000行を超えるプログラムに

中二の冬にドラクエ風の戦闘画面を作ることに成功したぼくはさっそくその成果を学校に持ち込みます。

携帯ゲーム機なんてゲームボーイくらいしかない時代です。

ぼくのポケコン、しかもオリジナルのゲームを見た同級生はこぞってプレイしてくれました。

本当に戦闘しかできないし、バランスもめちゃくちゃなんだけど、むしろそれが新鮮で面白い、と。

特に高校に入ってからは更に加速度的にプログラムが高度化しました。なにしろ寮生活だったので、目の前にヒマな友人が山程います。

プログラムを覚え、成果物を作り、すぐに友人にプレイしてもらえる。

プログラマーになる土台としては最高の環境だったと今でも思います。

今ではそのソースもなくなってしまいましたが、数百行を超えてくると4行しかない液晶画面ではコーディングが非常に困難で、ポケコン用のプリンターも買いました。

コーディングして、プリントアウトして、印字されたコードを読みながらデバッグです。

最終的には1000行を超えるレベルのコードになってしまい、ポケコンのメモリ容量(わずか32KB)では足りなくなり、これ以上の機能追加を断念。 (たしか最後のほうはボスが三段階に変身するし、こっちはこっちでかめはめ波とか撃ってたw)

ちょうどその頃でした。親がPC-286というEPSONのラップトップパソコン(とは名ばかりの重量8kgもあるパソコン)を買ってくれたのは。

そこから更に貪欲にプログラミングを学び始めるのですが、それについては今回の話とだいぶズレるので、また機会があれば。

まとめ

昔語りで長くなってしまいましたが、ひとまずのまとめとしては、

  • プログラミングをはじめること自体は誰でも簡単
  • 対話式の操作(キー入力やマウスクリック等)ができると途端に楽しくなる
  • ぼくの場合は何と言ってもINKEY$の存在が大きかった
  • 更に出来上がったモノを誰かに使ってもらえると喜びも大きい

今どきだとJavaScriptでプログラミングにはじめて触れる、なんて人もいるのかも知れません。その場合は onkeydown イベントや、onclickイベントですかね。

ユーザーが何か操作をしたときに、その操作に従った反応を返すプログラムを作れるようになると、あれもやりたい、これはできないか、と自分自身で改善点のアイデアがどんどん出てきて、勝手にプログラミングスキルなんてどんどん上がっていきます。

ぼくは20代の頃に業務系システムの開発会社に入社したのですが、同期入社の人たちが4人ほどいました。
(ちなみにゲーム開発会社の面接にも行きましたが職場環境が物理的に汚すぎて辞退)

全員がMS AccessとVBA必修で、教本をまるごと一冊消化し、最後にはオリジナルの業務システムを1本作る、という学校のようなことをしていました。……なぜかぼくは教師役でしたが。

残念ながら今でも現役プログラマーなのはぼくだけになってしまいましたが、その会社の育成方針自体は悪くなかった気がします。

きっかけが少々無理やり気味ですが、教本があり、先生がいて、最後には目標となる業務システムがあり、しかも給料までもらえるんですからw

最初の話に戻りますが、こういった経緯もあって、プログラミングの教材にお金をかけるのはどうなんだろうなぁ。

むしろお金もらいながら勉強できる美味しい環境がそのへんにごろごろ転がってると思うんだけどなぁ、とそんなふうに思うのでした。

そんなホワイト企業に入社できない? いやいや、ぼくが先生役をやっていたその会社は端から見れば紛うことなきブラック企業です。

毎日終電まで残業だし、残業代出ないし、休日出勤当たり前だし、給料安いし。でも3年ちょっとというわずかな期間で多くの技術とノウハウとこんだけ働いても倒れないんだなという自信wがついたので、まぁ、残業代が出ないくらいはどうでもいいかな、と思いました。

何事もそうですが、考え方次第ですね。

adsbygoogle

フォロー