パーソルグループとSky株式会社は、sightを通してエンジニアの自分らしいキャリアを応援しています

高校時代にプログラミング言語仕様を構想──まつもとゆきひろ氏がRubyを開発する前史を語る

プログラミング言語Rubyの開発者、まつもとゆきひろ氏。「Matz」の愛称で世界のハッカーたちに親しまれ、Rubyコミュニティを率いて、開発者と企業の間の繋いでいる。2020年はRuby最初のリリースから25年を迎えるということもあり、あらためてプログラミング言語開発の原点、企業内エンジニアとして葛藤した日々、これからのRubyの展望、そしてプログラミングに情熱を燃やす若い世代へのメッセージなどを聞いた。

まつもとゆきひろさん

Profile

まつもと ゆきひろ氏

1965年大阪府生まれ。鳥取県米子市で育つ。90年、筑波大学卒業後、新卒でシステム開発会社、日本タイムシェアに入社。同社在籍中の93年、プログラミング言語Rubyの開発に着手。94年、同じくシステム開発企業トヨタケーラムに転職し、95年にRubyを発表。Rubyが世界のプログラマたちから支持を集める中、97年にネットワーク応用通信研究所 主任研究員(現在はフェロー)に就任し、島根県松江市に移住。現在もmrubyを中心に自ら実装を続ける現役エンジニアでもある。一般財団法人Rubyアソシエーション理事長のほか、多くの企業の技術顧問を務める。

「どうしても言語を作りたい」と研究室の教授に直談判

小学校6年生の時に父親にワンボードマイコン、中学に入るとポケットコンピュータを買ってもらい、それでプログラミングを始めました。当時はホビー層向けのコンピュータ雑誌がいくつもあって、そこに紹介されているプログラムを打ち込むと簡単なゲームが作れました。そうやって遊んではいましたが、その頃からコンピュータサイエンスやソフトウェアツールへの関心が強かったと思います。

高校生になると自宅にパソコンPC8801がやってきて、家に帰るとそれでBASICを打ち込んだりしていました。そのうち、なんとなくではあるんですが、プログラミング言語を作りたいと思うようになりました。もちろん言語を作るだけの知識はなかったのですが、それでも、私なりに言語仕様を考えてノートに書き出していました。今は手元にそのノートがないので、具体的にどんなことを書いたかはもう覚えていませんが、こういうプログラミング言語があったらいいなという夢のような話です。

学校にはプログラミングをやっている友人はいなくて、コンピュータクラブもない。そもそも校舎の中にコンピュータというものがなかった。だから、コンピュータに触れるのは自宅に帰ってからです。

ただ自室にこもってプログラミングしているよりは、コンピュータに関する本や雑誌を読んでいる時間の方が長かったかもしれません。もちろん、マンガも小説も読んではいました。活字中毒の傾向があった上、実家の向かいが本屋さんだったので、そこに入りびたっていた。友人が家に遊びに来ると、「えっ、本屋が自分のうちじゃないの?」って。それぐらいいつも本屋さんにいました。

大学では本格的にコンピュータサイエンスを勉強しようと、情報学科がある大学を探し、選んだのが筑波大学。1985年に「つくば科学博」が開かれるので、会場に近い大学がいいなというのも進学理由の一つです。大学の授業でプログラミング言語の歴史を学び、やはり言語を作るのは難しいことだなと思うようになります。一旦はその夢を諦めていたのですが、大学4年に運よくプログラム言語研究室に入ることができたんです。そこであらためて言語への関心が蘇りました。

まつもとゆきひろさん

当時、研究室を主宰していたのは中田育男先生(現・法政大学情報科学部コンピュータ科学科教授)。日立製作所の中央研究所時代に、FORTRANのコンパイラを日本で初めて作った人で、コンパイラ研究の日本での第一人者です。実は高校時代に中田先生の本を読んでいたことがあり、ぜひその先生の下で勉強したいと思っていたのです。

ただ、研究室は言語そのものを作るというよりは、コンパイラを開発するためのツールや、コンパイル性能を最適化するための方法など、言語処理系の実装方法についてが主な研究テーマでした。それでも私が「研究室でのテーマではないが、どうしても言語を作りたいんです」と訴えると、先生は「仕方ないな」と認めてくださって。それで言語を作ることができ、卒論のテーマにもしました。

どんな言語を作ったかというと、C言語をオブジェクト指向型にした言語にC++がありますね。1980年代のC++はオブジェクト指向の機能という意味ではまだ完全ではなかった。一方で、あまり有名ではないけれども、Eiffel(アイフェル)という言語があります。これはAda(エイダ)という言語をオブジェクト指向化するという発想で作られたものなんです。

そこで私は、AdaをEiffelにするようなアプローチを、Cに適用したらC++とは違うものだけど、Cをオブジェクト指向化した新しい言語が作れるんじゃないかと考えたのです。そこにいくつか自分なりの思いつきを放り込んで、半年ぐらいかけて開発しました。もちろん、これはRubyではありません。オブジェクト指向という点では共通性がありますが、まったく違うタイプの言語です。それでプログラムを書くと、Cに変換されて、それをコンパイルすると動くものでした。

バブル崩壊で暇になった時間に始めたRuby

高校生時代からの夢だった、新しいプログラム言語を、なんとか動くものとして作ることができた。そういう達成感もあり、大学院には進学せずに就職することにしました。

中田先生のツテで日立のような大企業を紹介してもらう可能性があったかもしれません。でもその頃には、自然があふれてのんびりしている筑波のような田舎の環境にすっかり馴染んでいました。つくばエクスプレスが開業するずっと前、1990年頃の話です。

結局、本社は東京ですが、職場は浜松にあるソフトハウスに就職します。ちょうどバブル期で、社員2,000人の会社が1年に200人も採用していた時代でした。プログラマを経験不問で大量採用していて、200人の中で大学でコンピュータサイエンスを専攻していたり、プログラム経験がある新入社員は私を含めて6人しかいませんでした。

その6人はプログラム研修が必要ないので、社内ツールの開発という部署に即戦力として配属されます。新人にもかかわらず、裁量をもってソフトウェア開発ができたのはラッキーでしたね。コンピュータサイエンスを専攻していた社員が少なかったので、大切に扱ってもらえましたし、自由にのびのびと仕事ができました。

まつもとゆきひろさん

ところが、91年に入るとバブルが崩壊し、いきなり私の会社も景気が悪くなります。入社時は年間6カ月分も出ていたボーナスも、1カ月分くらいに急減。その頃、私はすでに結婚していたので、辛かったですね。以来、まつもと家では「ボーナスは変動するものだから、家計を立てるときはそれに頼っていてはいけない」という家訓が生まれました(笑)。

社内システムのツール開発だけでは売上げが立たないので、私たちの部署は解散。みんな外で仕事を取ってくる営業に配置転換となります。とはいえ、私たちが作ったツールは社内で動いているので、そのメンテナンス要員として私一人だけが残されたんです。

メンテナンスといってもたまに電話対応するぐらいで、やることがない。いきなり閑職になってしまった。マネージャーも他の部署との兼任なので、私ばかりに関わっていられない。ただ、パソコンを取り上げられることはなかった。そこで、仕事の合間に一つ言語でもと思って作ったのがRubyだったんです。

「興味ある人いませんか」の呼びかけに30人が手を挙げた

新しいプログラミング言語を開発するにあたって心に決めたのは、まず自分が実際に使う言語であること。この業界には「Ph.D.ランゲージ」という言葉があって、コンピュータサイエンスの博士論文を書くために言語を開発するけど、自分では使わず、論文が通ったらメンテナンスもしないことを指す。そういう言語だけは作りたくなかったんです。

作ることだけを目的にした言語ではなく、趣味であれ、業務であれ、自分がプログラム開発のために実際に使う言語を作りたい。しかも当時流行っていたPerlのようなスクリプト言語がいいんじゃないかと。大学時代からオブジェクト指向という考え方に傾倒していたので、オブジェクト指向をきちんと組み込んだ言語にすることも重要なポイントでした。

Ruby開発のきっかけをくれたのは、同じ会社の2年先輩で、コンピュータ関連の本も書いている人でした。次回作のテーマとして、「実際にオブジェクト指向型の言語を作る過程を辿りながら、オブジェクト指向を理解する」という書籍執筆の準備を進めており、その言語開発の部分をやらないかと誘われたんです。結局、その企画はボツになり、本は出なかったんですが、私の中では「言語を作る」と、前のめりな気持ちだけは残りました。

まつもとゆきひろさん

1993年の2月から開発に着手して、画面に「Hello, World!」を出力できるようになったのが8月のこと。プログラミング言語といっても、手の速い人なら2週間とか1カ月で作れてしまうものです。Javaも最初のバージョンのリリースまでに10日しかかかっていないという話ですから。私の場合、仕事をしながらの作業ですし、興が乗らずに途中で放ったらかした期間もありますから、半年くらいかかりました。

最初の頃は、あくまでも自分の趣味の一環。あるいは自己研鑽のつもり。誰かに使ってもらえればラッキーだけど、他の人に見せるとか、世界で展開するなんて全く考えていなかった。一人コツコツと爪楊枝だけでお城の模型を作っちゃうような人がいるじゃないですか。それと近いノリだったんです。

1年ぐらい経つとだんだん形になって、プログラミング言語として使えるようになってきた。もう少し広い範囲の人に意見を聞きたいと思うようになり、インターネットのコミュニティで「こんなの作っているんですが、興味ある人いませんか」と呼びかけたら、30人ぐらいの人が手を上げてくれました。早速メーリングリストを作り、意見を交換するようになりました。

プログラマの世界では、昔も今もプログラミング言語に関心を持つ人はそれなりにいるんです。自分で言語を開発する人はもちろん少ないのですが、新しい言語が出たと聞いたら触ってみたいと思う人は少なくない。そうした人たちと出会えたことが、Ruby開発の大きな励みになりました。