@IT編集部の西村賢がRuby/Rails関連を中心に書いています。

「なんでRubyなんか作った!? 迷惑だ!」に対するMatzの答え

»

 2012年9月に行われた札幌Ruby会議2012の基調講演の1つで、Rubyの生みの親のまつもとゆきひろさんが、最近あった面白いエピソードを混じえて“イノベーション”の本質について語っていました(44分の動画)。ポイントとなる部分をまとめてみました。まつもとさんの話はもちろん、統計的裏付けだとか学問的裏付けがある議論というものではありませんし、ご本人も楽しそうに話し、聴衆も楽しんでトークを聞くというゆるい感じのものでした。ただ、「イノベーションの本質は捉えがたい」というメッセージや、「だからあれこれ考えずにコードを書こう、われわれはコードを書くことにアイデンティティを感じているのだから、それこそがハッピーになる道だ」というメッセージは、参加していたRubyistたちの胸に響くものがあったのではないかと思います。

 以下、口語文体のまま、ポイントとなる前半のトークをまとめてみました。トーク後半では、多様性は善であるという話を引き継いで、JRubyやRubinius、MagLevを選ぶべき理由の話や、組み込み向けにmrubyを作っている理由などを話しています。そちらに興味がある人は是非オリジナルのトークをご覧ください。

Matz01

●TwitterでPerl好きに絡まれた

 Rubyの開発を始めたのは1993年の2月です。Unixのスクリプト言語を目指しました。Unixのスクリプト言語が作りたかったというより、それが自分がいちばん使いそうなところだったからです。

 Perlの代替品というのを目指したのですが、ちょっとやり過ぎだったかな、と。(Perl由来の)ヘンな変数とか残ってますが、あれは失敗だった。でも、Perlの代替というのはRubyを作った本当の理由ではなくて、自分で作ったものが自分で使えるドッグ・フーディングが出来て楽しいというところで、実は代替しようとまでは思ってなかった。

 そう思って20年、(Rubyを)作ってきたんですね。

 で、最近Twitterで私に絡んできた人がいました。「Perlがあるのに、なんでRubyを作ったんだ」と言うんですね(笑)。PerlがあるのにRubyを作るなんて、重複だし、車輪の再発明だし、何より有限の労力の無駄遣いだというんですよ。だからRubyなんか存在しなかったほうが良かったのに、お前はなんてことをしてくれたんだ、と。多くのIT系の人たちはRubyのことをネガティブに思ってるよ、と胸を張って言われてですね……。

 ……って、どう思いますか? まあRubyカンファレンスでこれを言うって卑怯なんですけどね(笑) でも、かんべんしてよ、と思いましたね。

●リソースを集約できればコスト減、しかし失うモノは大きい

 確かに人類は70億人しかいないし、プログラマははるかに少ないんですね。プログラマの中で開発コミュニティに参加する、ライブラリを作る、CPANのモジュール登録者とか、となると、そういう人はさらに少ないんですね、確かに。で、当時、そうした人たちがみんなで協力して当時のPerlに対して努力する、集約ということを考えたら、“もしそれが可能だったら”、確かにそれはリソースを有効に活用したという話になりますよね。

Matz03_2

 でもですよ、考えてみたら、われわれにとって最も大切なリソースはマンパワーではなくて、モチベーションだと思うんですね。

 モチベーションは誰かに制御されるようなものじゃない。世の中に新しいプログラミング言語を作ってみたいという人がいたとして、そういう人に「お前は新しいプログラミング言語を作るより、Rubyに貢献したほうが労力の無駄にならないよ」といって、プログラミング言語を作り出す夢を諦めさせたら、どうでしょう。それでリソースの無駄遣いは防げたかもしれないけど、われわれは大切なものを失っているのではないか、と思うわけですよ。

 われわれは機械ではないので、やりたいと思うときに、何かを達成できるんです。何かを達成するには、突き動かす内なる力が必要です。それはモチベーションによって現れるんですね。

 ある人はプログラミング言語に対して情熱を感じるかもしれないし、ある人はアプリに情熱を感じるかもしれない。ある人はスポーツかもしれません。何らかの情熱があって、それに突き動かされているときに偉大なことができるんじゃないかなという風に思うんですね。私の場合はプログラミング言語に対する愛です。世の中に存在するすべての言語を愛してるといっていいんですね。PHPも。

 モチベーションを笑ってはいけない。

 私は誰が何に情熱を持っても笑いません。まあ、「ちょっとそれは……」と言うことはあるかもしれないけど(笑) たとえそれが車輪の再発明であっても構わない。何でもやったほうがいいと思うんですね。それによって多様性が生まれます。私は多様性は良いものであると思っています。

●多様性はイノベーションに必要なコスト

 多様性にはコストがかかります。もしPerlしかなかったとしたら、Perlはより充実した言語になっていたかもしれません。そうやって理想の言語が作れるとしたら、そのときかかったコストは、Rubyのある世界より安かっただろうとは思います。でも、住みやすかったのか? というと、そうではないのではないか、と思うんですね。

 何百、何千とあったはずの世に出なかったプログラミング言語、そうしたものは無駄だったのか? それはイノベーションのコストではないか。

 この地上で、誰一人としてイノベーションのことを理解してないんですね。イノベーションを起こした人ですら、実は理解してない。

 よく私のところに来て、「なぜRubyは世界中で使われるようになったのですか」と聞く人がいるのですけど、内心は「分かりません」と答えたいんです。だけど、インタビュワーに嫌な顔をされるので、もっともらしいことを答えるんです(笑) 「コミュニティが~」とか適当なことをいろいろ言って。でも、分かりませんっていうのが正直な気持ち。分かりませんよ。

 再現性がないんですよ。イノベーションは再現できないんです。

 分かんないんだから、心配するのはやめて、コードを書いて幸せになろうと思うんですね。(日々コードを書くという)ミクロの世界で、“いま”充実して前に進んで行けばいい。中には成功するものもあるし、失敗するものもあるかもしれない。でも失敗しても「ぼくは幸せだったからいいや」と思えるんじゃないかと思うんですよ。楽しく野球をしている野球少年のところにいって、「きみはプロにはなれないよ」っていうのって、すごく暗い話じゃないですか。そういうことはしたくないですよね。日々楽しく野球すればいいじゃないですか。みんなにもハッピーになってほしいと思うんですね。

 (札幌Ruby会議2012のテーマである「We Code.」というメッセージにあるように)もし皆さんも、コードを書くということにアイデンティティを感じているなら、コードを書いているときが幸せですよね。アイデンティティのあるところに幸せがあるのですから。だから、つまんない議論とか、考察とか、調整とか、そういうめんどくさいことをやめて自由にコードを書きましょうよ。強制されずに、幸せに書きましょう。

Comment(3)

コメント

「20年後も現役プログラマでいたい」、まつもと氏がRuby20周年で語る にコメントさせて頂いたものです。

まさに、という内容ですね。激しく同意、というやつでしょうか。
書かれている内容そのまま常に思い感じていることです。
世界的なプログラマの方が同じ考えであることは、おっしゃるとおり勇気づけられます。

たまたまとはいえ、こちらへ来てこのコラムを拝見できてよかったです。
関連するコラムも拝見してみたいと思います。
ありがとうございます。

ばしくし

「車輪の再発明はいかん!」って
Perlの人がそんな発言するなよという感じ。

Perlは、TMTOWTDIの精神でしょ?
やり方は何通りもあるってやつ。

Perlコミュニティは、「車輪はドンドン再発明しなさい」というカルチャーなのに
再発明を批判するなんて、Perlエンジニアの風上にも置けないw

Pythonの人がいうなら、説得力ありますけど。

ぼんくら

車輪の再発明がダメならタイヤメーカーとホイールメーカーは商品開発できないじゃないか…(困惑)

コメントを投稿する