世界中のユーザーに支持されるプログラミング言語「Ruby」の開発者で、日本を代表するプログラマーのまつもとゆきひろさん。「活字中毒」と自らを語るまつもとさんに、故郷・鳥取県の本屋や大学の図書館で過ごした読書漬けの時間を振り返ってもらった。

「プログラミング言語との出合いは高校生のときに読んだSF小説がきっかけでした」
「プログラミング言語との出合いは高校生のときに読んだSF小説がきっかけでした」
画像のクリックで拡大表示

すご腕プログラマーにしてプログラミング言語オタク(失礼!)の「Rubyの父」としても知られていますが、どんな本に親しんでこられましたか。

まつもとゆきひろ氏(以下、まつもと):割と活字中毒の気配があってですね、ご飯を食べているときにも食卓に置いてある調味料の成分表を見始めるぐらいです。

 原点は子どもの頃にあります。鳥取県米子市出身なのですが、実家の真正面が本屋で、そこにずっと入り浸っていました。買いもしないで、立ち読みばかりでしたが。

 本屋はちょっとした通りにあって、同級生がその前を通るといつも座って本を読んでいる。だから同級生は、あの本屋がまつもとの家に違いないと思っていたようです。字を読み出すのは遅いほうでしたが、小学校で学んだら読書が一気に面白くなって。小学校から戻るとランドセルを置いてその本屋に行き、夕方になって閉まると家に帰って晩ご飯を食べる、という毎日でした。マンガや子ども向けの本が多かったのですけれど、とにかく何かしら読んでいました。家でも父が買った平凡社の『国民百科事典』を、「あ」の項から順番に読んでいくような子どもでした。

 特にSF小説が好きで、子ども向けに翻案したいわゆるジュブナイル版をよく読んでいましたね。ロバート・A・ハインラインの短編を翻案した『超能力部隊』(岩崎書店)や、アイザック・アシモフの『銀河帝国の興亡』(創元推理文庫)などがお気に入りでした。

 あとよく覚えている本は、父がある日購入した『ガモフ全集』(白揚社)です。ジョージ・ガモフという理論物理学者が物理学などについて分かりやすく書いた全部で十数冊もあるシリーズです。一巻目の「不思議の国のトムキンス」は、物理法則の異なる宇宙に夢の中で紛れ込んだおじさんがびっくりするという話で特に印象的なのですが、影響を受けて小学校5~6年生の頃は理論物理学者になりたいと思っていました。

お父さんはまつもとさん向けに『ガモフ全集』を買われたのですか。

まつもと:何の前触れもなかったので、父自身のためだったのか、私のためだったのかは分かりません。そういえば、父が同じ時期に山岡荘八の歴史小説も買ってきたのですけれど、そちらには全然関心を持てなかった記憶があります。コンピューターに興味を持ったのも、やはり父がある日突然買ってきた「ポケットコンピュータ」がきっかけです。こうして振り返ってみると、父の影響は大きいですね。父によって人生が変わったというか、方向性が決まったところがあります。

言語との出合いを教えてください。どこに引かれたのですか。

まつもと:高校生のときに読んだ『バベル-17』(サミュエル・R・ディレーニイ著、ハヤカワ文庫)というSF小説が面白くて、プログラミング言語に興味を持ちました。「バベル-17」は、宇宙戦争における敵陣営の暗号の名前です。主人公の言語学者が暗号解読に取り組み、それが暗号ではなく言語だということに気づいて、敵陣営の攻略法を解明していくストーリーです。

『バベル-17』(サミュエル・R・ディレーニイ著、ハヤカワ文庫)
『バベル-17』(サミュエル・R・ディレーニイ著、ハヤカワ文庫)
画像のクリックで拡大表示

 『バベル-17』では、敵側の宇宙人が言語をデザインするのですが、その「デザインされた言語」が知識を表現して主人公を助けてくれたりする。あまり言うとネタバレになるかな。でも、古典だから、もういいか。とにかく、「デザインされた言語」が、人の精神に影響を与える――ここが琴線に触れたのです。

 『バベル-17』を読んだときには意識していなかったのですが、「デザインされた言語」って、いわゆる自然言語(注:人間同士が意思疎通のために使う、一般的な言語)では極めて少ない。例外的にエスペラント語はありますが。一方、プログラミング言語は、自然発生しないのですべてデザインされたものなのです。

「ヒューマンオリエンテッド」な言語に

 高校3年生ぐらいのときには「プログラミング言語を作りたい」と思うようになりました。そのときに考えたのが、「デザインされた言語」が人間のプログラミングを支援する、さらに、プログラミングするときの気分を左右する、というアイデアでした。この発想が気に入って、実際に言語を作りたいと考えるようになったのです。

 だけど当時は、インターネットはまだ手元にないし、頼れるのは本しかない。本にしても大学の教科書みたいな内容のものしかなくて、高校生にはとても歯が立たない。できることと言えば、「ぼくのかんがえたさいきょうの言語」を空想して、ノートにその言語でプログラムを書くことぐらいでした。大学でコンピューターサイエンスを勉強し、卒業して会社に勤めながらスキルを身に付けてRubyを作るようになったのです。高校時代に「プログラミング言語を作りたい」と思い立ってから、実際に実現するまでに10年かかりました。

「『デザインされた言語』がプログラミングするときの気分を左右する」といえば、Rubyはプログラムを書く楽しさにこだわった言語ですよね。

まつもと:私はもともと、何か特定の問題を解決するためにプログラミング言語を作ったわけではありません。「作りたい」という思いが先で、解決すべき問題とか、取り組むべき分野があったわけではないのです。だけど、せっかく作るなら「いいプログラミング言語にしたい」という気持ちはありました。ただどんなプログラミング言語が「いい」ものなのかは、人や状況によって異なります。だからこそ、世の中にはプログラミング言語がたくさんあるわけです。

 Rubyの個々の機能については「これはあったほうがいい」「あれはなくても大丈夫」というように一つひとつ判断しながら作っていきましたが、グランドデザインというか、言語全体を言い表す言葉あるいは意図については、なかなか言語化できていませんでした。

 定義を見つける突破口となったのは、1998年、Rubyを初めて大勢の人たちに紹介する講演の機会でした。これまでの判断基準を振り返ってみると、「人間に向けた」「使い勝手のよい」「書いていて気分がいい」だったことが整理されて、「ヒューマンオリエンテッド」というキーワードにたどり着きました。2001年からはRubyカンファレンスが定期的に開催されるようになり、Rubyの意義について毎年考える機会ができました。

 『バベル-17』は、暗号だと思っていたのが言語だった、言語だと思っていたけれどツールとして役に立った、という話です。言語学における「サピア゠ウォーフの仮説」に基づいた小説で、ざっくり説明すると「人間の思考は、使う言語に影響される」というものです。これをプログラミング言語で言うと、「プログラマーの思考は、使うプログラミング言語に規定される」となります。この意味では、Rubyは結果的に、『バベル-17』のストーリーに沿っていたという感じもしますね。Rubyを作っているときには意識していませんでしたが、今はやはり『バベル-17』がプログラミング言語に興味を持つ原点だったと思います。

一冊の本をきっかけにした言語への興味がずっと続き、Rubyを作るまでに至ったのはすごいですね。言語を開発するに当たっては、どんな本を読んだのですか。

まつもと:言語が好きだったので、「自分で作りたい」という思いが継続したのでしょうね。Rubyの開発に取りかかる頃には、プログラミング言語の実装について、より分かりやすく解説した本も出てきていました。五月女健治さんが書かれた『yacc/lex―プログラムジェネレータon UNIX』(テクノプレス)を参考にした覚えがあります。

『yacc/lex―プログラムジェネレータon UNIX』(テクノプレス)
『yacc/lex―プログラムジェネレータon UNIX』(テクノプレス)
画像のクリックで拡大表示

 ただ、言語開発の土台となる知識については、大学時代の読書のおかげで身に付いたと思います。大学の図書館に古い論文なども含めて資料や本がそろっていたので、プログラミング言語の文献を片っ端から読む日々でした。振り返ると、小学生時代は向かいの本屋に入り浸ってずっと本を読み、大学時代は図書館にこもってずっと本を読んでいたわけです。

取材・文/田島 篤(日経BP 第2編集部) 写真/まつもとさん提供(人物)、スタジオキャスパー(書影)