1. Qiita FM-エンジニアのキャリアを深掘り-
  2. #75 1995年の同級生たち|Ruby..
2025-10-14 23:48

#75 1995年の同級生たち|Ruby誕生の背景とWeb前夜の空気感【ゲスト:Rubyの生みの親・まつもとゆきひろさん】

spotify apple_podcasts

引き続きゲストはRubyの生みの親・まつもとゆきひろさんです


<トークテーマ>

・インターネット民主化前夜の空気感

・メーリングリストから世界へ!:書籍化、有志のRuby Conferenceで高まるRuby熱

・win95の発売:潮流変化とタイミング

・長期視点と意思決定:RubyがRubyらしくあるために


<まつもとゆきひろさんX(Twitter)ページ>

https://x.com/yukihiro_matz


<X(Twitter)ハッシュタグ>

#QiitaFM


<番組へのメッセージはこちらから>

https://forms.gle/K9HyUGy7phDBGpht7

See Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.

サマリー

このエピソードでは、松本幸弘氏がRubyの誕生背景や1995年当時のソフトウェア業界の雰囲気について語ります。JavaやPythonなど、同時期に登場したプログラミング言語との比較や、Rubyがオブジェクト指向を普及させた影響にも触れています。1995年のRubyの登場は、プログラミング言語の新しい時代の幕開けを告げます。特にウェブアプリケーションのニーズに応じた言語が求められる中で、Rubyはちょうど適したタイミングでリリースされ、その後の人気につながります。松本氏は、Rubyがさまざまなトレンドに適応しながら成長してきた経緯や、他の言語との違いについても語ります。このエピソードでは、Rubyの生みの親である松本幸弘氏が言語の未来と提案された機能に関する責任についても説明し、Rubyがどのように進化し、利用者のニーズをどのように考慮しているのかを掘り下げます。

Rubyの誕生と背景
日本最大級のエンジニアコミュニティQiitaプロダクト開発部部長の清野俊文です。
この番組では、日本で活躍するエンジニアをゲストに迎え、
キャリアやモチベーションの話を深掘りしながら、
エンジニアの皆さんに役立つ話題を発信していきます。
前回に引き続き、ゲストはRubyの生みの親である松本ゆきひろさんです。よろしくお願いします。
よろしくお願いします。
ということで、第2回はもうちょっとRubyについて、
いろいろなお話をお伺いをしていきたいなと思っております。
2回目のテーマは、1995年の同級生たち|Ruby誕生の背景とWeb前夜の空気感です。
最初、改めてにはなってしまうかもしれないんですが、
Rubyを開発した当時の、いわゆるソフトウェア業界の雰囲気みたいな、
そういうところをお伺いできるとありがたいなと思っております。
いわゆるワールドワイドウェブとかが一般的になってなくて、
多分スイスのCERNとかそういう中では存在したと思うんですけど、
それにしたって画像とかもなくて、
HTTプロトコルが0点いくつとかが定義されましたぐらいのレベルで、
普通の人は全然使ってない感じの時代でした。
そういう意味で言うとソフトウェアっていうのは、
いわゆるCとかで開発するデスクトップアプリみたいな感じのものと、
それからスクリプトですよね。
コマンドラインでデータを読み込んできて、
加工して出力するみたいなものっていうのが一般的で、
もともとRubyも別にWebのなんとかみたいなものを狙ってたわけではなくて、
先人であるPearlであるとかを参考にして、
プログラミング言語の比較
スクリプト言語として誕生したんですよね。
私はもともと大学に行く、
あるいは下手するともっと前からオブジェクト思考っていう考え方のファンだったので、
このオブジェクト思考っていう考えをスクリプト言語っていうジャンルに適用すると、
今あるものよりも良いものができるんじゃないかっていう直感があって、
それを適用して、
Pearlプラスオブジェクト思考みたいな感じで作ったのがRubyになりました。
当時はPythonすでに存在してたんですけど、
Pythonのオブジェクト思考あんまり好きじゃなかったので、
全てのセーフっていちいち書かないといけないとか、
昔から言語を作りたいと思ったし、
この機会に作ろうと思って作ったのがRubyになってますね。
僕自身本当に、僕がRubyを始めたの、
僕が大学生の時で触った時に、
なんて書きやすいんだってすごい感動したのを今でも覚えているんですけど、
ありがとうございます。
まさにやっぱりそういう書き心地というか、
スクリプト言語でもあるし、
やっぱりオブジェクト思考がその中に結構コアの思想として入っていて、
全てのものがオブジェクトとして扱えるみたいなところ、
そこからルーツとしては最初のコンセプトとしてあったってことなんですね。
そうですね。一番最初からオブジェクト思考の考え方を自然に適用できるような言語っていう風に考えて作ってますね。
なるほど。
最初はその当時、いわゆるすごいメジャーだったプログラミング言語ってどういう言語なんですか?
Javaとかですかね、やっぱり。
JavaってRubyと同級生なんですよ。
同級生ってどういう意味かっていうと、
一番最初に構想が作られてたのが1993年でJavaがね。
で、Rubyも作り始めた1993年なんですよ。
ある程度の感性を見て、Javaっていう言語は一般公開されたのが1995年なんですよね。
で、Rubyも1995年の12月なんでだいぶ暮れですけど、
ほぼ同じ年なんですね。
作り始めたのも発表されたのも。
ので、Rubyの実装にJavaはあんまり参考にしてないです。
そうなんですね。そもそもやっぱり経負として違うというか、スタートラインが一緒だったんですね。
そうですね。ほぼ同じ時期の言語ですね。
Rubyの初期の反応と利用
その当時、一番流行ってたというか、一番メジャーで使われてた言語ってどういうところなんですか?
たぶんCとかC++とかね。
C++もまだあんまりメジャーではなくて、
どっちかっていうと、プレインなCの方が多く使われていたっていう感じだと思いますね。
なるほど。
かつ当時のC++はまだ、
テンプレートもあったとしてもあんまりテンプレートライブラリとか発達してない時代ですね。
今のC++とはだいぶ違う感じですね。
本当にCにちょっとオブジェクト思考機能がついたかなぐらいの感じの言語ですね、当時のC++は。
ありがとうございます。
本当にいわゆるオブジェクト思考っていうもの自体がそんなにメジャーではない時代だったってことですね。
そうですね。だから新しい考え方をどうやって取り込もうかっていう風なことが
技術者の中で話題になるみたいな感じの時代感ですね。
もちろん昔から知っている人はスモールトークとかみたいな
ピュアなオブジェクト思考、あの言語みたいなものも知っている人はいるんだけど、
じゃあ私たちの次のプロダクトにスモールトーク使って作りましょうかっていう感じにはあまりならないレベルですね。
じゃあそこでいわゆる同級生として生まれてきたJavaもそうですし、Rubyみたいな、あとPythonとかもですかね、
その辺りの言語っていうのが。
そうですね。Pythonはちょっと先輩ぐらいですよね。
オブジェクト思考っていうもの自体の普及にもすごい関わってるってことですね。
少なくとも日本ではRubyを経由してオブジェクト思考が分かりましたって言ってる人結構いますね。
大学の先生とかでも、私Rubyでオブジェクト思考を知りましたみたいなこと言ってる人がいて、
ちょっとこっちが引くっていうかね、大学の先生って言っても私より分かるので、当たり前と言えば当たり前なんですけど。
いわゆるオブジェクト思考っていう概念自体がまだそんなにすごい一般的になってない、使われてないっていう中で、
Rubyが自体に入ってきたってところで、最初のRubyに対してのいわゆるプログラマーの反応ってどういう感じだったんですかね。
比較的早くから注目してくださった人はいて、Rubyの公開が1995年の12月なんですけど、
当時なのでオープンソフトソフトウェアのコミュニティみたいな感じだと今だとGitHubだとかSlackだみたいな話になるんですけど、
それはみんな存在しないので、メーリングリストを作ったんですよ。
メーリングリストを作って、2週間ぐらいで200人以上の参加者が集まって、
これは他のやつについてそこまで詳しいわけではないんですけど、多分だいぶ早いペースだったと思うんですね。
それぐらいいいと思う人はいてくださって、注目してくださったり手伝ってくださったりする人はそれだけいたっていう、
割とすぐにいたっていうことですよね。
当時のRubyの公開したのも、さっき名前に載ってたネットニュースってやつなので、一般人は参加しないんですよね。
どっちかっていうと、例えば大学の研究室とか、それから企業の研究室とかみたいな、
そういう当時からいわゆるネットにつながっていた部署ぐらいなので、
普通の人がインターネットを使う、いわゆるザ・インターネットを使うようになるので、
メールとかも含めて1995年とか、5年?95年?97年とかそれぐらいなので、
それ以外の人たちは普通にいわゆるパソコン通信ってのを使ってたんだよね、当時ね。
ここではあんまりRubyは流行ってなかったので、
だからそういう割と限られたオーディエンスに対して公開したのに、
割と早くからそういう人たちの中でRubyに注目される方はいらっしゃったっていうことですよね。
結構、やっぱりそもそもコンセプトとかも含め、最初から注目はされてて、
実際それが公開されて使ってくれる方もいらっしゃってっていうような感じの最初のスタートなんですね。
そうですね、はい。
最初はどういう用途で使われることが多かったんですかね。
ほぼスクリプティングだったと思いますね。
だからデータを処理して読み込んで、例えばCVSみたいなファイルを読み込んできて、
それを分割して、場合によっては集計してみたいな感じのデータ処理みたいな使い方をする人が多かったと思いますね。
その後だって、例えばGUIのライブラリーとかが何年かして、
GUIのライブラリーが登場したらRubyでデスクトップアプリを作りましたみたいな人たちも出てくるようになりましたけど、
それはもう何年も後のことですよね。
なるほど。
その公開した当時から結構、最初メーリングリストの登録者さん200名いたっていうところから、
一気に利用者が広がっていったんですかね。
それともじわじわって感じですかね。
じわじわですね。
その後、1999年に最初のRubyの本が出たんですけど、
ASCIIからオブジェクト試行スクリプト言語Rubyって本が出たんですけど、
これも技術書としては売れた方ではあるんですが、それでも1万個得たかなぐらい。
技術書1万本って結構な部数ではあるんですが、
これでも一般書に比べたら全然大したことないですし。
あとは、その後だいぶ長いことはRubyは知ってますとか、
ダウンロードしてコンパリしたことはあります、でも使ってませんけどみたいな感じの時代が結構長くてですね。
あることは知ってるし、知名度もそれなりにあるけど、
Rubyの登場と背景
実際に例えば研究なり何なりで使うって人はそんなにたくさんはいなくてっていう感じの時代が結構長く続きましたね。
そうなんですね。
じゃあ本当に存在しているし、知っている方もちょこちょこはいるけど、
めっちゃ最初からすごいバーって広がったっていう感じは全然なかったってことですね。
ではないですね、全然。
その仕様が変わってきたタイミングってどういう時なんですかね。
いくつかあるんですけど、一つは1999年に本が出て、2000年に英語の本が出てるんですよ。
ピッケル本って通称で言われてるんですけど、プログラミングRubyっていうのが英語版で出てるんですね。
この本が出たことで海外でもRubyに注目してくださる方が格段に増えてですね、
この本の読者たちの中で有志はRuby Conferenceって今でも続いてますけれども、
そういうそのカンファレンスを開催してくださったりとか、最初の頃はですね、
大体ちょっとした勉強会ぐらいのサイズしかなかったんですけど、
そういうようなのが続いて知名度がだんだん広がってきたのがあって、
その後2004年にRuby on Railsが出て、これが2005、6年ぐらいに結構話題になって、
あとはRailsの人気が広まるに従ってRubyの人気が引っ張られるように上がっていって、
2007年から2012年ぐらいまでが人気のピークみたいな感じですよね。
残念ながら2010年代以降はどっちかっていうと、例えばタイプスクリプトであるとか、
PythonとかPHPとかも型を入れたりとか、
あるいはラストゴみたいなコンパイル型の静的化のつく言語みたいなのが流行してしまって、
Rubyの人気度っていう意味ではRubyの人気はそれ以降ちょっと下がり気味ではあるんですけれども。
ありがとうございます。
いわゆる本当に一時代を築いてきたというか、
僕ももちろん最初にオブジェクト思考言語を触ったのはJavaだったんですけど、
2言語目がRubyだったので、
僕は本当にRubyでオブジェクト思考言語っていうものに対しての理解がすごい深めたなって、
僕自身も思ってたりしますし、
新しいトレンドとして静的型つく言語みたいなところがまた違う形でいろいろ出てきてっていうのもあったりはすると思うんですけど、
当時のところの盛り上がり方っていうのはやっぱり素晴らしかったんじゃないかなっていうのは、
今のいわゆるウェブ系企業のベンチャーが採用しているフレームワークはやっぱりRailsが多いっていうところかも、
いろいろ伺うことができるのかなっていうのはお話聞いていて感じました。
もう1個ちょっと違う角度から聞きたいなと思っていたのが、
そういう感じでRuby自体が普及していった一方で、
当時Ruby以外の言語が全然公開されてなかったわけではないんじゃないかなってなんとなく僕は想像していて、
結構いろんな方が何かしら言語とか作ってたんじゃないかなと思うんですけど、
当時なんですかね、その中でもやっぱりRubyがそういう形で広がっていったり、
使ってくれる方が増えていった理由、
そういう他の言語と何かしら違いがあったみたいなところがもしあればお話したいなと思ったんですけど。
Rubyが登場した1995年っていうのが、
割とプログラミング言語の当たり用紙でしたね。
そうなんですね。
インターネットの民主化とRubyの普及
例えばJavaがさっきも言いましたよ、Javaが公開されたのが1995年なんですよね。
それからJavaScriptが公開されたのも1995年なんですよ。
Rubyもそうですし、それからPHPは多分その前の年ぐらいかな。
だいたいそのぐらい1994年、95年ぐらいに、
今メジャーって言われてる言語のかなりの割合が登場してるんですよね。
これはどういうことかっていうと、多分インターネットの民主化っていうか、
1995年ってWindows 95が出た年でもあるので、
Windows 95っていうのは特別なソフトを買わなくてもインターネットにアクセスできる最初のOSなんですよね。
そうすると普通の人がインターネットを使うようになったんですよ。
そうすると、その人たちに対してウェブアプリを提供したいみたいなニーズも出てくるわけですね、
その数年後に。
その時にSQLite言語の性質っていうのは、
当時のウェブアプリの求めてるものにだいぶ近かったんですね。
だから初期のウェブアプリケーションだったらPerlだったりRubyだったりPythonだったりPHPだったりで書かれていたんですよ。
で、そういうちょうどいいタイミングにこんなのが必要だと思って実際作るまで何年もかかるので、
そういう意味で言うと、その数年前から作り始めていて、
ちょうど1995年にリリースできたRubyっていうのはタイミング的にめっちゃラッキーだったなと。
なるほど。
だからソフトウェアを取り巻く環境っていうのが大きく変化するタイミングで登場した言語っていうのは一般化するっていうことだと思うんですね。
その時に例えば1995年ぐらいにインターネット、ウェブアプリのための言語っていう性質を備えた言語っていうのが伸びる傾向があって、
多分2010年代ぐらいに静的型ですとか関数型の影響みたいな言語がたくさんあって、
その影響を受けた言語が、例えば静的型っていう意味ではGoとか、
あるいは関数型の影響っていう意味でも含めるとラストとか、そういう言語が登場したのが2010年代で、
それが結構伸びたっていう感じだと思うんですね。
つまりその何らかのトレンドが変化するタイミングで登場した言語っていうのが生き延びるっていうことだと思うんですね。
もしかするとだから去年から今年にかけてぐらいエージェンティックコーディングみたいなのが結構流行ってきたので、
それが環境の変化として働けば、この環境の変化に適切な言語っていうのが出てくるかもしれないし、
Rubyの進化とトレンドへの適応
あるいは既存の言語で十分ですって、あとはAIやってくれるからっていうことになるかもしれないし、
それはちょっと未来は分からないんだけど、つまりタイミングは結構重要だと思うんですね。
そうなんですね。なんかそのタイミングっていうのは松井さんはある程度予測はしてたんですかね。
全然全然。
全然なんですね。
私は運がよかった。めっちゃ運がいい。
実際その当時って現れてきていたけど今なくなってしまったような言語みたいなのもいろいろあったんですかね。
あると思いますね。それらの言語はあんまり有名にはなってないので、
多分ほとんどの人は覚えてないし、私も今名前出せって言われたらバッと出てくることあんまりないんですけど。
なるほど。じゃあ本当にいろんな言語っていうのがそのタイミングで現れてきた中で、
ある意味で現象として問うたみたいな、選ばれる言語っていうのが出てきて、
それがここまで続いているっていうような感じのイメージなんですね。
そうなりますね。やっぱりタイミングによって人気が出て、人気によって定着するっていう感じだと思いますね。
マルチコアは進んだ時にパラレル機能を持った言語がもっとたくさん出てくるかなと思ったんですけど、
現時点では話題になっているのはエリクサぐらいです。
未来予想が難しいですね。
そうですね。ありがとうございます。
今言語が登場するタイミングっていうのが結構トレンドに沿っていると伸びるっていうお話あったと思うんですけど、
その一方で言語自体を変えていくみたいなアプローチもある意味であるんじゃないかなと思ったりするんだけど、
Rubyっていう言語としてその瞬間瞬間のトレンドに乗っていくみたいな意識はしてたりするんですか。
もちろんあって、例えばさっき関数型みたいな話がありましたけれども、
関数型から影響を受けたような機能をいくつか導入したりとかしました。
例えば、今Rubyによるパターンマッチとか、
それからEnumerableとかにあるLazyっていう機能は関数型言語にある遅延評価っていうのをちょっと意識してますし、
ラムダの機能が強化されたのも関数型をちょっと意識してのことではありますよね。
あとさっきコンカレンシーが入るんじゃないかみたいな話をしましたけれども、
その辺を見てRactorっていうRubyの中でコンカレンシーをより強力に実装しようと思って作った機能とかもありますので、
既存の言語であっても新しいトレンドとかが発生したときにそれに適応するように変化させようというふうには常に思ってます。
もう本当に結構僕もRubyの最新のアップデートいつもキャッチアップしてて、
そういう新しい機能が出るたびにワクワクしてるんですけど、
逆にここはあえてやらないようにしてるとか、
トレンドがどう変わってもここに対してはRubyとしては変化させないみたいに決まっているものとかあったりするんですかね。
Rubyについて言うと、頭の中にRubyとはなんぞやみたいなイメージがあるわけですね。
それを逸脱するようなことはしたくないなっていうふうに思ってて、
具体的に言うとRubyに勝たせんけばやりたくないなっていうふうに思ってます。
PythonとかPHPとかやりましたけど、あれをやると言語が静的型言語になってしまうんですよね。
つまりRubyとしての性質をだいぶ変えてしまうと、根本的な性質を変えてしまうと思うんですよ。
Rubyの提案と責任
それは多分良くなくて、RubyがRubyのままでいるためには勝たせん言とか入れてはいけないんだろうなというふうに思いますね。
ある意味でそういうのってトレンドっていうのが存在していると思うので、
外移的圧力というか、入れてくれよみたいな要望って来たりもするんじゃないかなと思うんですけど、
もちろんもちろん。
そこに対して跳ねのける勇気というか、
跳ねのけていくこと自体に対しての不安みたいなのはなかったりするんですかね。
それはもちろんありますけどね。
そうなんだけど、Rubyに対してリクエストをする人っていうのは、
多分自分の他に使ってる言語、例えばTypeScriptにあるとかを見ながら、
これと同じ機能がRubyにもあったらいいのにっていうふうに、
TypeScriptの開発体験をRubyでもっていうふうに思って提案してくださってると思うんですね。
それは発想として悪くはないんですけど、
ただRubyのデザイナーとしてはもうちょっと長い視点で、
この先、この提案された機能を取り入れて、
それをRubyが10年、20年経った時に、
それはRubyにとってプラスになるかどうかみたいな視点で判断しないといけないかと思って、
そうするとせっかく提案していただいたんだけど、
ごめんなさいみたいなことになるケースっていうのはかなりたくさんありますね。
ある意味で、その瞬間瞬間のニーズもそうですけど、
Rubyっていう言語がこれからの未来の中で、
どういう言語としてみんなに受け入れられていくのかっていうところも考えて、
松さんとしてはいろいろな判断をしているってことですね。
今のお話、聞いている中でも不安っていうものもありつつ、
ただその中でもRubyっていうものの未来っていうところを考えて、
いろいろな判断をされているってお話あると思うんだけど、
やっぱり一個一個対話ができるのは、
やっぱりその時になってみないとわからないっていう局面があると思うので、
やっぱり不安っていうのは常につきまとうと思いますし、
プレッシャーっていうのもある意味で利用者が増えれば増えるほど
どんどん大きくはなっていくんじゃないかなと思うんですけど、
その不安に打ち勝つ上でのメンタリティというか、
何を意識されているかみたいなところもしあればお伺いしたいんですけど、どうでしょうか。
メンタリティ。
ただ、私の判断に対して誰が責任を取るかっていうと、
私がするんだっていうふうなことはいつも思ってます。
つまりRubyっていうのは言ってしまえば私の言語なので、
私がした判断について私が判断して責任を取るみたいな感じのことは常に思ってますね。
逆に言うと誰が提案したとしても、
その提案を受けた瞬間にその責任は私に移行するっていうふうに思ってるんですよ。
何かを受けるときにその責任を私が将来取れるかどうかっていうのは一つの重要な選択肢になってますね。
それが例えば言語を悪くしたので誰かに文句を言われたら、
それが他の人が最初に提案したものであっても、
ごめんなさい言った私が悪くございました、私がデザイナーですっていうふうなつもりで採用するかしないかという判断をしていくつもりではいます。
ある意味で自分自身が責任を取りたいと思える選択かどうかっていうのも含めていろんな判断をされているってことですね。
エピソードのまとめ
なるほど。すごい参考になります。
やっぱりそういう正解のない判断って、
僕自身も結構いろんな判断はするタイミングがあるんですけど、
どうしてもそういうこれどうしようかなと思うときって正直あるなと思ってるんですけど、
ある意味でそれを自分自身がちゃんと失敗しても自分の責任って思って謝ってもいい、
謝れる、自分が責任を取るために何かしらアクションを取ってもいいなと思えるような選択肢を
自分が選んでいくっていうのはやっぱり大事なんだなっていうのを今お話聞いていてすごい感じました。
ということで今回はMatsuさんにRubyについていろいろなことをお伺いをしてきました。
僕自身本当にRubyがすごい大好きな言語で、
何かちょっとしたことをやるならとりあえずRubyを選んじゃうぐらいRubyが大好きなんですけど、
Rubyという言語がなんでここまでいろんな方に使われてきたのかってところもそうですし、
今どういう判断をされてRubyという言語がここで日々進化しているのかってところもいろいろ、
本当にMatsuさんご本人から聞いて本当に貴重なお時間になったなというふうに思っております。
本当にありがとうございました。
さて、この番組では感想や次回ゲストへの質問、リクエストなどをお待ちしております。
番組詳細欄にあるリンクよりお気軽にご投稿ください。
XではハッシュタグKiitaFMをつけてポストしてください。
表記は番組名と一緒でQFMが大文字、残りは小文字です。
そしてApple PodcastやSpotifyのPodcastではレビューもできますので、
こちらにも感想を書いてもらえると嬉しいです。
Kiita株式会社はエンジニアを最高に幸せにするというミッションのもと、
エンジニアに関する知識を記録、共有するためのサービスKiita、
社内向け情報共有サービスKiitaチームを運営しています。
ぜひカタカナでKiitaと検索してチェックしてみてください。
来週も火曜日の朝6時に最新話が更新されます。
番組のフォローをして最新話もお聞きください。
お相手はKiitaプロダクト開発部部長の清野俊文と、
松本幸弘でした。
23:48

コメント

スクロール