はい、どうもこんにちは。 雨宿りとWEBの小噺始まりました。
keethこと、Kuwaharaです。 この番組では、WEBテクノロジーの歴史や裏側にあるちょっとした小噺をご紹介しております。
今回のお題は、プログラミング言語Rubyの名前に隠された宝石の秘密についてお話をします。
はい、プログラミングの言語の名前ってパッと聞いただけだと、なんとなく雰囲気でつけられていそうな僕は気がしていて、
由来を調べていくとちゃんとしたストーリーがあるものも結構多くて、この番組でも何度か紹介した過去回ですね。
今日取り上げるRubyもまさにその一つです。
Rubyっていうプログラミング言語、聞いたことない方もいらっしゃると思います。
同業の方なら当たり前に知ってると思いますけど、初めて聞く方とかWEBエンジニアではない、テクノロジーに関わりないポジションの方だとあんま聞いたことない。
ていうかRubyって聞くとそもそも宝石の名前だと思いますけど。
簡単に言うとウェブサイトとかアプリの裏側を動かすためのプログラミングの言語の一つで、特に読みやすくて書きやすいっていうことが有名な言語になります。
このRubyっていう言語、名前を知らなかったとしても使ったことがある可能性がかなり高い言語だと思っていて。
例えばエンジニアならご用達であるGitHubというサイトサービス。
これは最初Rubyっていう言語で作られておりました。
他にも民泊サービスのAirbnbとかネットショップを作れるShopify、こういった有名なサービスの裏側でもRubyがずっと活躍していたんですね。
このRubyを作ったのは日本人の松本幸寛さんというエンジニアの方です。
通称MATSUという愛称で世界中のエンジニアからも親しまれている方だなと思っております。
MATSUさんは1965年大阪府生まれで鳥取県で育って、今は島根県の松江市に住んでおります。
松江市の名誉市民にもなっているくらい地元にしっかり根を張って活動されている方だと。
プログラマーが楽しく書ける言語を作りたいという思いがRuby開発の出発点だったらしいですね。
MATSUさんの設計哲学はプログラマーの幸せという言葉に集約されるんじゃないかと思ってまして、
コンピューターにとって効率がいいかどうかというよりも人間が書いていて気持ちいいかどうか、
直感的にこう書けばこう動くだろうなと思った通りに動くかどうかというのを何よりも大事にして言語を設計されています。
Rubyは人間のために設計された機械のためではないとMATSUさん自身もインタビューで語られております。
効率よりも人間の気持ち良さを優先するっていうのはプログラミング言語の世界ではなかなか珍しい発想で、
これがRubyという言語のファンを増やした理由の一つなんじゃないかなというふうに思います。
Rubyの世界には驚き最小の原則という有名な言葉もあります。僕らではご用達な言葉ですね。
プログラマーが予想した通りに動くのが一番予想を裏切るような挙動は極力なくしましょうねという考え方ですね。
ただこれがなかなか面白い天末をたどってまして、コミュニティの中でこれって結局誰にとって驚きが最小なのという疑問が出てきたんですね。
答えはマッツさん本人にとってということでした。
マッツさんの感覚で驚かないように設計されているっていうのが実態に近いということで、
Rubyを使う人がどんどん増えていくと当然マッツさんと違う感覚を持った人も出てきますと。
そうするとこれは驚き最小じゃない、いや自分は全然驚かないよみたいな水かけ論っていうのが明理通常で延々と続くようになったらしいですね。
結局この言葉自体があんま使われなくなったよという裏話まであります。
マッツさんの感覚っていうのを基準にするという、ある意味でとても人間臭い設計哲学だったわけですね。
まあまあ、海の親なんだから別に自由だよって言ってしまえばそれまでなんですけど。
開発が始まったのは1993年頃。
実はこの時期マッツさんは会社員として働いていたんですけど、勤務中にこっそりRubyの開発を進めていたらしいです。
ある日上司にこのことを打ち明けたら、見なかったことにするから続けなさいというふうに言われたそうです。
今の感覚だと結構考えられないくらい太っ腹ですよね。時間余ってんなら仕事しろよって言われそうですけど。
結果的にこの黙認が世界中で使われる言語を生み出すきっかけになったと。
言ってしまえば勤務時間中のサボりだけど、結果的に世界を変えたって言ったらあれかもしれないですけど、世界中に広まる言語が生み出されたという意味で結構面白いエピソードだと思います。
で、こっからが今日の本題。名前の由来の話なんですけど。
1993年2月24日、松さんは同僚だった石塚さんとオンラインでチャットをしておりまして、新しく作ろうとしている言語にどういう名前をつけるか相談されていました。
候補として挙がったのが2つ。コーラル、サンゴのことですね。と、ルビーです。宝石のルビーです。
松さんがルビーを押して石塚さんはコーラルを押していたそうです。
で、最終的にルビーに決まった理由。実はいくつかあるんですけど、そのうちの一つがコーラルより1文字短いからというものです。
コーラルは5文字、ルビーは4文字なんですよ。たったこれだけの差で決め手の一つになったっていうのは表紙抜けじゃないですけど、エンジニアらしいなみたいな理由だと思いました。
でも、もちろんこれだけが理由じゃなくて、もっと深い理由もありますと。これがまさに今日のタイトルにある隠された秘密ってちょっと大げさに言ったんですけど。
鍵になるのはパールという別のプログラミング言語との関係ですと。
当時1990年代前半のプログラミングの世界ではパールという言語が結構な人気を誇っていたんですね。
ウェブの霊明記を支えた言語の一つでもありまして、このパールの名前は真珠のパールに由来していると言われています。
そして真珠っていうのは6月の誕生石なんですよね。
はい、ちなみに私も6月生まれなんで、結構パール、パール両方ですけど、なんとなく親しみを感じています。
真珠さんはパールの次を目指す言語としてルビーっていうのを位置づけておりました。
そこで6月の誕生石であるパールの次の月、7月の誕生石にあたるルビーから名前を取ったっていうのが有力な説なんですと。
パールの次に来る宝石というかなり面白いというか、オシャレな思い出だなと思いましたね。
先輩言語への経緯も示しつつ、自分たちはその次へ行くぜっていうような意気込みも込められているなと。
これセンスあるなと本当に思いました。
このパールという言語、実は前お話ししたPHPの回でもちらっと名前を出したんですけど、パール自体の名前の由来っていうのもちょっと面白くて。
この言語の作者ラリーウォールさんが、プラクティカルエクストラクション&レポートランゲージ、つまり実用的な抽出とレポートの言語の頭文字から取ったという説と、
聖書に出てくる高価な真珠の例え話から取ったという説の両方があるっぽいですね。
真珠が先にあって、その次のキーの宝石としてRubyが選ばれたというこの流れ。
思ったより詩的なエピソードが結構あるなと思いましたね。
もう一つの理由として、松さんの同僚の誕生石がRubyだったらしいです。
そういうエピソードも語られております。
プログラミング言語の名前を身近な人の誕生石からというのも、人間味あるタイトルの付け方だなというふうに感じました。
もうちょっと技術的な理屈とか、もっともらしい裏付けみたいなものがあるかと思いきや、
そういう人との繋がりから名前を呼ばれるっていうのが、子供の名前の付け方にちょっと似てるなとは思いましたね。
別の視点で話をすると、最近のプログラミング言語のランキング、毎年いろんな会社さんやウェブ媒体がプログラミング言語の仕様ランキングとか、
その言語を使われているエンジニアの年収ランキングとか、いろんなランキングを出されているんですけど、これは多分仕様ランキングですね。
では、PythonとかJavaScriptの人気に押されて、Rubyの存在感で結構なくなってきちゃってるんですね。
でもGitHubとかShopifyのような巨大サービスが今もRubyの上で動き続けているってことを考えると、決して過去の言語というわけではもちろんなくて、
ある種地味かもしれないですけど、手堅く現場を支えているというようなタイプの言語として、今も存在感を持ち続けているっていうところが実際のところだと思います。
こうやって振り返ると、Rubyっていう名前にはいくつもの層が重なっていると思っていて、表向きにはコーラルより一文字短いからみたいなシンプルな理由とか、
その裏にはパールという先輩言語への敬意とか誕生石の巡り合わせみたいな表現という粋なエピソードもあり、
さらにその奥には同僚の誕生石だったみたいな個人的なエピソードもあったり、
一つの名前に語呂合わせとか敬意とか人間関係みたいに全部詰め込まれているのはなかなか効かないのかなというふうに改めて思いました。
そして何よりプログラマーが楽しく書ける言語を作りたいっていう松田の一貫した思いっていうのが、
設計哲学にも名前にもコミュニティの文化にも全部同じトーンで流れているという感じです。
全部が同じ方向を向いているっていうのが、これでも生み出すのってそんな単純じゃないと思うんですよね。
ちなみに僕もRuby別に書いたことないわけではないです。
お仕事で書いたことあるかって言うとないんですけど、
ただやっぱ書いてみたらわかるんですけど、
本当プログラマーのために書かれた設計された言語だなっていうふうに思ってて、
書いて楽しいよマジで思いましたね。
こう書いたらいいなとかこう書けたらいいなーはだいたい揃っていて、
またにそう書ける言語みたいな感じです。
この感覚がある人はそのまま自分でプログラミング言語を作ってみたくなると思いますけどね。
僕も1回思ったけどまだ作ったことないんで、今はAIもできたし、
そのハードルはさらに下がってるんでどっかで守備で作ろうかなと思います。
余談をするとプログラミング言語っていろんな言語、自作言語たくさんあるんで調べてみてください。
面白いやつでいくとホワイトスペースとかゴリラ言語みたいなやつありますよね。
ホワイトスペースは本当に半角と全角スペースだけで記述するプログラミング言語で、
ゴリラ言語は確かウホとウホウホとかウーホとかそういうゴリラの鳴き声だけでプログラミングする言語ですね。
本当にいろんな発想がみんな生まれてて面白いなと思いました。
戻りまして、普通なんか大きく成功させようとかすると、
途中でどうしても効率であったり規模感とかそういうものを優先せざるを得なくなる場面って出てくると思うんですよね。
しかしRubyの場合はプログラマーの幸せっていう最初に掲げた、
フワッとした軸に見えるかもしれないですけど、
これが30年以上ずっとブレさせずに持ち続けていると、
しかもそれが結果的に世界中で使われている言語、
そういう規模感にもなっているっていうのが、
感慨深いものがあるなと思いましたね。
なんていうか、何を大事にするかっていうのをしっかり最初に決めて、
そこをブレずに、不直に守り続けているということが一番の近道じゃないですけど、
っていうふうに思いますね。
ちなみにこの宝石っていうテーマですけど、
実はRubyっていう名前だけで終わってないんですよね。
RubyにはRubyGemsという便利な拡張機能をまとめてインストールできるみたいな仕組みもあるんですが、
その拡張機能一つ一つのことをRubyの世界ではGem、宝石と呼ぶんです。
つまりRubyという宝石の名前を持つ言語の中で、
追加機能もまた宝石としても呼ばれていると。
名前のテーマが言葉の隅々まで行き渡っているというような実態があります。
こういう細部までの一貫性のこだわりっていうのも松さんらしくて、
美しいなと思いましたね。
名前の話にまたまた戻りますと、