過去2回にわたってお届けしてきたまつもとゆきひろ氏へのインタビューは今回が最終回となる。「誰かがRubyを実装し直したとしたら、いまのRubyよりもずっとエレガントで速いものができるはず」と語るまつもと氏は自身の存在価値をどのように見ているのかに迫る。
14年の歳月を経た今も、まつもとはRubyの開発で中心的な役割を果たし続けている。継続することこそが最も難しいといわれるオープンソースソフトウェアの開発において、1人の開発者が長期にわたって中心的な役割を果たし続けている例はそれほど多くない。こうしたことは、成功したから継続しているのだと思われがちだが、実際にはそう単純なことばかりではない。Rubyも、世界的に知られ始めたのは英語の書籍が発売された2000年秋以降で、Ruby on Railsによって広く使われるようになったのはこの2年ぐらいのことだ。その歴史の半分以上の年月は、いわば「下積み」だったことになる。
オープンソースソフトウェアは、多くの場合、開発者自身の個人的な必要性に駆られて生み出されることになる。自分自身どうしても欲しかったけど、その時点ではほかにそういうソフトウェアが見当たらなかったというのが典型的なパターンだ。リーナス・トーバルズは、PC互換機で自由に使える本格的なUNIX環境がほしかったが、1991年当時は貧乏学生が手軽に使えるものは皆無だったのでLinuxを作り始めた。ラリー・ウォールは、リモートにある複数のシステムのログを効率良く管理したかったが、awkでは制約が大きすぎて適さなかったのでPerlを開発した。
しかし、まつもとの場合、必ずしも自分自身の必要性に迫られてRubyを作ったというわけではなかったようだ。「オリジナルのプログラミング言語を作りたい」という夢が先にあり、それをずっと心に持ち続けながら試行錯誤を繰り返していたころで、「Perlと同じぐらい便利に使えて、本格的なオブジェクト指向プログラミングもできる言語があったら」という同僚からの示唆に出会う。それがRuby誕生の天啓となった。
大学に入って、本格的にコンピュータに触れるようになる以前から「オリジナルのプログラミング言語を作りたいと夢想していた」というのも、非凡なものの片鱗が感じられるが、まつもとの本当にすごいところは、その夢に向かってずっと着実に努力し続けてきたことにある。同僚の一言が天啓となったのも、あるいはまた、それをひらめきだけに終わらせずしっかりと結実させることができたのも、彼がその実現のために必要な「相応の知識と経験」をコツコツと積み重ねてきたからにほかならない。
思うに、Rubyの場合は、まつもと自身がそれを夢として持ち続けていたということが、今日の成功の大きな原動力になっているのではないか。夢を見ることも、ひらめきを得ることも、そのこと自体は誰にでもできる。しかし、その夢を持ち続け、それに向かって歩き続けるということを実践「し続け」られる人は、そうはいない。だからこそ、まつもとのように、継続することによって成功した存在は貴重である。世界的成功もさることながら、このたゆまぬ継続性こそ、もっと評価されていいのではないだろうか。(敬称略)
―― Ruby以外では、メーラー(MUA)を開発されてますね。
まつもと 「morq」(モルク)といいます。これは趣味として作っているもので、自分ではすでに利用しています。morqは、フォルダという概念をやめて、メールにタグをつけて管理する仕組みを採用しました。morqを使う以前は、メーリングリストごとにフォルダに分類するという、ごく一般的な方法でやっていたのですが、僕の場合、例えばruby-listとruby-dev、ruby-talk*を横断的に検索したいということも結構あって、フォルダによる管理には限界を感じていたのです。メールが数十万通を超えるといずれにせよフォルダでは管理しきれませんしね。タグは、メールを受信したときにつけることもできますし、後から全文検索をしてマッチしたものすべてにタグをつけることもできます。
―― これは全部Rubyで作っているのですか?
まつもと いえ、表示周りのフロントエンドはEmacs Lispで作っていて、バックエンドがRubyです。morqとしての機能はすべてバックエンドのRubyで実装されているので、フロントエンドはEmacs Lisp以外で作ることもできます。
―― それ以外に、密かにやっていることはありますか?
まつもと 最近はあんまりないですね。あとは、原稿を書くか、シェルスクリプトを書くぐらい。
―― シェルスクリプト!
まつもと シェルスクリプトはけっこう好きなんですけど。
―― Rubyがあるのに、シェルスクリプトを書いてしまう?
まつもと 外部コマンドを呼び出さないとできないような作業って、たくさんありますよね。そういうのは、さすがにRubyよりもシェルの方が楽なので。最近書いたものだと、例えば、バージョン管理システムのラッパーをシェルスクリプトで作りました。RubyのCVSリポジトリにある修正を手元のコピーと同期させるとか、手元のパッチをCVSリポジトリに登録するとかいうものです。リポジトリと同期するときに、手元だけで当たっているパッチをいったん全部外してとか、細かいことをシェルスクリプトに自動でやらせています。結構楽しいですね(笑)。
―― 今は、Rubyのコードよりも、C言語のコードを書いていることの方が多い?
まつもと うーん、そうですね。原稿を書いている時間などを除いて、僕のプログラミングの時間だけを見ると、Rubyでプログラムを書いている時間はすごく少ないかもしれません。テストスイートとしてRubyのプログラムは書きますけど。
―― 作っているけど……
まつもと ヘビーユーザーではない(笑)。
―― そのこと自体は、自分ではそれでいいと思っている?
まつもと うーん……。いいんじゃないですか?
―― 言い換えると、Rubyのコンセプトは「楽しいプログラミング」ということですが、Ruby以外を使っている時間が長いということは、まつもとさん自身は、「楽しくない」ことの方が多い?
まつもと Rubyでやらなくちゃいけない仕事というのが確かにあって、その仕事でRuby以外の言語を使ったら確かに楽しくない。それは容易に想像できる(笑)。ただ、毎日それに直面しているかというと、そうでもないので。
―― C言語で書くこと自体は別に、それはそれで構わない?
まつもと でも、C言語だけで書くのは苦痛でしょうね。Rubyのためのコードを書くというのは、実は、そのフレームワークそのものをRubyがかなり提供してくれているので普通のC言語プログラミングとは少し違います。例えばガーベージコレクタはありますし、メソッドを呼べるのでオブジェクト指向感覚で組めるとか。なので、RubyのためのC言語プログラミングというのは、一般的なC言語プログラミングと比べてかなり特殊なんです。RubyのためのC言語プログラミングをやっているときは快適だけど、ほかのC言語プログラムをいじっているときに同じように快適かといわれると、かなり違うと思います。
―― 逆に、Ruby以外のことだと、別にC++などを使ってもよいと思っている?
まつもと と思ってますよ、はい。ただC++を使っていて嫌なのは、何というか乱用できてしまうので、そういう人と一緒に仕事をすると自分がしんどいというのはあります。以前、一緒に仕事をしている人がカンマオペレーターを再定義していて、ひどい目に遭いました(笑)。自分だけでC++を使う分には、たぶんそういうことはないと思うので、そのことについて別にどうこう言うつもりはないですね。だから、どうしても使わなくちゃいけなかったら、もちろんC++も使います。でも、なかなかそういう機会はありませんけど。
―― Javaを使う機会はないですか?
まつもと 全然使わないですね。
―― 使いたいともあまり思わない?
まつもと 思わないですね。使わなくちゃいけない局面があまり思いつかないので。僕はお客様のためのプログラムを作らないのでパフォーマンスクリティカルなことはめったにないですし、そうなると、Javaじゃなくちゃいけない必然性というのはないですね。また、今のわたしは企業プログラマーでもないですし。そうすると、Javaを使う局面がないという……。
―― JavaでできちゃうことはRubyでできそうですしね。
まつもと そうですね。もちろん、幾つかの条件があれば、Javaが適切だということはいっぱいあると思うのですが、その条件が満たされることは、僕にとってはないということです。別にJavaが嫌いということではないけれど、僕にとっては不要という感じですね。Javaを嫌ってるんじゃないかと誤解されやすいのですが、そんなことはありません(笑)。
―― 嫌っているわけではないと。
まつもと 嫌っているわけではないですよ。僕はすべての言語を好きなので。
―― それは、いい面も悪い面も?
まつもと いい面も悪い面も含めて。「しょうがねぇなぁ」ぐらいのことは思っても、別に忌み嫌ったりとか、そういうことはないです。
―― プログラミング言語は愛おしい、と。
まつもと みんな愛おしいですね。特定の言語を使うことを強要されないかぎり(笑)。
いずれもRuby関連のメーリングリスト。ruby-listとruby-devは日本語でやり取りされているメーリングリストで、前者は使用に関する、後者は開発に関する情報交換のためのもの。ruby-talkは英語のメーリングリスト。
Copyright © ITmedia, Inc. All Rights Reserved.