インタビュー記事

interview

第2回 まつもとゆきひろ氏

matz_main

今回はRubyのパパであるMatzにお話をお聞きしました。今や世界のハッカーにとってのアイドル的存在であるMatzの生い立ちやRubyが生まれるまでの秘話?などをお話いただきました。2006年の途中から東京でのMatzの講演にはかかさず出ていたり、半分、追っかけみたいな生活をしていましたが、そのMatzと1時間独占インタビューができたというのは本当い感無量です。このインタビューを見ていただければMatzの人柄を十分にご理解いただけると思います。

※取材日は、2009年1月です。所属などの情報は当時のものそのままです。

川井:本日はよろしくお願いします
Matz:よろしくお願いします
川井:まずは子供の頃のお話をお聞きしたいのですが、幼少の頃にコンピュータに触れるきっかけとかってありましたでしょうか?
Matz:1970年代の終わりくらいにTK-80とかマイコンブームというのがあったんですよ。ワンボードマイコンですね。この頃は完成品じゃなくて,キットなんですよ。私の父親は全然コンピュータと関係ない仕事をしていたんですが、元来そういった技術系のものに興味がある人で、日本橋の電器屋に行って10万くらいするパナファコムのL-Kit16とかを買い込んで、家に持って帰ってきてはんだごて使って組み立てて、「動いた」って喜ぶわけです。当時のコンピュータって動いただけだと何もできないんですが、父は動かすことで満足してしまったので、その後放置されていたのをまだ小さい私が電源を入れていじっていたんです。付録の冊子にプログラムの16進DUMPがついていたので、それを打ち込んで7セグメントLEDがぐるぐる回るのを見て「動いた、動いた」っていう風に言っていたのが、コンピュータとの最初の遭遇ですね。
川井:それはいくつくらいの時ですか?
Matz:小学校6年生くらいの時ですかね。
川井:もともと自分で興味をもってコンピュータの世界に首を突っ込んだというよりは、環境の影響の方が大きかった感じですか?
Matz:環境もあったと思いますが、もともと理系の分野に興味があったんだと思います。例えば当時からSFが好きだったり、父が買って来た物理の本を読んだり、知識欲は旺盛で理系や技術の世界に関心のある子供だったとは思います。そんな子供だったので、自然と目の前にあるコンピュータで遊んだって感じだと思います。ただ、当時はプログラミングまでは行かなくて、何本かプログラムは打ち込んでLEDをぐるぐる回したり、サイコロを乱数で表示させたりまでで終わってしまってその後は続かなかったんですよ。やっぱりハンドアセンブルは当時の小学校6年生にはきつくてですね(笑)、インストラクション表ともあったとは思うんですけど、プログラミングまでは届かなかったですね。
川井:数学が苦手って言ってたと思うのですが、理系に興味があるということは数学も好きという気がするんですが。
Matz:理系っぽい事への興味と成績は全然関係ないということで(笑)、高校は進学校っぽいところへ行っていたのですが、理系だったんですけど,得意科目は国語、英語、社会で、数学や物理などの成績は悪かったんですよ。
川井:それは面白いですね
Matz:計算が入るとモチベーションが維持出来なくて、とたんに駄目なんです。電卓叩けばいいじゃんて思っちゃったり。あとは定理に関心がなくて覚えられないといった具合でした。多分、机の上に電卓があって、目の前に定理が書いてある紙が貼ってあったら、試験もそこそこ出来たかも知れないんですけど、そんな試験は高校生の頃にあるはずもなく(笑)、本当に成績が悪かったですね。
川井:そうなんですね(笑)。
Matz:本当に、出来なかったんです。
川井:ある意味、機械がやってくれる部分は人間がやらなくてもいいという考え方があったのかも知れませんね。
Matz:そうかも知れませんね。まったくやる気にならなかったですね。だから、計算が入る物理、化学は全然駄目でしたし、数学も定理を思い出さないから、試験中に定理を作ったりするわけですよ。「こういう関係にあるからこういう定理があるに違いない」とかやってたら時間が足りるわけないですよね(笑)。もう全然駄目でしたね。
川井:それは面白いエピソードですね(笑)。
Matz:それは高校の頃の話なんですけどね。ちょっとさかのぼりますが、プログラミングとの最初の接触はやっぱり父親の影響が大きくてですね、中学校3年生の時にSHARPのPC-1210というポケットコンピューターを父親が買って来たのですが、それは400ステップしかないんですよ。ステップというと大体BASICで1行相当ですね。なので最大400行しか書けない関数電卓って感じでした。そのポケコンにプチプチとプログラミングを書いていました。後にメモリ増設して1400ステップまでは書けるようにしましたけど(笑)
川井:3倍以上ですね(笑)
Matz:それを機にプログラミングというものに接して、しばらくBASICでプログラムを書いてたんですが、リアルタイム入力はできないし、グラフィックは出来ないし、何もできないんです。でも、マニュアルにサンプルプログラムとかが載っているので、それを打ち込んで改造してみたり、それをアレンジしてみたりしてました。
川井:なるほど。
Matz:今でも思えているものがあるんですけど、Lunar Landerって知ってます?
川井:いえ、ちょっと分からないです。
Matz:もともとはBASICで書いた月面着陸のリアルタイムゲームですけど、どんなゲームかと言いますと、月に着陸するのに、燃料を噴射してだんだん減速して行って、丁度月面に到達するときに速度0で接すると着陸成功、逆に速すぎたり遅すぎたりすると着陸失敗というものなんです。でも、私の持っていたポケコンは当然のようにリアルタイム入力がないので、そんなことできないわけですよ。で、どうするかっていうと、画面上に今高さがどのくらいで、速度がどのくらいとかっていうのが出るんですが、それで燃料をどれくらい投入するかって入れてエンターとかってやると、数秒後の高さや速度、燃料などが表示されるんです。それを見て「今度は高さがいくつになって、速度がいくつになった、うーん」とかいいながら入力してやると段々進んでいくんですけど、ちょうど高さが0の時に速度が0だと着陸成功、速すぎると失敗、燃料がなくなっても落ちちゃうので失敗てな感じなわけです。
川井:プログラミングというより計算でやるゲームですね
Matz:そうです。計算だけのゲームなんですけど、そんなことをやってて、プログラミングに入ったのが最初ですね。
川井:ゲームが1つのきっかけだったんですかね?
Matz:最初の1歩はゲームだったかもしれないですね。でも、その後はほとんどゲームはしてないですね。
川井:エンジニアの方はゲームから入られる方多いですよね。
Matz:多いですね。普通はそのままゲームに行くと思うんですが、私は高校くらいからはほとんどゲームとかはやっていなくて、私とか私たちのちょっと下の世代だとベーマガ(マイコンBASICマガジン)という雑誌があって、そういう雑誌にプログラムのリストが載るんで、それを一生懸命コンピュータに打ち込んでゲームするというのがよくあったんですけど、私の場合はそういうゲームはあんまりやらなくて、コンピュータの本を読むことの方が楽しいかなと思っていました。「いつか、ちゃんとしたというかまともなコンピュータが手に入ったら、やりたいことがある」とかって言って本を読んでるという感じでしたね。
川井:本はかなり買い込んでいたのですか?
Matz:ASCIIとかの雑誌は買っていましたけど、あとはほとんど立ち読みでした。コンパイラや人工知能の本やなんか読んでたんですが、5,000円や7,000円くらいするので高校生じゃなかなか買えないですよね。難しい本を仕入れた上に立ち読みを許してくれた本屋さんには感謝してます。
川井:当時から、既に仕事としてプログラミングをやっていくとか、生涯これをやっていくんだという気持ちは片隅にでもあったんですか?
Matz:高校を卒業して、情報系の学校に進学しようと思った時には、ぼんやりとですが、これでずっとやっていこうとは思っていました。ただ、父親は反対していて、機械系エンジニアとか、そっちの方面に行って欲しかったみたいで、コンピュータは趣味にしておけとか言われたりしましたね。まだ1980年代の前半で、コンピュータがまだちゃんとした職業になっていくかどうかなんて分からない時代だったので、そうは言われましたけど、コンピュータのことをちゃんと勉強したかったので、親の言うことを聞かずに情報系に入学しました。

川井:以前、横浜で講演を聞いたときに、紙でプログラミングをしていたと聞いたことがあるのですが、それは一体何だったのでしょうか?
Matz:それは、紙でプログラミングというより言語デザインをしていたんですね。高校の頃には,BASICはちょっと駄目だろうって思っていて、世の中にもう少しマシな言語はないだろうか思っていろいろ探していたんですよ。で、見つけた本がPascalの本だったんですね。それはお小遣いをはたいて買って(笑)、結構時間がかかりましたけど、最初から最後まで読み通したんですよ。もちろん、手元にPascalが動くコンピュータはないので、実際に実行できないんですが、なんだか分かった気になって、「私はPascalをマスターした」とか、その気になって。まあ、実際にマスターしたかどうかはともかく、「Pascalっていうのは、私の今まで知っていたBASICよりもずっといい言語だ。世の中にはBASICよりもいい言語が存在するんだ」って思ったんです。で、その後,だんだん知識が増してくるとBASICとPascal以外にも世の中にはたくさん言語が存在することが分かってきて。で、その言語ひとつひとつが誰かが創ったから存在するわけですよね。でも、BASICには満足できなかったし、PascalもBASICよりはずっとよかったけど、完璧だとは思わなかった。「だったら私が作ってもいいんじゃないかな」って思ってですね、それで、ノートを引っ張り出してきて、ノートに「こんな風に書ける言語があったらいいな」といった具合に書きだしていったわけですね。まだ見ぬ言語でプログラムを書いて、「こんなだったらいいかな」っていうようなことを書いていたのが高校2年か3年ぐらいのことですね。
川井:高校生の時にベーシックもBASICもPascalも完全じゃないないって思って、自分で言語を作ろうという発想をしたってことなんですね。すごいですよね。
Matz:はい。ただ、普通の高校生がプロになろうと思っているわけでもないけど漫画を描いたりするじゃないですか。あれとあまり変わらないですよね。何も実体は伴わない感じです(笑)
川井:そういうのは、周りの人たちからはどんな風に見られていたんですか?
Matz:コンピュータやっているという時点で、すでに異常だったんですよね(笑)。学校では、コンピュータの話をしても関心を示し分かってくれる人は居なかったので、殆んどその話はしませんでした。漫画やアニメの話をする友達は多かったので、普段はそんな話をしたりしていました。あとは、変なクラブに入っていたので、その仲間と遊んだりしていましたね。
川井:ちなみに、その変なクラブって言うのは?
Matz:超科学研究同好会というクラブに入っていました(笑)
川井:それはまたどんなクラブなんですか(笑)??
Matz:一応、もともとの主旨は超能力やUFOを研究するというテーマだったんですけど、なんでもやってましたね。とにかく遊んでる部でしたね。
川井:コンピュータやプログラミングの他にも、結構色々なことをやられていたわけですよね。
Matz:そうですね。自分でプログラミングをするのはおかしい人で、世の中にはそういう人はいっぱいいるけど、私の周りにはいないよねっていうそんな感じの高校生でしたね。
川井:なるほど。
Matz:それで、大学に行ったら、一応、情報系の学部なんで、多くの人はコンピュータをやりたいから入学したという人で、例えば自宅にコンピュータがあって、ゲーム作りましたって人もいっぱいいて、「そういう人たちはやっぱりいたのね」って思ったんだけど、どうも話をしてると、プログラミング言語を作ろうって人はやっぱりいなくて(笑)、やっぱり小数派だったのね。。知らんかった(笑)みたいな感じでした。
川井:みんな言語を作ろうと思っているに違いないと思ってたんですね。
Matz:まあ、全員ではないにしても、情報系の学部なら3人に1人ぐらいはいるかなって思ってたんですけどね。全員に聞いて回ったわけじゃないですけど、私と同じ学年に80人居ましたけど、見た感じ、プログラミング言語を作ろうと思っている人はいなそうでしたね(笑)
川井:独自性は随分前から発揮していたんですね(笑)
Matz:まあ、変だったんですよね(笑)
川井:大学では、プログラミングの勉強に没頭した感じですか?
Matz:没頭したというわけではないですけどね。ちゃんとしたプログラミングをできる環境が手に入ったのは大学に入ってからなんです。今までは、よその世界でプログラミングしている人の記事を読んで、あこがれていただけなんですが、大学に入って実際にプログラミングがちゃんとできるようになったというのはありましたね。筑波は1年からプログラミングの授業があるので、ずっとプログラミングをしてました。相変わらず数学の成績は悪かったんですけど、プログラミング関係の授業だけは成績がやけにいいといった感じでした。
川井:トップエンジニアの方々にお話をお聞きすると、小さい頃からプログラミングを経験してきた事がある人達は、大学に行っても知っている事ばかりで退屈だったという方もいれば、逆に体系的にプログラミングを勉強する機会は初めてだったので面白かったという方とで、二分するのですが、どちらかというと後者の方ですか?
Matz:そうですね。色々な授業があったのですが、例えばアルゴリズムとかちゃんと勉強する機会ってなかなかなかったので、そういう勉強が出来たのは貴重だったと思います。あとは、今までは家の貧弱なコンピュータを使っていて、そんなにちゃんとした環境ではなかったんですが、大学には小さいのから大きいのまで色々なコンピュータが用意されていたので、4年間そういったコンピュータでプログラミングが出来た事は、ありがたかったですね。
川井:大学に入ってから、プログラミング言語を作るっていうことについては何か進展があったんですか?
Matz:大学3年くらいまでは、プログラミング言語を作ることって結構大変だし簡単なことではないので、自分には無理かもなって思ったんです。4年生の頃の研究室配属で、通称「言語研」と私たちは呼んでいたプログラミング言語について研究する研究室に配属されてから、「もしかして、やっぱり自分にも作れるんじゃないか」と思い始めて、言語設計に取り掛かりました。だから、大学3年までは、そこまで本気ではなかったんです。
川井:じゃあ、大学4年になって本格的に着手したということですか?
Matz:本格的に着手というほどではないんですが、まあ、卒論のテーマなんかは「プログラミング言語を作る」というテーマでしたね。もともと「言語研」とはいっても、プログラミング言語をデザインするという研究室ではないんです。日本中探しても、そんなことをしている研究室はないと思いますしね。実際に「言語研」でやっていた研究は、「いかに最適化を行うか」とか「どういう風にプログラミング言語処理系の開発ツールを作るか」といった内容でした。だから、私が「言語デザインしたいです」と言っていたのは、研究室からしてみれば全然関係ない話で、無茶苦茶だったと思います。担当教官の先生はよく認めて下さいました。
川井:言語を作るにあたって、色々な言語を見たと思うんですが、大体どのくらいの言語を研究されてきたんですか?
Matz:大学の3、4年のときは、結構、図書館に入り浸ってプログラミング言語の本や古い雑誌を見つけては、「いっぱいあるんだなあ!」と思いながら、とにかく読んでいました。
川井:世の中の主たる言語については全部見たという感じですか?
Matz:見たは見ましたね。ただ、実際に使ってはいないので経験に裏打ちはされないんですけどね。
川井:その中で、自分の理想とする言語はどんなものかという具合に決めていった感じですか?
Matz:そうですね。
川井:代表的な言語で、この言語のこんなところがいいとか、逆に良くないとかってありましたか?
Matz:大学4年の時点での話をしますと、Eiffelという言語があるのですが、それを作ったBertrand Meyerが「Object-oriented Software Construction(オブジェクト指向ソフトウェア構築法)」(邦訳「オブジェクト指向入門」アスキー刊)というタイトルの本を出していて、当時、その本の原書を買ってきて一生懸命読んだんですが、その影響はかなり大きかったですね。このEiffelというプログラミング言語は、Adaという言語に対してオブジェクト指向の拡張をもっとちゃんとするとどうなるかっていうアプローチでデザインが始まっているんですよ。私はCプログラマだったので、卒論のテーマは、AdaがEiffelになったベクトルをCに対して加えると何が出来るかというアプローチで言語デザインするというものでした。まあ、経験は足りないし、時間はないしで、まったく実用にはならなかったですね。この時デザインした言語は、コンパイル型で静的な型があって、多重形状でといった感じで今のRubyとは全然違っているんです(笑)。
川井:全く違いますね。
Matz:まあ、そっちもやってみて、今はRubyに落ち着いたというのもあるんですよね。
川井:ちなみにRubyを作る前には、いくつくらいトライしたことがあるんですか?
Matz:実際に動くところまで持っていったのは、Rubyの前はその卒論の時に作った言語だけですね。途中でやめちゃったとか、文法を考えただけとか、名前を決めただけとか、そういうのも数えると結構な数になるんですけど、普通、そういうのって書いたとは言わないんで(笑)、ある程度動くところまで行ったのは、Rubyの前は卒論の言語1個だけですね。
川井:本当に趣味というか、生涯やりそうな感じなんですね。
Matz:本当にそうですね。ここまで来るとは思いませんでした。

川井:ちなみに、大学の休学中のお話をお聞きしてもいいでしょうか?
Matz:はい、大学2年が終わった時点で休学して,2年間、キリスト教の宣教師をしてました。中国四国地方が私の担当のエリアで、その間はずっと布教活動をしていました。大体アメリカ人と二人組で、自転車に乗ってあちこち回っては、教会の説明や奉仕活動をしていましたね。
川井:何かきっかけがあったんですか?
Matz:私、子供の頃からクリスチャンなんですよ。
川井:それはご家庭がとかなんですか?
Matz:はい、家族全部がです。
川井:その信仰がRubyを創ることに結びついているといった内容の記事を見たことがあるんですが、それはどんな理由があるのでしょうか?
Matz:それは、周りが言っているだけじゃないですか(笑)本当に子供の頃から教会に行ってて、宗教は私の一部なので、宗教があるからRubyを作ったっていうのはあまりないんじゃないかなって思いますね。私の所属してる教会のメンバーは世界中に何千万人もいて、その中でプログラミング言語を作ったのは私くらいでしょうから、論理的に考えると宗教と言語設計の関係はどうなのよって思うんですけどね(笑)
川井:論理的に考えるとそうですね(笑)。
Matz:ただ、2年間の宣教師活動の経験があるので、相棒にアメリカ人がいたり、ボスがアメリカ人で、日常的に英語に触れる機会も多くて、普通の日本人が中学から大学までただ授業で英語を勉強してきたっていうよりはもっと英語に対する経験を持っているとは言えると思います。Rubyが海外に出て行くときに、英語でコミュニケーションしないといけないわけですけど、その時に英語を喋れって言われたらなんとか喋れるとか、あるいは英語でドキュメントを書こうとそもそも思うとか、そういうところってそういう経験がきっかけになっているとは思いますね。それから、宣教師活動中は、すごいたくさんの人に会うので、中にはいいひとも悪い人もいるんですけど、その中で「人間はそれぞれ違う」とか「黙っていても伝わらない」っていうのを学んだっていうこととかは、役に立ってるかもしれませんね。オープンソースプロジェクトっていうのはコミュニティによって支えられている部分がたくさんあるので、コミュニティを運営しないといけないわけですよね。コミュニティを運営しているといろいろな人がいて、中には扱いにくいひともいるわけですけど、喧嘩とかするとすぐにバラバラになっちゃうんで、そういう人たちに対しても適切に接するという部分では実利的に役に立ったことはあったんじゃないかなとは思いますね。
川井:Rubyのコミュニティの雰囲気って、まつもとさんの人柄そのものっていう感じがしていて、素人の人にもオープンな雰囲気があると思います。
Matz:ありがとうございます。本人はあまり自覚がないんですけどね(笑)

川井:大学を出て就職する際に、どんな基準で会社を選ぶとかってあったのでしょうか?
Matz:先生からは大学院にもいかないかって言われていたんですけど、私は6人兄弟の一番上だったこともあり、いつまでも親のすねを齧っているのもどうだろうと思っていて、かといってバイトだけで学業をやりとおせる自信もなかったんで、「まあ、就職するか」って思って、普通に就職活動しました。幸い当時はまだバブルが終わっていない時代だったので、リクルートからこんな分厚い本が届いたり、今よりは楽だったと思うんですけど。基準の一つは「面白そうな仕事が出来そうなこと」でしたね。プログラミングの仕事ってピンキリだと思うんですが、言われるがまま歯車のように働くのは嫌だなと思ってましたね。もうちょっと創造的な仕事ができそうなところがいいなあと。あと、もう一つ、東京は嫌だったんです。
川井:やっぱり昔からそうなんですね(笑)
Matz:私の原点は変わらないですね(笑)だから、東京じゃないところで働けて条件に合った会社っていうのが最初に入った会社で、本社は東京なんですが、静岡県の浜松にある研究所で働ける会社でした。そこで4年ぐらい働きましたね。
川井:東京に出てくるとどうしても大手に入ってしまったりしそうですが、反対に東京以外っていうようにセグメントしたのが、やりたい仕事ができる環境がより多かったのかなと思いますが、どうなんでしょうか?
Matz:どうなんですかね。私は割といいところに配属されたと思うので、それはよかったと思います。バブル期だったのもあって、私の同期は300人近くいたんですよね。もともと1,000人くらいのSIerだったので、300人入るってことは1年で4分の1増えるわけですよ。その300人近くの新人の中で、大学でコンピュータサイエンスをやったっていう人は6人しかいなかったんです。残りの人たちは理系でもコンピュータ経験ないし、文系はそれ以上にいっぱいいるという状態で。それで、その6名は貴重なコンピュータサイエンス経験者ということで優遇されて、わりと面白そうな仕事に回してもらえました。たとえば、大企業に入社してコンピュータサイエンスをやりましたって人たちばっかり100人いるところですと、満足するポジションを得るためには100人の中で競争して勝たないといけないんでしょうけど、幸い私のところはわずか6人しかいなかったので重宝してもらえてありがたかったというのはありますね。
川井:当時はどんな環境でやられていたんですか?
Matz:プラットフォームがSONYのNEWSというUNIXを積んだワークステーションでした。当時はBSD系だったんですけど、その上でCで作っていました。
川井:当時というと1990年前後ぐらいですか?
Matz:入社が1990年でした。入社して2年目にバブルが崩壊してボーナスが無くなりました(笑) 入社した当時は景気がよくてボーナスが結構たくさん出ていたんですけどね。私は入社2年目に結婚したんですが、その途端にボーナスがなくなって、出費が増えるのに収入は減るってのはどういうことって思いましたね(笑) その事があってから、まつもと家では「家計にボーナスを組み入れるな」という家訓ができました。
川井:ボーナスが当たり前の設計だと厳しいときがありますよね。
Matz:で、仕事の方も,景気が悪く予算がないので新規開発はしてはいけないということになったんです。でもすでに全国の拠点に私たちのツールのユーザーがいるんで、サポートはしなくちゃいけないっていうことで、開発はしないで、サポートだけしててくださいということになって、仕事量が激減したんですよ(笑)
川井:(笑)
Matz:クビにならなくてよかったですね(笑) アメリカだったら真っ先にクビになりそうですけど。幸い日本だったのでクビにはならなくてフラフラとしてて、暇なんで時間もあるしコンピュータもあるし、好きなプログラムでもするかなってことで始めたのがRubyなんです。
川井:なるほど。
Matz:不景気が生んだ言語ですね(笑)
川井:なるほど、面白いですね(笑)するとその時は仕事中にやっていたんですよね?
Matz:はい、仕事中もやってましたね。今じゃコンプライアンスがどうこうって言って難しそうですけどね。いい時代でしたね。
川井:何年目くらいからRubyを作りはじめたんですか?
Matz:1993年2月なんで入社して3年目の終わりくらいからですかね。
川井:どれくらいの期間で形になったんですか?
Matz:内輪にリリースしたのが94年の10月なんで、1年以上かかってますね。
川井:それくらいで作ってしまったんですね。
Matz:インターネットで広く皆さんに使ってくださいって言ったのが95年の12月ですから、それまでには3年くらいかかってますね。
川井:コンピュータ言語を作るって想像がつかないんですけど、どういう流れというか工程が必要なんですか?
Matz:私もそんなに言語を作ったことはかなったんで、今だから言えることなのかもしれないんですけど、プログラミング言語を作るって実はそんなに大変じゃないんですよ。
川井:そうなんですか?
Matz: いろんなところにフリーのソフトウェアのソースコードがあるんで、それを見ながら、ああ、こんな風にやるんだって言って、それをこっちに持ってきてとかRubyだったらこうするよねとかいう風に考えるんです。それで段々作っていくんですけど、最初はまずHello Worldを出したいと考えるよと思うんですけど、そうするとまずはプログラムが読み込めないと駄目ですよね。
川井:そうですね。
Matz:なのでプログラムを読み込む部分を書くわけですよ。そうすると、print “Hello World”は文法的に正しいとか文法チェックがまずできるんですよ。
川井:なるほど。
Matz:今度は、文字列を読み込んできて文字列オブジェクトを作らなくちゃならないんですよね。だから「” ”」の間を読み込んできて、それをメモリ上にコピーして文字列を作るみたいなものを作るんですよ。すると文字列ができるんです。
川井:はい。
Matz:オブジェクト指向言語なんで、文字列っていうのはオブジェクトじゃないですか。文字列オブジェクトってことはクラスがいるよねっていうことになって、クラスがいるってことはオブジェクトクラスがあって、クラスツリーがあってと、どんどんと書かないといけないわけですよ。
川井:はい。
Matz:それが終わると、文字列オブジェクトできたってことになるんですが、でもまだ出力できないんですよ(笑)
川井:(笑)
Matz:なので、今度はファイル入出力するために、関数書いてクラスを書いたりするわけです。こういうのを続けていって、Hello worldが出た!って言ってたのが1993年夏ぐらいなんで、半年くらいかかってますね(笑)
川井:目的のための積み上げていく感じですね。
Matz:目的っていっても、Hello worldなんですけどね(笑) Hello worldを出すために延々とやってた感じです。
川井:なるほど。
Matz:でも、しばらくやっていくとメモリが減ってくるわけです。それでガーベージコレクターがいるよってことになるんですけど、リンクすると動くBoehmGCっていうガーベージコレクターのライブラリが当時からあったんですけど、リンクしたら落ちちゃったんです。
川井:あらら。
Matz:なので、しょうがない、自分で作るかって言って、これまた何ヶ月かかけて自分で作ったりしてました。
川井:ははあ。
Matz:あとは文字列だけじゃ駄目なんで、整数がいるとか、配列がいるとかハッシュがいるだとかどんどん追加していくわけですよね。それでどんどん積み上げていって、ある程度使えるようになったかなというところまでで大体1年と10ヶ月くらいですかね。それで、今はほとんどなくなってしまっているNetNewsっていうメディアで、「こんなものを作っているんですけど、誰か手伝ってくれる人はいませんか?」って募集したら何十人か集まってくれたんです。
川井:なるほど。
Matz:それで、itojun(いとぢゅん)さんの好意でFTPサイトとメーリングリストを提供していただいて、何十人かで相談して作っていたんですけど、1年経ってもう少しましになったなってことでソースコードも含めてNetNewsで公開したのが、1995年の12月ですね。
川井:なるほど。当時から関わっている方で、今でもコミュニティで活躍されている方っていらっしゃるんですか?
Matz:例えば、一緒に本を書いている石塚圭樹さんは、もともと私の同僚でRubyを始めたときにも一緒にいた方ですが、今でも手伝ってもらっていますし、渡辺博文さんって方は、一番最初の頃にWindowsやDOSでRubyを動かすのを手伝ってくれたんですが、今でもお手伝いいただいています。
川井:1つの言語がこうして皆さんの力も含めて出来上がっていくのって醍醐味がありますね。
Matz:そうですね。とても自分だけでの力で作ったとは言えないですね。

川井:その間、仕事の方は変化はあったんでしょうか?
Matz:Rubyを作り始めて次の年の1994年にあまりに景気が悪くて会社が傾くかもしれないと思って、いろいろと探していくつか面接は受けたんですが、やっぱり東京は駄目だと思って、オブジェクト指向のことも分かるし、C++も書けますっていう触れ込みで名古屋の会社に転職したんです。
川井:何をやっている会社だったんですか?
Matz:会社そのものはトヨタの子会社で、部品系のCADを作ってました。バックミラーのデザインなんかをするようなシステムを作ってました。
川井:そういうものに興味はあったんですか?
Matz:全然(笑)
川井:(笑)やっぱり東京以外でっていう条件ですか?
Matz:はい、東京以外でですね。それにオブジェクト指向もできるし。
川井:やりたいことと住むエリアが優先なんですかね?
Matz:そうですね。住む場所は東京以外ってレベルですけど。いずれにしても、やりたいことと住む場所は譲れなかったですね。ただ当時、景気が悪かったので、その条件は結構厳しくて大変でしたね。人材会社さんなんかにもお願いしたんですけど、東京なら紹介できるんですけどねって言われましたね。
川井:そうでしょうね。
Matz:当時はあまり考えなかったんですけど、今考えると、そういう逆張りをしたのはとてもよくて、つまり、鶏口と為るも牛後と為る勿れで、人がいないんで大事にしてもらえるんですよ。
川井:なるほど(笑)
Matz:単に東京の人混みが嫌だってだけだったんですけど、今思えば逆張りをしたことは、自分がハッピーなエンジニアライフを送るとか、Rubyを続けられるところで働くことができたっていう意味では成功だったかなと思いますね。
川井:人と違うことをすることで道が拓けたということですね。
Matz:「図らずも」人と違う人だったので(笑)
川井:「図らずも」ですか(笑)
Matz:もうちょっと他の人と同じだと思っていたんですけどね(笑)
川井:(笑)
Matz:最近は、諦めてます(笑)
川井:キャリアというとやはり会社と仕事ではなくてプログラムとしてということになるんですよね?
Matz:まあ、そうですね。でも会社は3社勤めましたが、3社とも恵まれていましたね。それなりに優遇してもらえましたし、理不尽な上司とか理不尽な仕事も、まったくなかったわけではないですが、嫌だと言えばちゃんと話は聞いてもらえましたからね。
川井:ちなみに仕事上一度もネクタイをした経験はないんですか?
Matz:いえいえ、1社目はスーツの会社だったので、ずっとスーツにネクタイで会社に行ってました。3年くらい経ってたまたまみんな大掃除か何かでトレーナーにジーンズのようなラフな格好で出社した日があったんですけど、どうせお客さんと会うこともないしって思って、翌日もそのままの格好で出社してみたんですが、誰も何も言わないんですよね。
川井:(笑)
Matz:友達には、「どうした?」って聞かれたので、「自主的にカジュアルで」と言ったら、「そうかあ」って感じで、上司も何も言わないんで、「ああ、いいんだ」って思ってそのままカジュアルになりました。私の事業所は400人くらいいたと思うんですけど、1人だけTシャツとジーンズとかそんな感じでしたね(笑)
川井:最初の一人って貴重な存在ですよね。
Matz:それ以来、お客さんとの打ち合わせなんかは別ですが、職場ではスーツは着ていないですね。
川井:スーツのイメージがまったくつきません。
Matz:いえいえ、私は日曜日の教会にはスーツでいきますからね。教会の人は私のことをスーツを着ている人って思ってますよ。
川井:へえ、そうなんですね。
Matz:それでいて職場では着ないので、教会の帰りにスーツ姿で会社に寄ったら、なんか珍しいものを見るような目で見られましたね(笑)なので別にスーツを着ないわけじゃないです。
川井:なるほど。スーツは着たくないってわけではないんですか?
Matz:あまり長い時間着ているのは嫌ですね。
川井:教会はスーツで行くものなんですか?
Matz:カジュアルじゃなくてフォーマルってことになっているのでスーツにネクタイですね。皆さん、私の1面しか知らないって感じですね。
川井:(笑)
Matz:人間は多様性があっていいと思うんですよ。
川井:そうですね。
Matz:一昨年、経済産業大臣表彰をいただいたときは、皆んな、ぴしっとしたスーツで、私だけがTシャツとジーンズで副大臣から表彰状をもらいました。
川井:そこはフォーマルじゃないんですね。
Matz:そうですね。私の場合は、副大臣から表彰を受けるよりも教会の方がフォーマルですね。
川井:そういうことですよね。
Matz:(笑)
川井:名古屋の会社には何年くらいいらしたんですか?
Matz:名古屋の会社は、4年弱ですかね。
川井:また転機があったんですか?
Matz:2つほどあって、私のチームは造船の仕事をしていたんですが、日本財団がスポンサーの大きなプロジェクトで、ミーティングが毎週東京だったんですよ。それで偉い人の判断で、東京事務所もあるし、皆んなで東京に行こうってことになってしまったんです。それで私は「東京が嫌でこの会社に入ったのに東京に行ってどうするんですか。私は嫌です」って言ったら一人だけ置いていかれてしまったんです。
川井:(笑)
Matz:それで、他の人たちは東京に机を置いて、私だけは名古屋の別のプロジェクトの片隅に机を置かせてもらって、普段はネットでやりとりをして週に1回だけ東京にミーティングでいくという生活になって半年くらい続けましたかね。流石にこれはやばいのではと思ったんです(笑)
川井:そりゃ、そうですよね。
Matz:別に誰にも何も言われなかったんですけどね(笑)
川井:(笑)そうは言ってもってことですね
Matz:(笑)そうは言ってもやばいかもしれないってことで。それが一つで、もう一つが、私の知人を通して、島根でLinuxを中心に会社を立ち上げる人がいるという話を聞いたことでした。実家に帰ったついでに話を聞いて、私みたいな人が来てくれたら嬉しいってことだったし、会社での立場もやばくなっていたし(笑)、Linuxやフリーソフトウェアの仕事ができるところは日本中探してもあまりないだろうと思って。新規起業は不安だけど,まあ、2年くらいはなんとかもつだろうと思って島根に移ってきたのが1997年です。もう12年前になりますね。幸い2年で駄目にならずにずっともってます(笑)
川井:ちょっと下世話なことをお聞きしますが、転職の度に収入はUPしているんですか?
Matz:最初の転職のときには収入は明らかに上がりました。2番目の転職のときにも収入は下がっていないですね。
川井:するとやりたいことも実現できて、収入の面でもハッピーはエンジニアライフを送っているということですね。
Matz:そういう意味では仕事の面でも収入の面でも恵まれていると思いますね。逆張り戦略正解ですね。
川井:名古屋の会社にいた際は、Rubyはどういう風に進めていたんですか?
Matz:Rubyはやっていましたね。会社のHPを作っている管理者が同僚だったので、会社のHPの下にRubyっていうページを作らせてもらって、FTPサーバーも立ち上げてもらってました。当時はおおらかでしたね。
川井:おおらかすぎます(笑)
Matz:会社のネットも、たぶん半分くらいは私のトラフィックだったんじゃないかと思うんですけど、上司とかは誰も気がつきませんでしたね(笑)
川井:コミュニティ活動自体を会社に持ち込んでやっていた感じですね。
Matz:そうですね。会社のサーバーを使ってやってましたね。
川井:その間に大きな動きはあったんですか?
Matz:そうですね。ドキュメントを翻訳したのもその会社にいたときでしたし、海外からアクセスが来たのもその当時で、知る人ぞ知る的な感じでした。当時はメーリングリストもその会社のサーバーを借りてやってましたね。
川井:いい時代ですね(笑)
Matz:いい時代でした(笑)

川井:ネットワーク応用通信研究所(以下、NaCl)に入られたときはRubyを仕事にするっていう気持ちはあったんですか?
Matz:Rubyを仕事にするって言える時代ではなかったので、Rubyをやっているということを認めてくれますかという条件で転職しました。Rubyをやっているだけでは儲かりませんからね。
川井:許可してもらえるかってことですね?
Matz:そうですね。
川井:NaClに入ってからはどんな仕事をしたんですか?
Matz:そうですね、適当に普通のプログラミングの仕事もすれば、Rubyの作業もするみたいな感じでいたんですけど、よく分からないうちに段々Rubyの割合が増えてきて、会社も軌道に乗ってるし、まあいいかみたいな感じでRubyの方ばっかりやってましたね。
川井:それは普通の人がこなすミッションを早く終えてしまってRubyをやっていたのか、ミッションをやらないでRubyをやっていたのかでいうとどちらなんですか?
Matz:よく分からないですね。ただ言われたことはとりあえずやっていたような気がするんですけど、NaClのときはあまり意識してはいなかったですね。名古屋の会社の時は、仕事に納期があって、朝の通勤時間に電車でノートパソコン開いて会社の業務をこなして、会社についたらRubyをやって、また帰りの電車の中で会社の業務をしてってやっていたらなんとか納期に間に合ったっていう感じでしたね(笑)
川井:(大笑)そりゃ、並はずれて早いってことですね。
Matz:まあ、納期設定も自分でしていたので、そのあたりも盛り込んで設定していたのもありますけどね。
川井:その納期設定が否定されないわけですよね?
Matz:そうですね。明らかに遅いとは言われなかったですね。
川井:やはりそういう裏付けがあるからできることなんでしょうね。
Matz:そうかもしれませんね。
川井:NaClに入ってからはRubyについてはどんな感じだったんですか?
Matz:淡々とやってきたらここにいたという感じなんですが、名古屋時代から書いていた本を出しました。本の原稿って結構大変で、雑誌の場合は締め切りがあるので書かないといけないっていうのがあるんですけど、本ってそういうのがないんでなかなか進まないんですよね。出版社の人に頼まれて「書けるかもしれない」って思って引き受けても「やっぱり何年たっても終わりません」っていうことも多々ありましたね(笑)
川井:(大笑)
Matz:そういうことにもめげずに一生懸命に頑張って1999年に最初の本が出て、これが結構売れたんです。売れたっていっても一般書に比べれば全然なんですが、コンピュータ関係の書籍って1万部売れたらベストセラーみたいな感じなんです。それでも1万数千部出て、その年のコンピュータ書籍のベストセラーになったんですよ。こんな本誰が買うんだって思って出したんですけどね。
川井:いえいえ。
Matz:それで2000年に英語の「Programming Ruby」通称ピッケル本が出るですが、これもびっくりでしたね。同じ年にオライリーからRubyデスクトップリファレンスを出したり、そんな感じでRubyの本も段々揃ってきて、2001年から2002年にかけては第一次Ruby本ブームみたいな感じでいろいろな本が出ましたね。その2年ぐらいの間に30冊くらい出たんじゃないですかね。
川井:すごいですね。
Matz:ただその時は一過性のもので、やはりRuby本をいくら出しても売れないっていうことで、しばらくは国内の出版社は一切出さなくなったんですけど、2005年くらいからまた状況が変わって出始めて、今では私でも把握しきれないほどですね。
川井:すごい量ですよね。
Matz:初期の頃は全部買ったり、献本していただいたりしてましたが、最近は全部は揃っていないですね。
川井:こうしたRubyのブレイクにはRailsのヒットが大きかったと思うのですが、まだまだRubyを後押ししようという企業が本格的に出てきていないのが、更なるブレイクのネックになっていると思うんですが、いかがでしょうか?
Matz:確かにそうですね。Rubyだけでご飯が食べられるのは私だけという状況で、それでも中には生活のバランスを崩しそうなくらい頑張っている人もいるので、そういう人たちを支えられたらいいなという気持ちはありますね。
川井:うちもまだ小さい会社なので、資金的に大きな投資はできないんですが、地道な活動を続けていこうとは思っています。
Matz:そうですね。関わり方はいろいろあると思いますね。最近だとRuby Gemみないなライブラリがたくさんありますけど、まだ1.9に対応していないものも多いのでそれを1.9対応にするということも大きな貢献ですし、バグを見つけたり直したりという貢献もできるでしょうし、あとリファレンスマニュアルを書いているプロジェクトがありますが、これはまだ分かりにくいというコメントを出すだけでも大きな貢献じゃないかなと思いますね。できることはたくさんあると思いますね。
川井:そうですよね。
Matz:ただヒューマンリソースが足りないからできてないこともたくさんあるので、他の言語のコミュニティなんかをRubyの良さを損ねない範囲内で真似したいし、それに必要なお金とか人材がぼつぼつ集まってきたら嬉しいなと思いますね。
川井:なるほど。
Matz:ただビジネス的に冷静な判断をすると、Rubyってそこら辺に転がっているものなので、それに投資をするって奇特な人は、正直それほどいないと思うんですよ。ただ今後、裾野が広がっていく中では、粋狂な人がいて助けてくれたりということもあると思うので、裾野の拡大を阻害するようなことにはならないように気をつけておくということが必要なんじゃないかなと思いますね。
川井:Rubyってある意味、ご自身の子供みたいなものだと思うんですが、段々いろんな人が関与してくると自分自身で関われる部分が減ってくると思うんですが、そのあたりってどう感じているんでしょうか?
Matz:まあ、そうですね。でも一番楽しいところは押さえてるんで(笑)、それはそれでいいかなと思いますね。
川井:本当の子供みたいに自我が芽生えてどこかいっちゃうなんてことはないんですかね?
Matz:まだ16歳くらい、高校生ぐらいですからね。
川井:反抗期はもう終わったくらいですか?
Matz:反抗期はまだまだですね(笑) 実はちょうどRubyより1歳上の娘と、1歳下の娘がいるんですよね。
川井:じゃあ、3姉妹なんですかね。
Matz:娘はもう一人いるんで、4姉妹でしょうね。
川井:よく名前重要って言ってますけど、「Ruby」ってネーミングは絶妙ですよね。
Matz:ありがとうございます。まあ偶然ですけど(笑)
川井:これってきっかけがあるんですか?
Matz:いえ、特にはないですね。Perlが宝石だから宝石にしようかぐらいな感じですかね。DiamondとかSapphireって長いよねってことで候補に挙がったのが、RubyとCoralだったんですけど、CoralよりはRubyがいいよねってことでRubyになったんです。
川井:そうだったんですね。
Matz:誕生石の話とかもありましたけど、決まってから、そういやそうだよねみたいな感じだったと思います。

川井:今後、Rubyをどうされたいかお聞きしてもいいですか?
Matz:今後、Rubyをどうするかですか。。。「ランボー」って映画の最後でランボーが「日々を生きます」って言うんですけど(笑)、あんな感じですかね。
川井:(笑)ご自身はどうですか?
Matz:私もやっぱりこのままでいくつもりですね。事業がどうこうとかお金の勘定がどうとかあまり高望みしてないんですよ。とりあえず、食べていけるだけの収入はあるし、Rubyはまだまだ楽しそうなことがあるんで、ここから先10年から20年ぐらいは、これを続けていきたいなと思いますね。
川井:何か新しいことをやりたとか、新しいものを作りたいとかってあるんでしょうか?
Matz:Rubyを離れてまでやろうってものはないですね。
川井:新しい言語を作ろうとかもないんですか?
Matz:今のところはないですね。プログラミング言語って本当に寿命が長いんですよね。まだ第二世代くらいなんですよ。第一世代がFortran、Lisp、COBOLあたりで、第二世代がCとかPascalぐらいなんですけど、Rubyは第三世代って言えるほど進化してないんですよ。
川井:そうなんですか。
Matz:50年で2.5世代とか3世代進むとかなんで、もうちょっとかかるかなと(笑)
川井:すると生涯、Rubyをやろうという話ですよね?
Matz:とりあえず思いつかないんで(笑)
川井:(笑)
Matz:思いついたらすぐに変わるかもしれません(笑)
川井:(笑)

川井:最後にエンジニアに対するメッセージをいただけますか。
Matz:いつもエンジニアライフ的な講演で話すのと同じなんですけど、他の人と同じでなければいけないっていう圧力に対してもっと鈍感であってもいいんじゃないかなって思いますね。今日もいろいろ話してきましたけど、私がうまくいったのって大概逆張りをしたときなんですね。仕事は東京の方がいっぱいあるんだけど東京じゃないところで働いたとか、みんなはソフトウェアで商売をしようとしてるんだけど、私はオープンソースできましたとかですね。
川井:はい。
Matz:どの分野においてもマイノリティであったことが私の成功の理由なんじゃないかなって思いますね。実は狙ったわけじゃないんですけどね(笑)プログラミング言語を作ろうという人はあまりいない中を突き進んできたり、東京に仕事はいっぱいあると言われたけど、自分の仕事は1つでいいので、地方で働くことにしました、とかが結果的にはよかったんで、下手な安心感よりは逆張りするということが成功するためには有効なのかなと思います。
川井:なるほど。逆張りした環境に入ってから必要なスタンスってどういうスタンスですか?
Matz:「自発」が大事なんじゃないかなって思います。口を開けて待っている人ってこの業界にたくさんいると思うんですけど、自分が何をしたいのかとか自分が何を学ぶのかってことは他の人には聞いてはいけないと思うんですよね。その人の人生はその人自身の人生じゃないですか。私を含めて他人は無責任なんですよ。だから私は他人の人生に責任はとれないので、どうすべきかってことは言えないんです。その人の内側から出てくるものがあるときにだけ成功するんじゃないかなって思いますね。
川井:なるほど。
Matz:逆に自分に内側から何かを出すことができないんだったら、出すことができる分野を見つけるまでは、結構しんどいかなって思います。
川井:自分の進むべき道が今やっていることではないかもしれないってことですね。
Matz:それって能力とは関係ないんですよ。勿論、コンピュータサイエンスの勉強をしていた方がいいし、知識もあった方がいんだけど、それよりもなによりも自発的に何かするって気持ちがあれば、そういうのはついてくると思うんです。
川井:確かにそうですね。「自発」がキーワードですね。
Matz:ですから内側から自然に出てくる何かがエンジニアとして差別化する材料じゃないかと思うんですよ。それにプラスして成功するには自分を見つめるとかゴールを設定するとかっていう戦略とかってありますよね。でも、なによりも重要な動機づけっていうのは、他の人には分けてあげられないんですよ。命みたいなもんで、「私は命は2つ持ってきた」というのは現実的にはないんで・・・っていうといつもうちの奥さんに「あなたは人の分からない話をする」って怒られるんですけど、野暮を承知で解説すると初代ウルトラマンの最終回に、「私は命を2つ持ってきた」っていう台詞があるんですよ。ウルトラマンがゼットンに負けて死んだあと、ゾフィーがやってきて言うんですけどね。
川井:ありましたね、それ。
Matz:うちの子たちもそういう古いネタばっかり知ってるんですよ(笑)
川井:(笑)
Matz:このあたりは適当に編集してください(笑)
川井:(笑)いえいえ、面白いのでそのままでいきます。本日はどうもありがとうございました。
Matz:こちらこそありがとうございました。

LINEで送る
Pocket

TO TOP