表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。

プログラミングを5歳で学んだ人間が40歳になって書く文章

作者: 古川モトイ

宜しくお願いします。

 パソコンはパーソナルコンピューターの略、マイコンはマイクロコンピューターの略だ。マイクロコンピューターと言うとかなり小さなものを思い浮かべるかもしれないが、私が子供の頃から触れてきたマイコンはちょっと違う。今で言うところのデスクトップパソコンがそれにあたる。むしろマイクロじゃないコンピューターがデカすぎた。私がコンピューターに触れ始めた頃、コンピューターについて学ぶことが少なすぎたために、なぜか幼稚園児の私ですらコンピューターの歴史を少し知っていた。エニアックというコンピューターが過去に存在した。私はこの文章を極力、ウラを取らずに自分の記憶のみで書こうと決めているので(またそこに意義があると感じているので)、エニアックについてざっと覚えていることを書いてみる。大きさは二階建てのビル程度。入力はケーブルのつなぎ換えで、弾道計算を目的として作られたのがエニアックだったはずだ。そして、我が家に初めてやって来たマイコンのPC-6001MK2は既にエニアックより高い性能を持っていたはずだ。

 父がマイコンを家に持ち込むためにいかほどの金額をつぎ込んだのかは想像もつかないが、5歳の段階で私の目の前にそれはあった。私は1977年9月生まれで、幼稚園の年長だったように記憶している。任天堂ファミリーコンピューター登場前だったのではないか。私は父と雑誌に掲載されているプログラムを打ち込んでは走らせる「遊び」をしていた。父は特に気長な人物だったわけでも短気な人物だったわけではないよう記憶しているが、マイコンに関しては非常に辛抱強かったと今は確信している。雑誌に掲載されているプログラムを息子が読み上げて、父が入力する奇妙な共同作業は、多分、世界でも稀有な光景だったであろう。私は当初、アルファベットが全文字読めなかったはずだ。読みが分からない字を父に聞きながら、一文字ずつ読んでいた。私は英語など当然知らなかったのでPRINTの読みすら知らない。しかし、頻発する文字列があることには気付いた。PRINTプリントGOTOゴートゥーLOCATEロケイトINPUTインプット、INKEY$(インキーダラー)などは当時読み方を覚えた。アルファベット読みよりも早いからだ。そのうちにすがやみつる先生の「こんにちはマイコン」を買い与えられた。それによって私はIF~THEN(イフ~ゼン)構文の存在を知った。大学や専門でプログラミングを習得した人間と会話していると「IF~THEN構文を避ける」といった話が聞こえてくるが、彼らは私がその構文を小学校2年生で覚えた事実を理解していない。3つ子の魂は100まで続くのだ。


 私は子供心に「こんにちはマイコン」を読破したら、何でも作れるプログラマーになれるような気がしていた。当時、私の認識ではプログラマーは全部やる人間だった。作りたいのはゲームだったので音楽も、何もかもを1人でやるのがプログラマーだという認識だった。名著を読破したところで、自分がそんなプログラマーになれていない事実にも気付いた。これは大きな出来事だった。マイコンは何でも出来る夢の道具のはずで、プログラマーになるための本があって、それを読み終わっても自分はプログラマーになれていない現実をどのように判断すればよいのか、小学校低学年の私には難題だっただろう。なんだかプロは「マシン語」を使わなければいけない雰囲気だけは嗅ぎ取れるが、マシン語の手引きは「こんにちはマイコン」には無い。どうやったら自分が真にクリエイティブな人間になれるのか見当もつかない。仕方がないので、一番最初に出てきた足し算のプログラムを暗記した。ノートに書いて暗記した。


10 INPUT A

20 INPUT B

30 C=A+B

40 PRINT C


これがプログラミング教育を専門に受けなかった小学生の努力の結晶だ。後に育ちの良いインテリは「Hello World」と表示させるところからプログラミングを学ぶと聞いたが知ったこっちゃない。この4行ばかりのプログラムを暗記した当時、私はAとBとCが何を表しているのか良く理解していなかった。誰も教えてくれなかったと言えば嘘になるだろう。きっと父はどこかで私に教えていたはずだし、すがや先生もきっとそうして下さっていただろう。私が理解できなかったのだ。ただ、これが「足し算をするプログラム」だということはしっかり理解していたので「+」を「-」に替えれば引き算プログラムになることは分かっていた。プログラミングを子供に学ばせたいと考えている人間は子供がどんな世界を見ているのか分かって欲しい。私が代数を理解したのは恐らく小学校3年生の頃ではなかろうか?そして、教則本を身につけるためには読むだけではダメだということを理解したのもちょうどその頃だと思う。でも、私はマイコンで遊び続けていた。カセットテープでディグダグを買ってもらえたし、アスキーアートも面白かったのだ。私専用のカセットテープには雑誌からタイプしたプログラムが入れてあってそれも面白かった。何が面白いって言うと、雑誌で書いたプログラムをテープに保存して、それを読み込ませるとまた同じプログラムが実行できるという行為そのものが面白かった。スマホに写真のデータが保存されることに何の疑問も抱かない連中に私の当時の喜びは多分伝わらない。記憶媒体にデータを出し入れする行為そのものが面白かったのがカセットテープレコーダーだった。


 いつしか我が家のマイコンはMSXになっていた。MSXはゲームの本数が多かった。ゲームをするためにMSXを起動する割合が多くなっていたが、そこはそれ、やっぱりプログラミングはぼちぼちと触っていたように記憶する。MSXとPC6001MK2に共通していたのは、起動するとベーシックの画面が出たということだ。人に寄っては何を言っているかわからないと思うが、マイコン時代、操作の中心はキーボードだった。必要な操作は全て文字で打ち込んで行なうのが常だった。プログラムを実行するにはRUNランと打ち込む必要があった。ENTERキーはまだ無く改行を表すRETURNキーがその場所にはあった。画面がゴチャついてきたらERACEイレースと打ち込んで、RETURNキーを押すと画面がまっさらになる。カセットを読み込むのにはFILEファイル命令か何かを使ったように記憶しているが、もしかするとREADリードだったかもしれない。やりたい操作は全て覚えなくてはいけなかった。もう少し当時のマイコンの仕様を解説すると、ファイルのフォルダと言う発想がなかった。そもそも、マイコンはOS以外の情報を持っていなかったので、たった一つのプログラムを読み込むか入力して、たった一つのプログラムを実行することしか出来なかった。ハードディスクなどと言うものはないので、PC立ち上げたらデスクトップから好きなプログラムを選んで実行などと言うそんな世界ではない。電源切ったらまっさらになる。使いたいプログラムを毎回インストールすると思っていただけると分かりやすいか。


 MSX-TurboRにはなんとフロッピーディスクドライブがついていた。大容量のデータを扱えるフロッピーディスクドライブは、出た当初80万円とか化け物みたいな値段をしていたが、3.5インチの使いやすい規格になってとうとう我が家にやってきた。フロッピーは大量のデータを保存できる上に、頭出しをしなくても、指定したファイルを読み込むことが出来た。頭出しが何か分からない人にその概念を説明するのは至難の業だが、カセットテープに保存されたプログラムを読み込むためにはテープの頭から何秒たったところにプログラムがあるのか紙などにメモしておいて、予めその位置まで早送りして読み込ませる必要があった。それが無くなった。だから、どのファイルを読み込みたいのか指定する必要があった。そこでディスク内の情報をを操作するディスクオペレーションシステムが必要になった。小学校高学年か中学校の頃、MSX-DOSを初めて触って、その便利さに驚いた。BATバッチファイルと言うモノを作れば自動化できることが分かった。そもそも、その前のマイコンの時代にはなんでもキーボードで入力して操作していたのだ。DOSを少々覚えるぐらい苦でもなかった。なによりMSX-DOSにはDOSで使うコマンド一覧のヘルプが内蔵されていたので、ヘルプを見ながら直接学んだ。中学校の教育用のパソコンのAUTOEXEC,BATの中身を書き換えて、パトレイバー劇場版で出てきた画面一杯のBABELを再現したりして(当然元に戻した)遊んだ記憶がある。多感な小学生の時代に何となく将来はプログラマーになろうと思っていた私が挫折したのは、マシン語を学ぶ機会が無かったことだった。今なら分かる。別に自分で教則本を買ってきて学べばよかった。もう一つ、時代はマシン語の時代ではなくなっていた。しかし、なぜか「プロのプログラマーはマシン語必須」という刷り込みが行なわれていた私は、パソコンを触っていてもいつまでもマシン語への扉が開かない自分自身に劣等感を抱いていた。学校の教科書にも載っていないその謎の言語は未だに私の中に劣等感として残り続けているのかもしれない。早い段階で職業プログラマーの道を見限ったのだと思う。そうした経緯で私にとってプログラミングは同世代と共有できない遊びとなっていった。1人で何も他にすることが無いときに、たまに気が向いたら遊ぶものだった。中学生のとき、一度、父が持っていたポケコンでテキストベースの野球ゲームを作ったのを覚えている。バッターのときは乱数ではなく画面上を行き来するカーソルが中心に来たときにボタンを押すとヒットが出る方式を使ったように記憶している。父とどこかへ行った帰りだったと思うが、電車の中でヒマだったのだ。そのプログラムをみて父が妙に嬉しそうだったのを覚えている。


 FM-TOWNSが我が家にやってくると、マウスでOSを操作するようになった。当初、マルチタスクが理解できなくて戸惑った。TOWNSはCDドライブを内蔵していたので、音楽プレイヤーとしても重宝した。現在はフォルダと呼ばれているものは当時はディレクトリという名前だった。厳密には同じものではないようだが、マイコンをパソコンと呼びかえるぐらいの柔軟さは持っているのだから、今は私もフォルダと呼んでいる。プログラミングは益々私から遠のいた気がした。言語の種類は増え、ビジュアルが明らかに強化されていた。WINDOWSが我が家に導入された頃になると私は、自分がプログラミングをかじった人間だということをすっかり忘れて音楽に没頭していた。ただし、成果が無かったわけではなかった。代数の概念の理解がとにかく早かった。その代わり代数に文字列が入れられない事実に戸惑った。アルゴリズムが何となく身についていた。英語の単語を読むのが少しだけ得意だった。高校の学園祭のときに、物理部の部室でTRPGをやっていた私は、一宿一飯の恩を返すために来室者が遊べる30行程度のプログラムを書いた。中学生の頃、MSXマガジンに載っていた「ボケ仙人トーク」というボケ老人と会話するゲームは、BASICでプログラミングをやったことがある人間ならすぐにどうやって作ればよいのか分かる代物だったので、部室のPC8801だったかにうろ覚えでほとんど変わらないものを作って放り込んだのだ。私はフローチャートも描かずに短いながら完成されたゲームを作って展示したが、完成品を展示できなかった学生も多かった。彼らはまさか学校でパソコンをほとんど触らない私が1時間もかけずにゲームを一本作るとは思っていなかったので、驚いた様子だった。私はそれがMSXマガジンに乗っていたゲームのアイディア丸パクリだとはなんだか言いだせなかった。彼らが数ヶ月かけて努力していた様子も知っていた。単にプログラミング歴が違っただけで、私は5歳から、彼らは高校に入ってからプログラミングを始めた。きっと、彼らの何人かはプロのプログラマーになったと思う。彼らは時に悪ノリに満ちていたMSXマガジンでは無く、プログラミングの教則本に真っ向から対峙していた。それが羨ましかった。それ以降、私はほとんどプログラミングに触れなかった。高校の学園祭で私が悪いことをしたわけではないことは分かっているのだが、努力している彼らを出し抜くような形になったのが引っかかったのかもしれない。彼らの1人がドラクエもどきを作っていたのも、まあ確かにパクリといえばパクリかもしれないが、彼は自分が形にしたいゲームを作ろうと教則本にかじりついていた。私はと言うと別に自分が作りたいものを作ったのではなく、手間をかけずに笑えるものを作って展示しただけで、そうした自分の不真面目さが嫌だったのかもしれない。


 時は流れ私も一児の父になった。私は息子にゲームを作る側の人間になって欲しいとも、プログラマーになって欲しいとも思ってはいなかった。ただ、欲しいゲームを買い与え、ゲームを楽しむための必要条件は「きちんと説明書を読むことだ」と教え、たまに好きなサーモン握りを回転寿司で食べさせていただけだった。小学生になった息子が「ゲームを作りたい」と言い出したので、調べたところScratchと言うブツがあった。Scratchの教則本を買い与えて環境を整えたら、驚くほど食いつかなかった。私は方針を変更してRPGツクールVXのアカデミック版を買わせる事にして「まあこれでモチベーションが上がらなかったら、次のツールを探すか」と思っていたら、こちらは意外な形で食いついた。RPGツクールにはRubyが入れ子になっているらしく、ゲームも作らずにひたすらRubyをいじっていたのだ。息子に「実はそれはRPGツクールの独自のツールではない、本当は独立した言語だ」というと驚いていた。そのへんが触れる環境を整えてやると、色々、コードをいじりはじめた。私は「プログラミングはオモチャ」だと思っているので、たまに遊べそうな問題を出してみたりする程度で、息子が何をやっているのかにあまり興味は湧かなかった。


 30代中ごろ、ひざの痛みで病院に行ったら、比較的珍しいタイプの脂肪にできる悪性腫瘍だった。否でも自分の人生について考える。病院のベッドの上で時間だけは豊富にあった。岐阜大学病院内のコンビニでメモ帳を買った。Scratchでゴッツイものを作ってやろうと思ったからだ。息子が見向きもしなかったScratchでなんかアッと驚くようなものを作って見せてやって、私が本気を出して遊ぶとこんなに面白いというのを見せたかった。社会にはプログラミングを仕事にしている人間はゴマンといる。私は違う。ただアルゴリズムで遊んでいるだけのちゃらんぽらんなプログラマーだ。実験的なプログラムを幾つか作ってScratchでできることとできないことを洗い出すと、購入したメモ帳に必要なパラメータの一覧を手書きで描き始めた。息子はまだコードを書いたり消したりしながらプログラミングをしているのだろうが、父は違う。ハナから機械に向かってはいけない。自分が具体的に何を作りたいのか知るところからはじめないといけない。抗がん剤の治療で、チューブだらけになりながら、私はメモ帳を何度も読み返した。やっと自分が何をやりたいのか見え始めた。私はScratchを使って、直感的に音楽の面白さを知ることが出来て、自分がクリエイティブの中心にいるかのように錯覚させるような、そんなツールが作りたいんだとわかった。取捨選択はほぼ全て紙の上で行なった。むしろ、Scratchの中でそれを形にしていくのは面倒くさくて辛い作業だった。そのプロジェクトにはScratchとMelotron(楽器の一種)を組み合わせてScratron1.0と名づけた。2014年7月に完成した。月末には手術が控えていた。


 父の渾身の頑張りにもかかわらず、息子はさほど興味を示さなかった。そもそも、彼は何かに感情的になったり、感動したりということが少ない人間なので、ある程度予想は出来ていた。手術は成功して、左脚は不自由になっても自分で歩いて生活できるようになった。すっかり忘れて3年ほど過ぎたころ、ひょんなことからScratron1.0が「日本人の注目のプロジェクト」というカテゴリーに登録されていることに気付いた。閲覧数が4万を超えていた。沢山のScratcherがリミックス(Scratchでは誰かのプログラムを改造して遊べる)に挑戦して、そして扱いきれずに壊していた。きっと、何人もの子供達がScratron1.0に触れて「もっとカッコいいものにしたい」と考え、中を覗いてその複雑さに挫折したのだろう。それはScratchの大きな魅力の一つだ。誰かが作った精巧なものを弄くり回して壊してしまってもScratchでは元が壊れるわけではないので誰も叱らない。私も足し算のプログラムを丸暗記した頃、中身が何を表しているかなんて理解していなかった。Scratron1.0には指定したコードからベースラインを自動的に判断するアルゴリズムやランダムアルペジエイターまで詰め込んであるのだ。その辺はコード理論が分からないと手も足も出ない上に、ドコからドコまでが何のルーチンかも極めて分かりにくい。そして、その仕様は私のなくしたメモの中に書いてある。これは誰にも教えてやらないと言うよりは、むしろリバースエンジニアリングまで楽しめちゃうということだ。


 さて、オッサンによる長い自分語りを経た上で、私がこの「プログラミングを5歳で学んだ人間が40歳になって書く文章」を誰に読んで欲しいかを明かしたい。これは子供にプログラミング教育をしようとしている大人に読んで欲しい。子供は自分がやりたいことをどう実現したらいいのか知らない。目標だって知らない。プログラミングは万人が興味を持つものとは限らない。教育的意義を問う前に初等教育の現場においては徹底して遊びであって欲しい。大人の都合にあわせた目標もいらないだろう。

ご精読ありがとうございました。文中で触れたプロジェクトです。


Scratron1.0

https://scratch.mit.edu/projects/24277924/

評価をするにはログインしてください。
この作品をシェア
Twitter LINEで送る
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
[良い点]  プログラミングが遊び  面白い感覚だなぁーと思いました。  こう、苦戦しながらも、どんどんプログラミングの奧に入っていくところ、周囲の人の反応等、読み物として面白かったです。 [気にな…
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ