16進数の羅列をコンピューターに打ち込む小学生時代

菅澤英司氏(以下、菅澤):前回Rubyの話をいろいろお聞きしたときに、がんばって作ったとおっしゃっていたんですけど、言語を作るというのはなかなかのことだと思うんですよね。どうやって育っていったか、どうしたらまつもとさんになれるのかということで、子どものときはどうだったんですか? BASICを始める前とか。

まつもとゆきひろ氏(以下、まつもと):ちょっと変な子だったみたいですね。

菅澤:(笑)。出身は鳥取なんですよね?

まつもと:はい。鳥取の米子市ですね。

菅澤:地域の影もあるんですか?

まつもと:Rubyそのものにはあまり関係ないと思うんですけど、私は今も島根にいて、ずっと東京以外の地方を転々として今に至ってます。出身地が都会ではなかったので、都会の喧騒というか、人があまりにも多いところに行くとストレスが溜まるんです。仕事で新宿とか渋谷を歩いていると、人類半分ぐらいにならないかなと思います。

(一同笑)

菅澤:危険思想ですね(笑)。

まつもと:不穏なことを考えがちなので、島根でジッとしていたほうがいいんじゃないかなと。

菅澤:東京にはもう住みたくない?

まつもと:そうですね。

菅澤:のんびり育った感じなんですか?

まつもと:そうですね。子どものときはあまり競争とかない感じで、のんびり育っていますね。私の実家が本屋と近かったので、だいたいそこに入り浸って本ばかりを読んでいる子でしたね。

菅澤:どんな本ですか?

まつもと:活字だったら何でも読むので、百科事典は「あ」から始めて全部読んだんです。

菅澤:え!? 百科事典ですか!?

まつもと:百科事典です。平凡社百科事典全26巻とかそんな感じです。

池澤あやか氏(以下、池澤):もうちょっとおもしろそうな本が書店にはありそうですけどね(笑)。

菅澤:読み尽くしちゃったんじゃないですか?

まつもと:百科事典は自分の家にあったんですけど、書店にある本も大概読んだ感じです。

菅澤:それは立ち読みですか?

まつもと:立ち読みが多かったですね。(本屋さん)ありがとうございます。

菅澤:すごいですね(笑)。じゃあ本好き少年ですね。

まつもと:今でも活字を読みのは大好きなので、ご飯を食べていても成分表を見始めたりします。

菅澤:成分表見ちゃう(笑)。

まつもと:よく怒られるんです。

菅澤:成分表のどこを見るんですか?

まつもと:「あぁそうか、これは小麦粉が一番多いのか」と見ています。

池澤:コンピューターとの出会いはいつぐらいだったんですか?

まつもと:小学校6年生のときに、ワンボードマイコンという、半田付け部品をつなぐとコンピューターができるキットがちょっとだけ流行って、私の父がわりとガジェットやテクノロジーが好きだったので、それを買ってきて組み立てました。別にそれでは何もできないのでほったらかしてあったんですけど、小学校6年生のときにダンプリストを打ち込みました。

菅澤:ダンプリスト?

まつもと:コンピューター用のプログラムが16進数の羅列として雑誌に載っているんですよ。

菅澤:それを打ち込む(笑)。

まつもと:それの数字を全部打つんです。

菅澤:そんな小学生いますか?(笑)。

まつもと:いると思いますけどね。出力が電卓の8の文字のLEDしかない、7セグメントLEDなので、それ(16進数の羅列)を打って「実行」して、クルクル回って乱数が出る、というサイコロゲームをやっていました。

池澤:すごい。それはいつぐらいの年代のお話ですか?

まつもと:1977年とかそれぐらいですかね。

菅澤:コンピューターが本当にまだまだ浸透していなかったときですよね。

まつもと:そうですね。

池澤:今で言うとRaspberry Piのようなノリなんですかね? どうなんだろう。

まつもと:M5Stickというキットがあって、M5Stackは画面が付いているんだけどM5Stickはちょっとしか画面がない、あのレベル(笑)。さらにあれがキットになっている。

菅澤:親が買ってくれて、やりなよ! という感じですか?

まつもと:いや、親は自分のために買っているんですよ。

菅澤:親は親でそういうのが好きだったんですか?

まつもと:そうそう。(私が)中学校のときにプログラミングを始めたのも、(父が)横長のポケットコンピューターというものを仕事にでも使うかと思って買ってきて、それを息子が取り上げてポチポチとやっていたということですね。

菅澤:よくやりますね(笑)。

池澤:言語はBASICだったんですか?

まつもと:BASICですね。BASICなんだけどすごいサブセットで、変数名が1文字しか使えないんですよ。

池澤:じゃあ27?

まつもと:26文字しか使えない。

菅澤:当時ね。

まつもと:一番最初に入力したのは、たぶん数字を何円と入れると、そのお金を表現するためには一万円札が何枚、五千円札が何枚と、それぞれの通貨ごとの枚数を評価するという金種計算だと思います。剰余演算だけができればよくて、そういうプログラムがサンプルに載っていたのでそれをいじったのが最初で、そのあとはいくつかゲームを入れた気がしますね。

菅澤:そういう中学生は当時はめちゃくちゃ珍しいと思うんですけど、友達との会話はどうですか?

まつもと:友達とはコンピューターとは違う話をする(笑)。

(一同笑)

菅澤:友達からはどういうふうに思われていたんですか?

まつもと:中学生のときだと僕がコンピューターのことをやっているというのはほとんど知らなかったんじゃないかと。

菅澤:本人は家でめちゃくちゃやっていた。

まつもと:そう、家でやっていたんです。

興味は理系のものでも数学が苦手

菅澤:エンジニアになろうと思ったのはいつぐらいなんですか?

まつもと:高校のときには、プログラミングっておもしろそうだからこれをずっとやっていけたらいいなとは思っていました。

池澤:当時はプログラマーという職業は確立していたんですか?

まつもと:もちろん職業としてはあったんですけど、今とはだいぶイメージが違うかもしれない。職業としてのプログラマーは、例えば汎用機でCOBOLをやる人が圧倒的に多かった。

菅澤:今よりもぜんぜんやる範囲も狭いだろうし。

まつもと:だけど、プログラミングというのを職業にできるといいなとはなんとなく思ったのが高校生ぐらいで、大学もやっぱりコンピューターサイエンスがあるところを選びました。

菅澤:どういったところが好きになったポイントなんですか?

まつもと:プログラミングでおもしろいのは、コンピューターって教えた通りに動くところですね。普通のオモチャは自分が動かした通りに動く感じがあるんですけど、コンピューターは自発的に自分で判断する。犬に芸を仕込むみたいな教えた通りに動いているなって感じ。手を出して「お手」とやったら手をパッと出す。それを見てコンピューターってかわいいなと思いました。

(一同笑)

菅澤:かわいくなってくるんですね。

まつもと:この子は言うことを聞くし、かわいいなと思ってですね。

菅澤:もしエンジニアになっていなかったら、どんなことを今頃しているんですかね。

まつもと:プログラマーより前は、科学者になりたいと思っていたんですけど…

菅澤:ちょっとつながっているというか。

まつもと:私は圧倒的に数学が悪くてですね。

菅澤:そうなんですか!? 意外!

まつもと:数学があまりにもできなさ過ぎて挫折した感じです。

菅澤:できていたのはどんな科目ですか?

まつもと:成績が良かったのは国語、英語、社会ですね。

菅澤:そうなんですね!

まつもと:計算がぜんぜんダメなんですよ。

菅澤:いわゆる文系になるんですか?

まつもと:成績が良かったのはね。

菅澤:それは意外なパターンですね。

池澤:でも大学はコンピューターサイエンスの学部に。

まつもと:そうなんですよ。興味は完全に理系なんですよ。サイエンスは好きだし、SFも好きだし、プログラミングも当然好きだし。そういう興味はバリバリ理系なのに、数式と計算にまったく興味がもてなかったんですね。計算問題をさせられると、電卓でやればいいじゃんとか、コンピューターがやればいいじゃんとかぜんぜんモチベーションが上がらなくて、モチベーションが上がらないから覚えないんですよね。

そうすると試験の途中に「確かこんな公式あったよね? どんなだっけ?」と、公式を作るところから始めるので、ぜんぜん時間が足りないんですよね。

(一同笑)

菅澤:そりゃそうですよね(笑)。

まつもと:「確かこんな公式あったよなぁ」「どんなだったっけな?」「こういう法則あったっけ?」みたいなことを始めると、だいたい問題が解き終わらないうちに試験時間が終わっちゃう。

池澤:確かに。意外と暗記科目かもしれない。

まつもと:物理も科学も計算があるので、ダメなんですよね。

池澤:コンピューターじゃないから完璧な計算は難しいですよね。

まつもと:モチベーションが上がらないんですよ。でも生物は良かったですよ(笑)。

菅澤:生物は良かった(笑)。

まつもと:生物は計算がないから。

菅澤:当時からコンピューターを使っていたから「数式なんかいらないよ!」というところはあったのかもしれないですね。

まつもと:「コンピューターでやればいいじゃん!」って思ってたんですよね。とにかく数学が悪くて、本当に大学に入るのが大変でしたね。

(一同笑)

池澤:でもなんとかコンピューターサイエンスの学部に入って。

まつもと:本当に紛れ込めてよかったという感じです。

池澤:Rubyを生んでくれてよかった。

まつもと:大学が拾ってくれてよかったという感じですね。

菅澤:大学に感謝ですね。

まつもと:本当に。

(一同笑)

心理・言語・プログラミングの交点がプログラミング言語

菅澤:言語を作るのは確かに数学的なことと違うのかもしれないですね。

まつもと:私はもともと、人間の心理と人間の言語、プログラミングも含めて言語全般に興味があったんですよ。プログラミング言語を作るというのはその3つの全部に関わってくるんですよね。言語は言語だし、それからプログラミング言語なのでプログラム。実際プログラムを動かすためにはRubyの処理系を書かないといけないので。

さらに、使っている人はどういう期待をしてどういうことを感じるかということがRubyのデザインに影響するので、スティーブ・ジョブズの「Connecting the dots」じゃないですけれど、心理・言語・プログラミングの交点にあたるところが私のスイートスポットで、それがプログラミング言語だったと、そう思ってます。

菅澤:それはあるかもしれない。国語とか文章が好きだったというのはすごく活きているという。

まつもと:そうですね、その辺も含めてですね。

好きなことをやればいい 教育は放任主義

菅澤:例えば、お子さんにはどういう教育をするとか、どうさせるとかはありますか?

まつもと:好きにしてください。

(一同笑)

菅澤:ご自由にどうぞと。

まつもと:教育に関しては放任で、自分の興味があることをやればいいと思うんです。私はどちらかというとプログラミングを「何遊んでるの?」とずっと反対されてきたので。

菅澤:そうなんですか?

まつもと:当時、プログラミングは褒められる活動ではなくて、漫画を描いているのと同じだったんです。ノートに漫画ばかりを描いていると「そんなことしてないで勉強しなさい!」と親に怒られるわけですよ。それと同じようにノートにプログラムを書いていると「そんなことしてないで勉強しなさい!」と言われるんですよ。

その中で自分で選んでプログラミングして反対されてもしゃがんで、結局そこで今日までいったので、子どもが何かに興味があるとするならば、それをやればいいし、興味があるものがまだ見つからなかったら探せばいいし、それが別にプログラミングじゃなくても何でもいいと思っています。私は4人子どもがいるんですけど、4人ともプログラミングにはまったく関心がない。

菅澤:なるほど。

まつもと:決定的に跡継ぎがいない。

菅澤:何に関心があるんですか?

まつもと:一番上の子は保育士になりましたし、2番目の子は作業療法士になりました。3番目と4番目はまだ社会に出ていないのでこれからという感じです。

菅澤:なるほど。親子でペアプログラミングをすることはなかったんですね。

まつもと:それはそれで楽しそうですけど、そういう機会には恵まれなかった(笑)。

子どもの興味のきっかけになるプログラミング教育が理想

菅澤:小学校の教育でプログラミングを必修化するなど、特に島根ではそういう取り組みが増えていると思うんですけど。

まつもと:そうですね。

菅澤:特に賛成でも反対でもないという感覚ですか?

まつもと:全般的に言うと、プログラミングの適性があるかどうかは外からはわからないんですよね。あの子はプログラミングができそうと思うでしょ? でもだいたい外れるんですよ。

池澤:そうなんですか!? 

まつもと:あの子は数学ができるからプログラミングに興味をもつだろうとか、あの子はどちらかというとスポーツマンタイプだからプログラミングはどうだろう? と、みんな思うじゃないですか。あまり当たらないんですよ。

菅澤:当たらないですね。

まつもと:小学校のプログラミング科で、興味があってもなくても触るということをすると、その中から「おもしろい!」と思う子が出てきて、そう思う子はたぶん適性があるので、何かの方法ですくい上げられるといいなとは思っています。そういうプログラミング体験教育みたいなものには賛成しています。

池澤:今の日本のプログラミング教育はそんな感じですよね? 小学校で軽くアルゴリズムを学んで、そこからは課外活動につなげられればという。

まつもと:そういうのは私は理想的なかたちだなと思っていて。

菅澤:そうですね。

まつもと:逆に、例えば「ここにPythonのプログラムがあります。穴が3ヶ所空いているので埋めなさい」みたいな問題は最悪だなと思います。

(一同笑)

菅澤:それキツイですね(笑)。

まつもと:そういうのじゃないんだよ! とは思いますね。

菅澤:当時は教育はもちろんないし、情報もない中で好きで興味をもってやっていたわけですからね。興味をもつということが圧倒的に大事だということですね。

まつもと:そうだと思います。

(次回へつづく)