Rubyist Hotlinks 【第 1 回】 まつもとゆきひろさん

はじめに

Rubyist Hotlinks は、毎号、著名な Rubyist にインタビューを行っていこう、という企画です。 栄えある第一回のインタビュイーは、もちろんこの方、Ruby の父、まつもとゆきひろさんにお願いしました。

まつもとさんのインタビューというと、既に、Linux Magazine (1999 年 12 月号)、CNET Japan (現在閲覧不能)、IBM developerWorksスラッシュドット ジャパン、などがありますが、今回のインタビューでは、既存のインタビューとはちょっと異なる部分にも切り込みたいと考えています。

なお、このインタビューは、前田修吾さん、かずひこさん同席の場で行われました。 というわけで、時々お二人の鋭いツッコミも入っています。

まつもとゆきひろさんのプロフィール

matz01.jpg大阪生まれ、鳥取育ち。

自他ともに認める言語オタク。言語オタクが高じて自作してしまった Ruby によって世界に広く知られるようになったのは皆さんご存知のとおり。

現在は島根県に在住。株式会社ネットワーク応用通信研究所 特別研究員。家族は奥さまと三人のお子さま。

好きな言葉
「名前重要」
尊敬する人
ラリー・ウォール、ドナルド・E・クヌース

インタビュー

聞き手
ささだ
語り手
まつもとさん
野次馬
前田さん、かずひこさん
日にち
2004 年 8 月 30 日
場 所
株式会社ネットワーク応用通信研究所 本社

好きな言葉、尊敬する人

ささだ
好きな言葉はなんですか?
まつもと
好きな言葉、なんだろう? 「名前重要」とか (笑) 四文字熟語 (笑)
ささだ
なるほど、座右の銘は「名前重要」、と (笑) では、尊敬する人は?
まつもと
ラリー・ウォール*1
ささだ
スラッシュドットのインタビューでも「尊敬する人のトップ 10 に入る」とおっしゃってますね (スラッシュドットジャパン:まつもとゆきひろ 答える)。その他はどうですか? プログラミング関係じゃない人でもいいですけど。
まつもと
プログラミング関係以外だと、多分知らない人なんで、それはあんまり面白くないかな、と。……クヌース*2とかすごいな。って、全然「プログラミング関係じゃない人」じゃない (笑)
ささだ
クヌース先生は、すごいですね。
まつもと
すごいね、あのこだわり方が。『コンピュータ科学者がめったに語らないこと』は面白くて、聖書というのは、何々書、何節、何章、と分類されているんだけど、その 3 章 16 節だけを横に切って取り出してみている。そうすると、聖書の文章をほぼランダムに抽出したことになるんだけど、そこから聖書全体の傾向を解析する、みたいなことをやってる。
ささだ
まつもとさんは聖書もよく読まれるんですか?
まつもと
はい、一応は。grep もします (笑)
ささだ
聖書の中で好きな節はありますか?
まつもと
えーっとね、プログラマー向けなのはあるかな? ……好きなのは「あなたがたの受けた試練の中で世の常でないものはない」*3。つまり、どんなに大変なことがあっても、他にも同じような経験をする人はいっぱいいて珍しいことじゃないんだ、だから大丈夫、それは耐えられるんだよ、っていう感じかな。

主なソフトウェア作品

cmail、Mail Organizer

ささだ
「私はこれを作った」というような代表作は?
まつもと
Ruby (笑)。どこへ行っても「Ruby のまつもと」って言われるよね。もう「cmail のまつもと」とは言われないな (笑) Mail Organizer ができたら……。この前、吉岡さん*4に会ったら、「メールリーダー作ってるんですよね」って言われた。
前田
あれ、みんな期待してますからねえ。
まつもと
ほんと?
前田
「やっぱりやーめた」とはもう言えないでしょう。
まつもと
matz02.jpgでももう動いてるよ、一応。ほら。外見は cmail とあまり変わらない。ラベルという概念があって、そのラベルで毎回検索を行っている。
ささだ
速度的には問題はないんですか? spam の扱いは?
まつもと
今、これで 3 万前後のメールがメールボックスに入ってるけど、その中から抽出するなら数秒で出る。spam は、メールボックスには入ってて番号は振ってあるけど、インデックスはしていない。
ささだ
どうしてメールにこだわるんですか? cmail とか。
まつもと
別にこだわってるわけではないけど*5、よく使うから。cmail の時は、最初は VM (View Mail) っていう名前のメールリーダーを使ってたんだけど、なんか気に入らなかったんだよ。で、自分で作ろうかなと思ってた時に、cmail っていうのが fj で流れたので、あ、これは結構いいかもと思っていじってたら、全然違うものになってしまって。で、これだけいっぱいいじったから、なんか挨拶しないといけないかなと思って、「いじっていいですか?」とメールしたら、「私はもう使ってませんから、ご自由にどうぞ」って言われちゃって。
ささだ
まつもとさんが引き継いだ時は既に「cmail」だったんですか。
まつもと
えっと、あの時は chain-mail っていう名前だった。
前田
紛らわしくて変えたんですよね。
まつもと
当時はまだチェーンメールっていう用語はなかったから。それに chain mail って、正しい英語じゃないし。chain letter だから。
ささだ
では morg は? 「モルグ」でいいんですよね、読みは。
まつもと
「メールオーガナイザー」と読んでください、なんて (笑) 実際にはコマンドは「モルク (morq)」なんだよね。g じゃなくて q。
ささだ
また紛らわしい (笑) その q はどこから来たんですか?
まつもと
QDBM を使ってるから。全文検索用の転置インデックスは Estraier で持ってて、それが QDBM を使ってる。実際は、画面表示なんかには別のインデックスを持ってるんだけど、そっちにも QDBM を使ってる。

bash の日本語化

ささだ
他のソフトウェアはないんでしょうか?
まつもと
世に出てるものはそれだけかなぁ。昔、bash を日本語化したことがある。当時の bash は日本語が通らなくてさぁ。今は通るんだけど。昔は bash 自体が 8 ビット目を使ってて。
ささだ
それは何年くらい前ですか? Linux はもうあった?
まつもと
12 〜 3 年前。bash も、1.1 いくつだった。1.12 か、1.11 ぐらい。Linux はもうあったけど、まだ使ってなかった。僕は SONY NEWS を使ってたね、会社で。当時の bash はクォート・ストリングなんかは 8bit 目を立てておく、という訳わからん実装になってて、クォートしてある範囲の文字は 8bit 目が立ってる。それを「もう勘弁してくれー」って、涙を流しながら日本語化した経験がある。
ささだ
じゃあ、文字列のあたり、全部書き直しですか?
まつもと
いや、クイックハックだったんで、そんな面倒なことはしないで、全角文字の前にはバッククォートを置くというようにした。バッククォートの次のデータは、生データの段階から 8bit 目が立ってると教えてやる、っていう仕組みにしてた。

オープンソースとの関わり

ささだ
その頃から、もう「オープンソース」ってのはあったんですか?
まつもと
僕が、フリーソフトウェアに関わったのは、学部の 3 年くらいに Emacs や gcc を使い始めたのが最初だから*6
ささだ
やっぱり、フリーソフトウェアファウンデーションの影響があった?
まつもと
うん。思想的に影響を受けたってわけじゃなかったけどね。まあ、ありがたいな、と。だから、cmail やらなんやらやってた時も、オープンソースにしない理由がなくって。最近、オープンソースがどうこう、ってぎゃーぎゃー言ってるのは、実は行きがかり上なところがあって…… (笑)
ささだ
立場、とか?
まつもと
うん。哲学があってとか、ストールマン*7みたいなのとはちょっと違うんだよね。ただ、そういう背景がないと広まらないし、広まらないと僕の住みやすい世界じゃないので、という、非常にプラクティカルな理由。

Ruby についての一般的質問

map と collect、do とブレース

ささだ
ここからしばらく、このインタビューの全員に聞いていく質問になります。好きなメソッド、嫌いなメソッドはなんですか?
まつもと
eval、っていうことなんだけど*8
ささだ
好きも嫌いも両方、でしたね。今でもそうですか?
まつもと
それは変わらない。eval も、環境を引きずらなければ、何も考えずにコンパイルして実行するだけだから、それでいんだけど。
ささだ
Enumerable#map と Enumerable#collect はどっちを使ってますか?
前田
最初は、collect しかなかったですよね。
まつもと
僕は collect 使ってるかなあ。
前田
map はやっぱり邪道なんですって*9
まつもと
いやいや (笑) でも、map と collect は同じものって感じがしないんだよね。
前田
使い分けがあるんですか?
まつもと
いや、あんまりない。気分で。でも普段は多分 collect 使ってると思う。
ささだ
ブロックには、do とブレース、どちらを使いますか?
まつもと
1 行に収まる時はブレースで、複数行にわたる時は do かな。
ささだ
そういう使い分けをする人が多いようですね。
前田
昔は、戻り値がある時はブレースを使わないといけなかったですよね。
まつもと
ああ、そうそう。今は、do でも、なんとなくできちゃうんだけど。
ささだ
なんとなく使えるんですか、あれは?
まつもと
なんとなくというか、そのようにしたんだけど、文法上、つまり、yacc 記述がよくわかんないなあ、と。ほんとにできてんのかいな、と思う時もある。
ささだ
Ruby のパーサは大変ですよね。
まつもと
大変だよねえ (笑) なんかね、思いついた時にごそごそと変更しちゃうから、すごい冗長だったりするんだよね。で、この冗長なのを直したらどうなるんだろう、って直すと動かなくなっちゃったり。手が出ない。「ここをこうやったら整理できるじゃん」と思って yacc 記述を整理すると、"shift reduce conflict" とか言われちゃう。C とかなら、こことここをリファクタリングして、関数切り出せば一発なのに、yacc はそうはいかない。

Ruby 以外で作った言語

ささだ
Rubyist になったきっかけは? (笑)
まつもと
Rubyist って名前を作ったのは僕なので (笑)
ささだ
じゃあ、Ruby を作ったきっかけは? スラドのインタビューでもありましたね。
まつもと
うん。「作りたかったから」
ささだ
Ruby 以外で作った言語はありますか?
まつもと
いくつかあるよ。卒業論文で作った言語は、Ada から Eiffel にマップするという変化を、C をベースに行うとどうなるかというもので、スタティック・タイピングで、多重継承バリバリの言語、っていう今と全然違うものだった。そんな大したもんじゃないんだけど、C のジェネレータになってて。
ささだ
それを Ruby にひきずらなかったのは、やっぱりそんな言語ではプログラムは作りづらいと思ったんですか?
まつもと
結局、スタティック・タイプのコンパイラ型言語って、嬉しいケースが少ないんだよね。嬉しいケースは、もちろんあるんだけど、僕が --- あ、僕は自己中心的だから --- ユーザとして、ツールとして使おうと思ったら、Ruby のようにダイナミック・タイピングで、すっと書いてすっと実行するような言語のほうが出番が多い。ので、結局、Ruby みたいになった。

Ruby で大規模プログラミング

ささだ
ダイナミック・タイピングの言語についてよく言われるのは、大規模プログラミングには向かない、というものですが、まつもとさん自身は大規模なプログラムは Ruby では作らない、ということですか? それとも、Ruby で充分いけると?
まつもと
たいがいのものは、Ruby でいけるんじゃないかな。
ささだ
じゃあ、今の Ruby インタープリターを Ruby で書いてください、って言われたらどうします?
まつもと
それはまた別問題だよね。Ruby インタープリターは Ruby では書きたくないねぇ。
ささだ
どのへんですか、それは? 実行速度などは置いといて、ただ単に動くようにする、ということなら?
まつもと
オブジェクト指向言語でオブジェクト指向言語を実装するというのに、脳がついていけないんだけど。それって、僕だけ? (笑) C++ で言語作ってる人がいるけど、よくやるなぁ、とか思う。ベース言語のクラスとか継承とかと、実装言語のクラスや継承がごっちゃになて、訳わかんなくなっちゃう。設計して、どういう風に作ろうかなと思った時点で、もう、わかんなくなって「もういい、やめた」って。
ささだ
private といっても、どっちの private だかわからなくなる。
まつもと
そうそう。で、「もういい、やめた」と。今の Ruby のソースだと、C にはそんなものはないので、「継承」といったら、Ruby のための継承そのものを C で利用するしかないわけで、シンプルでわかりやすい、僕にとっては。だから、たとえば、String クラスのメソッドのいくつかを Ruby で書け、とか、あるいは、C でコアな部分だけ書いて、ライブラリの部分は Ruby で書け、っていうことなら、まだ理解できて問題ない。実行するたびに Ruby のソースコードをロードするのはいやだから、というだけの理由で、今は C で書いてるけど。でも、本当にコアな部分っていうのになると、僕は、オブジェクト指向言語では書けない。
ささだ
それは名前がぶつかっちゃうから?
まつもと
名前とか概念とかがぶつかってきちゃうから、脳のスタックオーバーフローていうか……。
ささだ
Mail Organizer は、でかくないんですか?
まつもと
Emacs のフロントエンドの部分は、4 〜 500 行。まあ、これから倍くらいにならないと実際に使い物にはならないだろうけど。で、Ruby で書いた部分は、1000 行ちょっとで、Estraier とのインターフェースは C で書いたんだけど、それは、2 〜 300 行かな。すごいちっちゃい。「大規模」とは全然言いがたいよね。
ささだ
Ruby で大規模となると、まつもとさん自身は作ったことありますか?
まつもと
あんまりないね。多分、僕が作った一番でかいプログラムは、Ruby インタプリタそのものだと思う。Ruby で書いたものでは、tk.rb が僕が作った部分だけでも、何千行もあるから、すごいでかいんだけど、でもあれは、どっちかっていうとライブラリで下層部分だし。前田君のほうがよっぽど大きいアプリケーション作ってるよね。僕が聞いたのは、本体が 1 万、テストが 2 万。
前田
今は、そこから倍以上になってる……。
ささだ
じゃあ、そのへんは前田さんのインタビューで (笑)

Ruby とのつきあい

ささだ
現在の Ruby とのつきあいを教えてください。
まつもと
作ってます (笑) あ、「メール書いてます」ってのは、どうだろう? メールリーダーの話じゃなくて、ruby-talk のメールを読むことそのものが、Ruby との関わりだということだけど。
ささだ
一日のうちで、ruby-talk を読む時間の占めてる割合はどのくらい?
まつもと
論文書いては、ML 読み……というふうに、細切れにやってるから……
ささだ
ruby-talk を全部読み出したらすごいですよね。
まつもと
Windows って書いてあったら、瞬間にスレッドごと横へ、みたいなことはしてるけど。あと、返事がいくつかたまってる時は、中田さん*10の返事がついてればそれ読んで、問題が解決したかどうか見る、とか (笑)
ささだ
なるほど、Ruby とのつきあいは、ruby-talk。
まつもと
ruby-talk、結構重要だよね。

Ruby の好きなところ、嫌いなところ

ささだ
Ruby の好きなところと、嫌いなところを教えてください。
まつもと
好きなところは、まあ飛ばすとして、嫌いなところは、インタープリターのソースコードが訳わかんないところ。って、自分で言っちゃってるし (笑) eval.c のあたりが、特にちょっと好きじゃないんですけど。でも、ささださんがやってくれる*11からいいや。あと、parse.y あたりも好きじゃないかもしれない。
ささだ
ほかのところは? variable.c とか array.c とか、きれいですよね。
まつもと
結局、eval.c と parse.y が汚いところを全部面倒見て、フレームワークを作っててくれるから、他のところはきれいに収まってるんだよね。だから、拡張モジュールやライブラリを書いてる人は、そういうきれいなところしか見ないから、「Ruby バンザイ」とか思ってるかもしれないけど、eval.c とか見ると頭痛が……。あの二つはブラックマジックだから。「よく動いてるよなぁ」って。あ、ほら、ジェンガ*12ってあるじゃん。最初このくらいのやつを作ったんだけど、ここ直さなくっちゃ、って……。で、壊れそうになると「おっとっとっと」って、思わず手を出して支えてしまう、という (笑)

Ruby を使った事例

ささだ
じゃあ、今度は「Ruby を使った事例」ということで、成功した事例はありますか?
まつもと
僕は、Ruby 使って、アプリケーションはあんまり書かないからね。「ちょっと便利なプログラム、100 行」という程度の小さいのは書くけど。デジカメのデータを吸い上げて並べるプログラムとか、やっぱりデジカメで、Exif の画像の日付を取り出してくるやつとか。ああいうちっちゃいのしか書かない。
ささだ
Ruby 関連で、自分にとってのキラー・アプリ、キラー・ライブラリという存在はありますか?
まつもと
僕が使ってる、ある程度規模の大きい Ruby のアプリケーションっていったら、tDiary でしょうね。あとのは、みんな小さいし、使ってないし。tDiary は……全部足しても 3000 行か。
ささだ
他の人が作ったライブラリで、これはいいというものはありますか?
まつもと
parsedate は、よくがんばってる。あとは、ri は使ってるね。
ささだ
あ、あれ使ってるんですか?
まつもと
読むのに使ってるし、RDoc も書いてるよ。リファレンスはメソッドを追加するたびに書いてるし。
ささだ
やっぱり、あれが標準になるんですかね?
まつもと
うん、英語では少なくともそうだろうね。日本語ではわかんないけど。ああいうの見ると、国際化ってどうしたらいいんだろうと思うよね。
ささだ
うーん、結構不満が多いですよね。
まつもと
国際化については、考えてないからね。gettext みたいにドキュメントをキーにするのかねえ? 英語のドキュメントはキーで、それに対応して各国語を……。全文をキーにしたら、ちょっと変更したらもう引けなくなってまずいかなぁ? あ、それはそれでいいのか。「最新版のドキュメントでない場合は英語で見られます」っていうことで。
ささだ
ご自分でも Ruby のリファレンスはよく読みますか?
まつもと
あんまり読まない。ソースを読む。
前田
まつもとさんって、RDoc は書けます?
まつもと
えっと、他の人のをコピペしたら書けるよ。新しいメソッドを作る時は、似たメソッドのやつをカットアンドペーストして、書き換えて作る (笑) それから、あんまり使ってないけど、AspectR は、面白いと思う。この大きさでこれをするか、って感じ。AspectR、300 行しかないんだよね。

Ruby の文法仕様

ささだ
Ruby の習得は簡単でしたか? 自分で、あとから思い出して「これどうだったかな?」って思うのは?
まつもと
文法については、ないね。そんな難しい文法じゃないし、見かけは。ま、詳細を考え出すとちょっと難しいんだけど。
ささだ
つまり、現在の Ruby の仕様は、まつもとさんにとっては自然だということですね。
まつもとmatz03.jpg
そういうことが多いかな。あと、不自然と気がついていない、か。なんかね、他のいくつかの組み合わせで出てる結果については、自然かどうか検討しないといけないんだよね。他のを組み立てていったら結果的にこうなりました、っていうのについてはまだ検討してなかったりして。それは不自然だと指摘されて、「あぁ、そうだよね」と思って、また、ジェンガの積み木を 1 個ずつ (笑) ……っていうのはよくあるんだけど。

Ruby について、もう少し突っ込んだ話

lambda、proc、Proc.new

ささだ
それじゃあ、Ruby について、突っ込んだ話を。Ruby にこれから付け加えたい予約語、付け加えたかったけどもうあきらめた予約語というのはありますか?
まつもと
付け加えたかった予約語、ねぇ。
ささだ
特にないですか? lambda は予約語になるんでしょうか?
まつもと
lambda は……あー、ささだ君からリクエストがあれば (笑)
前田
うーん、Proc.new 派としては、それは……。Proc.new という予約語はいやですよね (笑)
まつもと
なんだ、その予約語は (笑)
ささだ
lambda も Proc.new も proc もみんな同じなんでしたっけ?
まつもと
ちょっと違う。
前田
Proc.new と proc が違うんでしたっけ?
まつもと
うん。でも、proc は obsolete になるから忘れていい。
ささだ
え、proc 消えちゃうんですか?
まつもと
うん、消える。
ささだ
Proc.new で、引数ブロックなしが、現在の proc と同じものを返す?
まつもと
うん。でも、それもなくていいかなと思ってる。
ささだ
なくなっちゃったら、困らないですか?
まつもと
だから、ブロックアーギュメントそのものにするか。Tk とかで、引数に Proc オブジェクトを指定しても、ブロックを指定しても、どっちでもいい、っていうのがあって、あれを Proc.new を引数リストのデフォルトで呼んでるのに使ってるケースがあるんで、もしかしたらなくせないかもしれないんだけど。

Ruby の特徴と Smalltalk

ささだ
これを抜いたら Ruby じゃない、という特徴はありますか?
まつもと
なんだろう。代入とか……それじゃ言語じゃないだろう (笑) 「メソッド呼び出しも欠かせないよね」とか、そういう話? (笑)
ささだ
これを抜いちゃったら、たとえば PHP になっちゃう、とか。
まつもと
やっぱり、ブロックかなぁ。ブロックは結構重要みたい。あの文法のブロックっていう意味でね。Smalltalk にも、ブロックはあるけど。
ささだ
Smalltalk と、何が決定的にちがうんですかね?
まつもと
文法 (笑)
ささだ
いや、まあそれは (笑) Smalltalk 上で Ruby スクリプトのトランスレータを書けば、書けるのかな?
まつもと
えっとね、意味論について言えば、Mix-in はちょっと違う。あれは本質的には多重継承だから。標準の Smalltalk には多重継承ないよね。CINCOM の Smalltalk には多重継承があるって聞いたことがあるけど。
ささだ
「Scheme の VM で Ruby 実装したら早いんじゃない?」とか、「Smalltalk とか Squeak で実装しちゃえば」とか、よく言われますけど。
まつもと
多重継承の件が解決できれば、すごく速い Smalltalk の VM に実装するのはできそう。そんなにきつくはないと思う。Scheme のほうもやればできると思うけど、すごく速い Scheme ってあんまり見たことないんで……。

尊敬する言語設計者

ささだ
最も尊敬する言語設計者は誰ですか?
まつもと
ある意味、ラリー (・ウォール)。でもなぁ、彼を言語設計者として尊敬してる、っていうのとはちょっと違うんだよなぁ。だって、彼の言語設計のセンスは「ちょっと難あり」だもんなぁ、僕の基準からいうと。
ささだ
じゃあ、どのへんを尊敬してるんですか?
まつもと
まずひとつには、彼の話は面白い。彼の考えていることは面白い。彼の書くことも面白い。面白いことが言えるプログラマー。
ささだ
まつもとさんも「面白いことが言えるプログラマー」になりたい?
まつもと
なりたい。努力してはいるんだけど、なかなか彼の領域には達せない。「今年はスクリーンセーバーかよ*13」って感じでね。
ささだ
じゃあ、言語設計者では?
まつもと
……グイド*14はね、あんまり取っ付きのいい人じゃないからね、わりと気難しい感じの印象の人で。
前田
人柄になっちゃってますよ。人柄は関係なく、「この言語を作ったのはすごい」とか。
まつもと
Lisp を作ったのは、すごいかもしれない。ジョン・マッカーシー*15とか。あ、でもね、ジョン・マッカーシーは、Lisp を機構として紙の上に書くものとして考えたんだけど、スティーブ・ラッセル*16という人が「これ、インタープリター書けるじゃん」と言って、ほんとにインタープリターを実装しちゃったのは、すごいかもしれない。すごく革新的な言語って、あんまりないんだよね。Ruby は全然革新的じゃないし。そういう意味では、Lisp っていうのは別格な感じがするよね。
ささだ
彼しかできなかった、とか、彼らが居なかったら、50 年後まで、Lisp はなくって Fortran しかなかっただろう、みたいな? 現れるべくして現れた、とか。
まつもと
現れるべくして現れたんだと思うけどね、どうなんだろ?
前田
Lisp がなかったら、今どうなってたんでしょうね?
まつもと
どうなってただろうね? Java に、GC がついてなかったかもしれない。かんべんしてくれーって感じ。
ささだ
クロージャがなかったとか、そもそも、誰も言語設計をしなかった、とか。言語といえば、みんな Fortran みたいなので、Fortran のパーサを書かなくちゃいけない、ってみんなが思っちゃって……。

Ruby を使って欲しい人

ささだ
いつか、この人に Ruby を使って欲しいという人はいますか? こう言われても困るかもしれないけど、奥さんとか、あ、お子さんとか。
まつもと
ウチの子はプログラマーっていう感じじゃないんだよな。育て方間違ったかもしれない (笑)
ささだ
お子さんをプログラマーにはしたくないんですか?
まつもと
なりたきゃなったらいいとは思うけど、積極的になれと言うつもりはない。小説書くほうがいいんじゃないかな。クリエイティブで。
かずひこ
同じぐらい、ヤクザな商売だと思うんですけど (笑)
まつもと
僕、ヤクザな商売は、反対してるわけでは…… (笑)
ささだ
じゃあ、使って欲しい人は特にいない、ということですか?
まつもと
あー、でもねぇ、予想外の人が使ってるとびっくりするよね。ブラッド・コックス*17が使ってるとか。
ささだ
使ってるんですか。
まつもと
うん。Ruby 使ってるって言ってた。あ、よろしく言っといてね*18
ささだ
「よろしく」って日本語で言ったりして。
まつもと
あ、えーと英語でお願いします (笑)

言語設計者として気を配っていること

ささだ
言語設計者として、最も気を配っていることはなんですか?
まつもと
腐った仕様を入れないこと。
ささだ
そのへんは、やっぱりチェックを?
まつもと
まあ、僕の感性だけどね。これ入れたらまずい、っていうアラーム・サインが鳴る時はやめておこう、と。RCR を見てるとわかるけど、いろいろ入れたくなるんだよね、言語設計の時って。でも、たいがいのものって、入れたらちょっと便利になるけど、入れると全体のバランスが崩れることの多くて。「これ入れると、ちょっといかんだろう」って。
ささだ
RCR って、現時点で 270 以上ありますが、全部、目を通してるんですか?
まつもと
見ることは見てるよ。どうしようかなー、って感じ。理由書かなくちゃいけないのがめんどくさくて、放ってあるんだけど、ほとんどは、リジェクトだよね。
ささだ
無視してるのはリジェクト、と。
まつもと
うん、基本的には。古いやつは、理由書いてだいぶリジェクトしたけど、最近のやつは放ってるね。でも、見ていいなと思ったら、そのまんま取り込んだりしてる、大きくないやつは。文法をいっぱい書き換えなくちゃならないけど入れたほうがいいと思ったのって、あったかな? 今、すぐには思い出せない。もうすでに「やる」って宣言したのはあるけどね。キーワード引数とか。

Ruby の将来について

ささだ
1.8.2 のリリースはいつですか?
前田
今、見直さないといけないところってあるんですか? OpenSSL は通るようになった*19んですよね。
まつもと
うん、じゃあ、いいのかな? preview 3 にして出しちゃおうかな? 論文が終わってから。
ささだ
Ruby の将来ですが、Ruby はこれからどうなりますか? どうしていきたいですか?
まつもと
まったり、細々と続けていきたい。技術的には、たとえば、もっと速くなればいいとかいうのはあるけど。eval.c と perse.y のブラックマジックが減ればいい、とか、それくらいで。長い間懸案の、method combination や selector namespace は、すばらしい実装方法を思いついて、できたらいいなとは思うけど。でも、それらって、なくてもいいよね、はっきり言って。今でも、充分と言えば充分だし。
ささだ
ソーシャルに、こういう方面に行きたい、ということはないですか?
まつもと
人々が Ruby をどう使ってくれても、僕はかまわない。で、「Ruby を作ってる」ということで、ご飯が食べられればいいというのが僕の目標なんだけど、もう実現してしまった。
ささだ
次の目標はないんですか?
まつもと
このまま、食べつづけていくこと (笑) クビにならないように (笑)

プログラミング全般

Ruby と C 以外の利用言語

ささだ
初めてコードを書いたのは、いつぐらいですか?
まつもと
コードを書いたのは中学校 3 年生、かな。コンピュータに触ったのは小学校 6 年生の時で、その時は、16 進ダンプを打ち込んだから、コードに触ってはいるけどプログラミングはしてないな。
ささだ
その時は、何を使ってたんですか?
まつもと
当時は、L-Kit 16 っていうワンボードマイコン。1970 年代半ば。それはダンプコード打ち込んだだけ。で、中 3 の時は、BASIC。シャープのポケットコンピュータ。
ささだ
Ruby 以外の言語は何か使ってますか? C はもちろんとして、それ以外で。
まつもと
使うのは Ruby と C の二つかな。書くといえば、Perl と Python をたまに書くけど。
ささだ
え、何に使うんですか?
まつもと
確認のために書くのがあって、あとは、fml*20をハックしたりとか。
前田
ああ、fml いやですよね。*21
まつもと
fml のフックを書くのに、「なんで、ブロックないんだよ」とか「イテレータ呼びてぇ」とか言いながら、Perl を書いてる。
前田
そこはもう、わたなべさん*22にお任せ。
まつもと
ああ、そのほうがいいかもしれない。Python もなにかをハックする時に使うことが多い。確認とハック。あとは、Emacs Lisp。僕は Lisper なんで (笑) Emacs Lisper。普通の Lisp は使わないなぁ。
前田
ループ使っちゃう Lisper ですね。
まつもと
うん、ループ使う。while とか平気で書いちゃうし。

印象に残るソースコード

ささだ
今まで読んだ中で、最も美しいソースコードはなんですか?
まつもと
あんまり美しいっていうほうは印象が残ってないなぁ。読めないとか、読んでもよくわからない、っていうほうは印象に残ることが多いんだけど。
ささだ
じゃあ、印象に残るソースコードっていうのは?
まつもと
Perl のソースコードは印象的だよね。すごい。読めない。マクロの嵐で、よくわからない識別子が山のように出てきて、いったい何? みたいな、すごい略語でさぁ。ほんとに、名前重要。この識別子は、何を表しているのか、何をしようとしているのか、わかんないんだよ。

日常生活など

普段の仕事

ささだ
普段、仕事って何してるんですか?
まつもと
Ruby 作ってます。時々、Mail Organizer も作ってます。
前田
それが仕事なんですか? (笑)
かずひこ
それで終わりなのか? (笑)
まつもと
メールも読んでます。あと、書いてます。

仕事とプライベートの両立

ささだ
「仕事とプライベートの両立」っていうのは……。
まつもと
うん。全然できてません。プライベートの時間は取れてるんだけど、「お子さんとの交流」もできてるんだけど、仕事がちゃんと進んでないから駄目かな、と。
ささだ
普通、逆ですよね (笑) 仕事ばっかりで家族が怒ってる、とか。
まつもと
それでもやっぱりね、家族にとっては。家でコンピュータ触ってるから、怒られるんだよね。
ささだ
普段、家では何してるんですか?
まつもと
ご飯食べてるか、ハックしてるか、寝てるか……。
ささだ
お子さんとキャッチボールなんかは?
まつもと
しない、かな (運動オンチだから)。でも、子供と遊んではいるよ。

コンピュータ以外の趣味

ささだ
映画とか本とか音楽とかゲームとかは?
まつもと
ゲームはしない。たまに、パズルみたいなのやソリティアとかはするけど、いわゆるゲームはしない。ウチはゲーム機もないので。映画は時々観る。
ささだ
怪物くん*23は?
まつもと
怪物くんは、ポスターを見て思っただけで。だいたい、まだ公開してないじゃない、『ヴァン・ヘルシング』は。『サンダーバード』が観たいんだけど、なかなか。僕はサンダーバード世代で、子供のころから「あ〜、さんだーばーど !」とか思いながら育ったんで。
前田
世代の違いだ……。
ささだ
本はどうですか。日記によく SF のことが書いてありますね。
まつもと
最近、減ったけどね。子供のころ --- 高校から大学くらいまでは、結構読んでた。最近は、時々「これを読みなさい」という指示があるので。
かずひこ
どっからですか?
まつもと
高橋さん*24。高橋さんの場合、「これを読め」って言って、くれたりするから、読まないわけにはいかない。そうすると、この人の他の作品も、って読んだりする。最近は、イーガン*25とチャン*26を読みましたよ。
ささだ
スポーツは?
まつもと
僕、スポーツはあんまり好きじゃないんで。オリンピックがあったけど、見たのは卓球だけかな。ウチの奥さんが元卓球部で、「愛ちゃんを見るんだ」と言って録画してたから、わざわざ。
ささだ
奥さんも他のは見ないんですか?
まつもと
他のは、試合は実際には見なかったね。で、新聞読んで「メダル取ったね、がんばったね。」とか、ニュースでダイジェスト見るくらい。昨日、室伏が金になるかどうかは、関心があったみたいだけど。
前田
どっちかっていうと、ゴシップ系だな、それは。
まつもと
僕自身は全然スポーツマンじゃなくて。やるほうも観るほうも。子供のころ、野球は定期のテレビ番組が潰れるから嫌いだ、っていうタイプだった。「プロ野球大嫌い」ってね。

使用しているマシン

ささだ
使ってるマシンのスペックは?
まつもと
これ。CF-B5ER
ささだ
それで、もう充分なんですか?
まつもと
遅いって思ってたんだけど、もしかして充分かも。今まで遅いなーって思ってたのは、実はメールリーダー cmail が遅いだけで、Mail Organizer にしたら結構速いかも、読むほうは。あと、Firefox も遅いんですけど、それはどうしたらいいでしょうか?*27
前田
メモリが、とか?
まつもと
メモリは足りない。192M。
ささだ
キャパ、いっぱいなんですか?
まつもと
もう積めない。
前田
買い換えないんですか、マシン自体を。あ、トラックボールか。
まつもと
トラックボールのマシンは、どこにあるんでしょうか? (笑)
ささだ
トラックボール専門なんですか?
まつもと
うん。3 台続けて、トラックボール。
前田
トラックポイントは許せるから、ThinkPad なんですよね、選択肢が。*28
まつもと
トラックポイントが許せるんじゃなくて、タッチパッドが許せない。
ささだ
タッチパッドいいですよ。
まつもと
なんか、狙ったとこに行かないんだよね。

好きな女性のタイプ

ささだ
好きな女性のタイプは?
まつもと
そんな…… (笑)
前田
即答で「奥さん」って言わないといけないんじゃないですか?
まつもと
奥さん。ということにしておいてくださいよ。
かずひこ
3 人とも、そういうことで、って感じ。弱ぇ (笑)
ささだ
んー。奥さんのどういうところに惹かれましたか?
まつもと
どういうところに? うーん。そうだねぇ……。
かずひこ
だいぶ、スラッシュドットのインタビューとは違う方向になってきましたね (笑)
まつもと
子供も含めてだけど、あの人たちが居なかったら、僕は多分この世の人ではなかった、というか、コンピュータだけにのめりこんでいたんじゃないかな。matz04.jpg
前田
家にピザの箱がいっぱい、とか。
まつもと
そうそう。体壊して、とかね。そんな感じ。
かずひこ
なんか、いい話になりましたね、今ので。
ささだ
きれいにまとめられちゃった。
まつもと
飛んでいかないようにしてもらってるんじゃないかな、という気はしてるんだけど。

Rubyist の輪

ささだ
お次のインタビューは、どちらにしますか?
まつもと
えーと、じゃあ、付き合いが長いほうで。
ささだ
じゃあ、前田さんということで、まつもとさんから前田さんへの質問が何かあれば。
まつもと
ねずみは出なくなりましたか、って (笑)*29
前田
いました。昨日、捕獲しました。
まつもと
捕獲したのか。でも、一匹じゃないよね、絶対にね。

これからプログラミングをやりたい人々へ

ささだ
若手の人に何か一言、言いたいことがあれば。これからプログラミングやりたい人、学生、新入社員などに。
まつもと
プログラミングはほんとに面白いんで、いろいろやってみてください。でも、先達の知恵は、見たほうがいいかもしれないな。
ささだ
ははぁ、なるほどね。もっとソース読め、と。
まつもと
若い人は『Code Reading』買ってください。あれ、年寄りのための本じゃないよね、若者のための本だ。『達人プログラマー』は、若者のための本じゃないと思うけど。
ささだ
後輩の指導は、どんなふうにされてるんですか?
まつもと
いや、してません。何か聞かれたら、それに答える。
前田
まつもとさんは、「教育でプログラマーが育つ」っていうことに、否定的ですよね。
まつもと
うん。自分で勝手にやれ。自分でできない人は、教えてもできるようにはならない。
ささだ
でも、会社だと困りません? あ、でも、今は、できる人が寄ってくるから、いいんですかね、こちらだと。
まつもと
とりあえず、ね。
ささだ
できる人が寄ってくるっていうのは、いいですよね。

読者への一言

ささだ
じゃあ、最後にこれ読んでる人に一言、なにか。Rubyist の方々に。
まつもと
今後とも Ruby をよろしく。ウチの子をよろしくお願いします。
ささだ
どうもありがとうございました、長々と。
まつもと
いえいえ。

おわりに

まつもとさんは、すでにいろんなところでインタビューに答えているにもかかわ らず、今回も大変興味深いお話を伺うことができました。このインタビューが、 まつもとさん、そして Ruby についての理解の一助になれば幸いです。

本当はこのインタビューは 30 分ほどで済まそうと考えてましたが、話が止まらず、 実に 90 分ほど長々と話していました。折りしもまつもとさんは論文執筆で追われ ている (はず) なのに、長時間お付き合いいただきまして、本当にありがとうご ざいました。

次回は、前田修吾さんのインタビューを掲載したいと思います (インタビュー自 体はもう済んでるのです)。お楽しみに。

(インタビュー:ささだ、編集:中村 (う)・早川)

Rubyist Hotlinks 連載一覧


*1 Larry Wall。Perl 作者

*2 Donald Ervin Knuth。スタンフォード大教授。著書に『The Art of Computer Programming』など。TeX の作者としても著名

*3 コリント人への手紙第一 10 章 13 節

*4 吉岡弘隆氏。ミラクル・リナックス株式会社取締役兼技術本部長

*5 どう見てもかなりこだわっている

*6 当時は「オープンソース」という単語はまだない

*7 Richard Matthew Stallman。通称 rms。フリーソフトウェアファウンデーション創始者

*8 『Ruby レシピブック』巻末参照

*9 一部の Rubyist の間で、つい先日も「map 派 collect 派論争」というのがあった。前田さんは collect 派

*10 中田伸悦氏。ruby committer

*11 IPA 2004 年度未踏ソフトウェア創造事業 未踏ユース 採択プロジェクト「Ruby プログラムを高速に実行するための処理系の開発」のこと

*12 イギリスの卓上ゲーム。棒状の積み木を高く積み上げて塔を作った状態で開始し、その塔から積み木を 1 本抜き取っては塔の一番上に積み、ということを順番に行い、塔を崩してしまった人が負けになる

*13 "the State of the Onion 8" http://www.perl.com/pub/a/2004/08/18/onion.html

*14 Guido van Rossum。Python 作者

*15 John McCarthy。MIT 教授。Lisp 設計者

*16 Steve Russel。Lisp 実装者。マッカーシーの大学院生だった。最古のコンピュータゲームの一つ、スペース・ウォーの作者としても知られる

*17 Brad Cox。Objective-C 作者

*18 コックスは今年の Ruby Conference でキーノートスピーチを行う。まつもとさんは今年は出席できないため、出席するささだにお願いしている

*19 つい先日まで、環境によっては OpenSSL のテストで落ちる場合があったが、修正された

*20 メーリングリストマネージャ。Perl で実装されている。ruby-list や ruby-talk などの ML は fml で管理されている

*21 前田さんは、Ruby の各公式 ML の管理者の一人

*22 わたなべひろふみ氏。ruby committer。Ruby の各公式 ML の管理者の一人であり、また、Jperl などでも知られているように Perl ハッカーでもある

*23 『ヴァン・ヘルシング』。ポスターに、狼男・ドラキュラ・フランケンシュタインの怪物が描かれているため、『怪物くん』を想起させられるらしい

*24 高橋征義氏。日本 Ruby の会会長

*25 グレッグ・イーガン。代表作『宇宙消失』など

*26 テッド・チャン。『あなたの人生の物語』

*27 このインタビューの直後、風博士に乗り換えて、ずいぶんよくなったらしい

*28 その後、B5ER が不調になり、Thinkpad X31 を購入された

*29 最近、前田さん宅ではねずみが出没するようになり、日々対処に追われているらしい