Rubyの父の経歴

楓博光(以下、楓):まず、Matzさん(※まつもと氏のニックネーム)から経歴を簡単にお話しいただいてもよろしいでしょうか。

まつもとゆきひろ氏(以下、まつもと):そうですね。32年前の1990年に大学を卒業して、プログラマーとして普通に就職したんですけれども、もともとプログラミング言語が大好きだったので、その傍ら、趣味でプログラミングをしていました。それで、「いつか作るか」と思っていた言語にとうとう取り掛かったのがRubyです。転職をするうちに、だんだんRubyに時間を使う割合が増えてきて、2001年か2002年ぐらいから、ほとんどRubyでフルタイムという感じになっています。

なので最初の10年ぐらいは普通のプログラマーとして働いていたんだけど、それ以降20年ぐらいはオープンソースソフトウェアの開発者としてご飯を食べています。今回は、学生さんが多いので、みなさんがこれから経験されるかもしれない普通の仕事もちょっとわかりますが、私がそれをしていたのももう20年ぐらい前なので、だいぶ今と時代が違うかもしれないということは、事前に注意としてお伝えしておきます。

この技育祭やサポーターズさんの活動の中で、若い人の前でお話しする機会が増えて、その点で自分もあらためてキャリアであるとか、人生設計と言うと大袈裟ですけど、人生の選択について考える機会がたびたびありまして。それはわりと転機になったので。楓さん(楓博光氏)にはちょっと足を向けて寝られない感じがします。自分の活動の幅が広がった気がするので、サポーターズにはすごく感謝しています。

ひろゆき氏とよく間違えられる

まつもと:今回講演が多いので、どうしようかっていう話をしたら、西村博之さんや落合陽一さんは質疑応答でやるという話だったので、じゃあ私もそれでお願いしますということで。「ひろゆきだけど何か?」というのがあったので、まあちょっと。私と彼、よく間違えられるんですけど。

:実際そうなんですね。

まつもと:そうですね。もうだいぶ前になるんですが、直接お会いしたことがあるんです。「私はよくひろゆきって言われるんですよ」と話をしたら、向こうも「Rubyを作ったんですってね」と言われたことがあると言っていました。「そうかー」と言って、一緒に並んで写真を撮ったこともあるんですけど(笑)。

そういう縁もあるので、同じスタイルで対応できるといいなと思って、今回は質疑応答というスタイルを取らせてもらいました。

:ありがとうございます。

まつもと:300人ぐらいの方が聞いてくださっているということなので、ぜひなんでも聞いてもらえればと思います。よろしくお願いします。

:よろしくお願いいたします。ということで、2日前は西村博之さんに「ひろゆきだけど何か質問ある?」というセッションをしていただいて、本日はまつもとゆきひろさんが「(まつもと)ゆきひろだけど何か質問ある?」ということで、ちょっとこれ、みなさん混乱しないようにね。

まつもと:だいぶ紛らわしい。

:あえて紛らわしいタイトルにしております。それでは先ほどお伝えしたとおり、まず事前質問からピックアップしていきたいと思います。Matzさんも、チャットで「これ答えたいな」という質問があったら、随時お答えいただいて大丈夫です。

17歳の時にプログラミング言語を作りたいと思った

:それではさっそく、事前質問からピックアップをしていきたいと思います。では最初の質問です。「Rubyを作ろうと思ったきっかけと、そこからの苦労などがあればお教えください」ということです。いかがでしょうか。

まつもと:もともと私はプログラミング言語にすごく興味があったんですね。高校2年か3年生ぐらいの時に、世の中にはプログラミング言語がたくさんあって、それらは人間が意図を持って作ったということに気がついた時に、「だったら自分でも作れるんじゃね?」と思いました。当時はスキルも能力もプログラミングの知識もなにもなかったので、作りたいなって思っただけだったんですね。

ただ、そのあともずっとプログラミング言語に興味を持っていたので、大学ではコンピューターサイエンスを専攻して勉強をしました。実際に就職をしてプログラマーとして活動する中でプログラミングスキルも上がったので、そろそろできるんじゃないかなと思って作り始めたのが、最初に作りたいなと思ってからちょうど10年後という感じになります。

:何歳ぐらいの時ですか。

まつもと:17歳で作りたいなと思って、27歳で作り始めました。

:そうなんですね。

SIerで働きながらRubyを作り上げた

まつもと:次は、苦労ですね。結局、好きでやっている趣味なので、あんまり苦労はないな(笑)。ただ、作るのはすごく時間がかかるので、最初のバージョンを作るまででも2年近く、リリースするまでは3年近くかかりました。そういう意味だと、すごく時間はかかったな、ずっと作業を投入していたなっていう印象があります。

:それは働きながら作られていたんですか。

まつもと:そうですね。普通に昼間は働いて夜に作ったり、あるいは当時は景気が悪くて暇だったので(笑)、昼間仕事をしながらですね。

:その時は、いわゆるサラリーマンとしてSIerにいらっしゃったんでしたっけ。

まつもと:そうですね。そういう会社にいましたけど、私は社内システムを作っている部署だったので、顧客がいないんですよね。かつ、Rubyをちょうど作り始めた時は、新規開発はお金がかかるからもうやめましょうって言われていました。

人員も縮小してメンテナンスモードに入りましょうという時で、私はメンテナンス要員だったので、正直言うとほぼやることがないんですよね。だいぶ暇だったので、なんかいっちょやるかと作ったらRubyができちゃったっていう感じですね。

今27歳でプログラミング言語を作るとしたら、どの言語を使うか

:質問をいただきました。「開発当時だとCRubyでしたが、今27歳で言語を作るとしてもCを使いますか」。

まつもと:どうだろう。今でもそうなんですが、当時私が一番得意だった言語がCだったので、Cを使ったんです。27歳の私が現時点で得意な言語は何かによって変わってくると思うんですね。

:得意なもので作ると。

まつもと:そうですね、プログラミング言語を作るのに向いた言語と向かない言語があるので、プログラミング言語の実装に向いた言語の中で、自分の一番得意なもので作るんじゃないかなと思います。

Cが得意だったらCで作るでしょうし、今だったら例えばGoとかRustとかも選択肢に入ると思います。27歳の私がそれまでのキャリアで積み上げてきたものによって変わってくるんじゃないかなと思います。

名前をつける時に最終候補に挙がったのは“Coral”と“Ruby”

:なるほど。これも質問をいただいています。「Rubyの名前の意味ってありますか」。

まつもと:Rubyより前にPerlという言語があって、この名前は真珠から取られています。それがあるので、名前をつける時に、宝石の名前がいいんじゃないかなと先輩に相談して、いくつか候補が挙がりました。

宝石の名前ってだいたい長いんですよね。ダイヤモンドとかサファイアとかね。やはりプログラムの名前ですし、コマンドの名前も頻繁に打つから短いほうがいいよねって話になって、Coral、いわゆるサンゴと、Rubyの2つが候補に残ったんですね。

コーラルはLで終わるし、ナントカランゲージとかで語呂合わせの略語みたいなものを作りやすいかなと思っていたんだけど、でもルビーのほうがきれいだし、1文字短いし、ルビーにするかと言ってRubyに決めたのが1993年の2月ですね。

:もう何年前ですかね。30年近く前?

まつもと:そうですね。2022年で29年なので、もうすぐ30年ですね。

:じゃあ、Coral on Railsになっていたかもしれないわけですね。

まつもと:なっていたかもしれないですね。でも名前はけっこう重要なので、あんまり人を惹きつけないCoralという名前だったら、Rubyはこんなことにはなっていなかったんじゃないかなって思います(笑)。

:なるほど。それが功績を残した1つの要因であると。

まつもと:名前の成功でしたね。

心理学と人間工学の交点に“プログラミング言語を作る”があった

:リアルタイムで質問をいただきました。「Rubyを作る際、最初の1歩ってどんな感じだったんですか」。いざ作り始めようとした時の、本当の最初の1歩というところですが。

まつもと:名前を決めたっていうところから(笑)。

:先に名前だったんですね。

まつもと:はい、名前を先に決めましたね。だから名前を決めた1993年2月24日の時点では、Rubyのコードは1行も書いていなかったはずですね。

:へええ。

まつもと:次に何をしたかというと、Yaccというコンパイラを作るツールがあって、それに言語の文法を書くと、文法を解釈するツールのソースコードを吐いてくれるんですよ。今でも使っているんですけど、そのYaccを使って、どういう文法の言語を作ろうかなと考えるところから始めましたね。

やはり私は言語の文法に一番興味があって、「どういう文法がYacc記述だと使いやすいかな」みたいなことを考えるのが好きだったので、文法から入りました。

:ほうほう。先ほどもプログラミング言語自体に興味があったというお話でしたが、それはどういうところにおもしろみを感じていたんでしょうか。

まつもと:高校生の時のことだから、もうだいぶ忘れているんだけど、あとから振り返ればそうだったんじゃないかなって思うことの1つは、私はプログラミングがすごい好きだったんですよね。なんだけど、その当時私が使えるプログラミング言語はBasicしかなくて。プログラミング環境としてはあんまり人間に優しくない感じだったんですよ。

:そういう時代だったんですね。

まつもと:gotoでプログラムを制御するし、それもjump先はラベルじゃなくて番号とかだし。だいぶつらい感じだったんです。

そういう中で、ある日、ほかのプログラミング言語を勉強したら、だいぶマシな環境……なんていうか、プログラミング体験があるなということを感じて。言語によってプログラミング体験がずいぶん変わってくることに気がついたんですね。

もう1つ、私は心理学みたいなものにも興味があった。人間が、あるものに対してどういうふうに感じるかという人間工学のようなところに興味があったんですね。

そうすると、プログラミングの人間工学というんですかね。プログラミングが好きで、言語も好きで、心理とか人間工学とかに興味があって、そのちょうど交点のあたりに“プログラミング言語を作る”というのがあった。

自分で作らないと、他人が決めたことを学ぶだけなんですけど、自分が作ったら、こんなアイデアを使ったら体験がどんなによくなるか、みたいなことがデザインできるんですよね。だから17歳の私は、ただ単に言語に興味があるだけではなくて、言語を作りたかったんですね。だけど能力が追いつかなかったので、能力が追いつくまでに10年かかったという。

:なるほどです。これは人間工学との組み合わせだったわけですね。

まつもと:そうですね。この場合は言語ですけど、人間がツールを使った時に、どういうふうに感じるかというところにも興味があったんですね。

:ありがとうございます。

会社にいる間はけっこうな時間をRuby開発に使っていた

:これも今質問がきていますが、「ちなみにRuby開発を始めた頃は、1日何時間ぐらい作業に費やしていましたか」。

まつもと:ぜんぜん覚えていないんですが、けっこう使っていたと思います。さっきも言ったけど、Rubyを作り始めた1993年頃、私はほぼ仕事がなくて窓際族だったんですね(笑)。会社に行って日報を書くのと、たまにメンテナンス依頼の電話がかかってくるので、それに対応する以外の時間はだいたいRubyを作っていたような気がします。

:それぐらい熱中して作られていたんですね。

まつもと:そうですね。わりと時間をかけて作っていましたね。そうは言っても、メールを読んだり書いたり、ネットを見たりする時間もけっこうあったので、プログラミングをしていない時間もあったと思うんだけど。会社にいる間はけっこうな時間、Rubyを作っていましたね。だいぶ給料泥棒な感じがしますけど(笑)。

:そんな裏側があったんですね。当時の上司たちは何を思っていたんだろう(笑)。

まつもと:そうですね。当時の上司も、なんか見て見ぬふりっていうんですかね。

:それに関連して質問があります。「Matzさんはもともとサラリーマンだったと聞きました。どんなサラリーマンだったんでしょうか」。

まつもと:実は今でもサラリーマンなんですけども(笑)。

:え? そうなんですか!?

まつもと:はい。島根にあるネットワーク応用通信研究所という会社に籍を置いて、毎月給料を貰っているので、その時から今まで、サラリーマンなのは間違いないです。

:そうなんですね。

まつもと:どんなサラリーマンだったか。

:なんかそれこそ上司に従順だったりとか、どんな感じの……。

まつもと:わりとこう、なんていうのかな。言いたいことはハッキリ言うので、たぶん上司からするとちょっと扱いにくいタイプの部下だったんじゃないかなという気がしますね。

:それは何か信念があったんですか。

まつもと:わがままを言ってもしょうがないんですけど、私の所属しているチームのゴールは良いソフトウェアを作ることだったので、「これこそが良いソフトウェアだ」みたいなことに関しては、わりと新卒の頃からハッキリ物を言っていたような気がします。

「こういうふうにしたほうがもっと良いソフトウェアになると思います」とか、そういうことは若いうちからけっこうハッキリ言っていた気がしますね。

:しかも気づいたらプログラミング言語を作っていたと(笑)。

まつもと:そうですね、はい(笑)。

(次回へつづく)