日本人プログラマーで最も有名なRubyの生みの親

まつもとゆきひろ氏:ご紹介に与りました、まつもとゆきひろです。裏番組もおもしろそうなんですけれども(笑)、こちらに来ていただいてありがとうございます。何人ぐらい来てくれているのかな? まぁいいや。

今日はですね、「プログラミングのことわざ〜Rubyの父が語る教訓と知恵〜」というタイトルでお話しします。

まつもとゆきひろです。こんな感じのアイコンで活動していますけれども、Rubyを作った人として知られています。インターネットではひらがなです。ちょっと差別化しようと思って、大学生の頃からインターネットで活動する時には、ひらがなで名乗ると決めています。

海外の人とやり取りする時は、あだ名を作ってニックネームで呼んでもらっています。海外の人ってわりとファーストネームで呼びたがるのですが、「ゆきひろ」とか呼ばれるとちょっとドキドキするので、Matzという名前で活動しています。

Rubyを作った人として知られています。なんかちょっと偉そうではあるんですけども、おそらく日本人で一番有名なプログラマーじゃないかなと思います。

日本にも優秀なプログラマーや有名なプログラマーがたくさんいらっしゃいますが、みなさんがこれから海外に行くことがあって、「私は日本から来たんだけど、日本人のプログラマーを誰か知っている?」ともし聞くことがあったら、おそらくは私の名前が出てくる可能性が一番高いんじゃないかなと。少なくとも現時点ではね。

私の作ったRubyが世界中で使われていますし、それを作った人として知られているので、そういう感じで著名なプログラマーと(笑)。一番優秀なプログラマーというわけではないんですけども、一番有名なプログラマーではあるとは思います。

そのおかげかどうかは知りませんが、今島根県の松江市に住んでいるんですけど、松江市の名誉市民をいただきまして(笑)、なんかね、気恥ずかしいんですけれども。

松江市の名誉市民制度というのは、松江市にかつて住んでいたか今住んでいる顕著な業績のある人という制度だそうです。第1号がラフカディオ・ハーン、小泉八雲。ほかにもたくさんあるんですけども、元総理大臣とか、元市長とか、偉くてすごい人がずっと並んでいます。松江市の市役所の名誉市民のページを見ると、最後はプログラマーと書いてあって、なんかがくっと落ちる感じがするんですけれども。

なお、ほとんどの名誉市民の方は、歳を取ってから名誉市民になられることが多いので、生きているのは私だけという(笑)。もうみんな鬼籍に入っておられます。

名付けによってソフトウェアの未来は決まる

自己紹介はこのぐらいにして、本題に入りましょう。「Rubyの父が語る教訓と知恵」という、偉そうなタイトルなんですけども、私が大学を卒業して職業プログラマーとして働き始めたのが1990年ということで、もうすぐ33年になるんですね。プログラミングを始めたのは中学校3年生の時なので、それから数えると40年以上経っている、44年ぐらい経っているわけですね(笑)。

そういう意味でいうと、経験だけはすごく長くて、いろいろな……痛い目にも遭っているんですよね(笑)。あと、ほかの人が痛い目に遭うのも見ているわけです。

そういうところから学んできたものとか、プログラミングの体験から実感した、いわゆることわざみたいなやつをいくつかピックアップして、今日はみなさんにご紹介しようかなと思います。

最初のことわざはですね……「ことわざじゃない」って言われそうですけども(笑)、「名前重要」ですね。ことわざというか格言として「名前重要」と言っているのは、たぶん僕だけのような気がするんですけど(笑)、一応私が作ったということになっている気がします。

2023年2月、Rubyが30周年記念イベントをやりました。今着ている赤いパーカーも30周年記念イベントのパーカーで、「Ruby30」と書いてあるんですけれども、正確に言うと、Rubyという名前を付けてから30周年なんですね。メールのログや過去の記録を遡ってみると、1993年2月24日に、私は会社で働いていて、先輩と一緒にプログラミング言語の話をしていたんですよ。

というのも、先輩がもうすぐ、『作りながら学ぶオブジェクト指向』というタイトルの本を書くという企画があって、編集会議にも通っていたんですよ。先輩は、その時点ですでにアスキーから本を出したこともある人でした。

オブジェクト指向言語を作りながら、「こういう仕組みでオブジェクト指向というのは動いています」と学ぶことによって、オブジェクト指向を勉強しようという本を書く企画が通ったんですね。

その時に、その本の教材にする言語を作りましょうっていう話になりました。でも、やはり名前がないと話が進まないので、「やはり名前は大事だよね」と言って名前を決めようとなりました。なぜかというと、ソフトウェアには物理的実体がないんですよね。触れない。コンピューターの中にある情報でしかないんですね。

そういう意味でいうと、コンピューターのプログラミングにおいては、概念というものがすごく大事なんですが、人間というのは、概念というのに対して名前を付けずに扱うことがほぼ不可能なんですよね。ぼんやりとした言い方をしないといけないので、それに名前を付けないといけない。

つまり、プログラミング言語としてのRubyという概念が生まれた日は、Rubyという名前を付けた日だと思っているんです。それで、名前を付けた日を「Rubyの誕生日」と呼んでいるんですよ。

ウィキペディアで見ると、最初のバージョンがリリースされた日が記録されているんですね。Rubyの場合だとそれがだいぶ後で、1995年12月21日になるんですけど、Rubyはそれを誕生日とは呼ばないで、Rubyという名前を付けた日のことを誕生日と呼んでいます。それから2023年で30周年。

名前を付けたその瞬間にRubyになったんですね。Rubyという概念が生まれた。その時点では、Rubyのコードは1行も書いていなかったんですが(笑)、プログラミング言語Rubyという概念が生まれた日が、その日だったということです。

当時、いくつか名前の候補が挙がりました。Rubyももちろん挙がりましたが、Cora、サンゴという名前も候補としてありました。

Perlというプログラミング言語がありますが、Perlは真珠ですよね。だから宝石の名前を付けようという話になって、RubyとかCoralとかいう名前が出て、結局Rubyのほうが短いし、石としても美しいし、価値が高いのでこっちにしようと決まったんです。

宝石の名前にしようという話が出る前に、オブジェクト指向シェルみたいなのを作ろうと、言語を作りかけていて、それがTishという名前でした(笑)。その時に宝石の名前にしようという話がもし出ていなかったら、Tishになっていたかもしれない(笑)。Tish on Railsとか、Tishカンファレンスとか、あまり魅力的に聞こえないですよね。そういう意味でいうと、本当に名前は重要だなって思います。

ティッシュペーパーのティッシュはtissueなのでスペルが違いますが、まさに名前は重要で、いい名前を付けるかどうかによってソフトウェアの未来が決まるというのは、けっこうあるんじゃないかなと思います。

「適切に名前を付けることができる」と「その概念を理解している」は近い

名前がわかるというのは存在を把握するということであると、さっきも言いましたが、プログラミングってやはり概念の存在なんですよね。プログラミングをする上では、コンピューターにさせたい仕事があるとか、そういうことを概念として取り扱わないといけないので、途中の経過も含めて名前を付ける必要があるんですね。

『ゲド戦記』という映画がありますが、もともとは小説で、真の名前がわかるとその存在をコントロールできるという設定があります。主人公の名前がゲドというのですが、これは主人公の真の名前で、誰にも言っちゃいけないんです。

この名前を言う人は彼をコントロールできちゃうので、物語の中では一貫して彼はハイタカ、グレイホークと呼ばれているんですね。だけど、我々は読者として世界の外にいるので、彼のことをゲドと呼んでいるんです。

なんの話だ。あっ、そうそう、そうそう(笑)、プログラミングの中にはいろいろなものが存在するのですが、機能とか関数とか変数とかに名前を付けるわけですね。

名前を付けるのはけっこう重要で、その機能であるとか関数であるとか変数であるとかに適切な名前を付けることができるということは、その概念に対して十分な理解をしているということだと思うんですね。

そういう意味でいうと、完全にイコールとまでは言わないんだけれども、適切に名前を付けることができるということは、その概念を理解しているということとだいぶ近い。

プログラミングはもともと概念を扱うものなので、そういう観点からいっても、名前は重要であるということですね。ぜひみなさんには、「名前重要」ということを理解してもらって、プログラミングの中では名前を大切に扱っていただきたいなと思います。

変数名とかを雑に付けると、後で痛い目に遭うんですね(笑)。あと、後で何をやっているかがわからなくなる。

最近は、変数の名前付けに迷った時には「ChatGPT」に聞くという話があって(笑)、それはけっこういいアイデアかもしれないなと思います。ChatGPTは、知恵や真実などを調査するには向かないんだけど、大規模言語モデルというぐらい言語は得意なので、言語の扱いについて、「こういう概念を表現する良い関数名を知りませんか?」みたいな質問をすると、わりといい候補を挙げてくれるという話を聞きます。今後のAI時代に使える手ではないかなと思います。

いずれにしても、名前は非常に重要であるということですね。

Rubyのほうでも、Rubyに新しい機能を付けましょう、こんなメソッドを新しく増やしましょうというリクエストがしょっちゅう来ていて、それに基づいてRubyは発展・進歩していくことが多いです。

でも、しょっちゅう、名前が気に入らないから、いい名前が考えつくまでちょっとペンディングということがけっこうあるんですよね。やはりRubyコミュニティ全体として名前を重要視しているということだと思います。

これが最初ですね、「名前重要」ということわざです。

(次回へつづく)