その当時、一番流行ってたというか、一番メジャーで使われてた言語ってどういうところなんですか?
たぶん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は知ってますとか、
ダウンロードしてコンパリしたことはあります、でも使ってませんけどみたいな感じの時代が結構長くてですね。
あることは知ってるし、知名度もそれなりにあるけど、
実際に例えば研究なり何なりで使うって人はそんなにたくさんはいなくてっていう感じの時代が結構長く続きましたね。
そうなんですね。
じゃあ本当に存在しているし、知っている方もちょこちょこはいるけど、
めっちゃ最初からすごいバーって広がったっていう感じは全然なかったってことですね。
ではないですね、全然。
その仕様が変わってきたタイミングってどういう時なんですかね。
いくつかあるんですけど、一つは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年っていうのが、
割とプログラミング言語の当たり用紙でしたね。
そうなんですね。
例えば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年代で、
それが結構伸びたっていう感じだと思うんですね。
つまりその何らかのトレンドが変化するタイミングで登場した言語っていうのが生き延びるっていうことだと思うんですね。
もしかするとだから去年から今年にかけてぐらいエージェンティックコーディングみたいなのが結構流行ってきたので、
それが環境の変化として働けば、この環境の変化に適切な言語っていうのが出てくるかもしれないし、
あるいは既存の言語で十分ですって、あとはAIやってくれるからっていうことになるかもしれないし、
それはちょっと未来は分からないんだけど、つまりタイミングは結構重要だと思うんですね。
そうなんですね。なんかそのタイミングっていうのは松井さんはある程度予測はしてたんですかね。
全然全然。
全然なんですね。
私は運がよかった。めっちゃ運がいい。
実際その当時って現れてきていたけど今なくなってしまったような言語みたいなのもいろいろあったんですかね。
あると思いますね。それらの言語はあんまり有名にはなってないので、
多分ほとんどの人は覚えてないし、私も今名前出せって言われたらバッと出てくることあんまりないんですけど。
なるほど。じゃあ本当にいろんな言語っていうのがそのタイミングで現れてきた中で、
ある意味で現象として問うたみたいな、選ばれる言語っていうのが出てきて、
それがここまで続いているっていうような感じのイメージなんですね。
そうなりますね。やっぱりタイミングによって人気が出て、人気によって定着するっていう感じだと思いますね。
マルチコアは進んだ時にパラレル機能を持った言語がもっとたくさん出てくるかなと思ったんですけど、
現時点では話題になっているのはエリクサぐらいです。
未来予想が難しいですね。
そうですね。ありがとうございます。
今言語が登場するタイミングっていうのが結構トレンドに沿っていると伸びるっていうお話あったと思うんですけど、
その一方で言語自体を変えていくみたいなアプローチもある意味であるんじゃないかなと思ったりするんだけど、
Rubyっていう言語としてその瞬間瞬間のトレンドに乗っていくみたいな意識はしてたりするんですか。
もちろんあって、例えばさっき関数型みたいな話がありましたけれども、
関数型から影響を受けたような機能をいくつか導入したりとかしました。
例えば、今Rubyによるパターンマッチとか、
それからEnumerableとかにあるLazyっていう機能は関数型言語にある遅延評価っていうのをちょっと意識してますし、
ラムダの機能が強化されたのも関数型をちょっと意識してのことではありますよね。
あとさっきコンカレンシーが入るんじゃないかみたいな話をしましたけれども、
その辺を見てRactorっていうRubyの中でコンカレンシーをより強力に実装しようと思って作った機能とかもありますので、
既存の言語であっても新しいトレンドとかが発生したときにそれに適応するように変化させようというふうには常に思ってます。
もう本当に結構僕もRubyの最新のアップデートいつもキャッチアップしてて、
そういう新しい機能が出るたびにワクワクしてるんですけど、
逆にここはあえてやらないようにしてるとか、
トレンドがどう変わってもここに対してはRubyとしては変化させないみたいに決まっているものとかあったりするんですかね。
Rubyについて言うと、頭の中にRubyとはなんぞやみたいなイメージがあるわけですね。
それを逸脱するようなことはしたくないなっていうふうに思ってて、
具体的に言うとRubyに勝たせんけばやりたくないなっていうふうに思ってます。
PythonとかPHPとかやりましたけど、あれをやると言語が静的型言語になってしまうんですよね。
つまりRubyとしての性質をだいぶ変えてしまうと、根本的な性質を変えてしまうと思うんですよ。
それは多分良くなくて、RubyがRubyのままでいるためには勝たせん言とか入れてはいけないんだろうなというふうに思いますね。
ある意味でそういうのってトレンドっていうのが存在していると思うので、
外移的圧力というか、入れてくれよみたいな要望って来たりもするんじゃないかなと思うんですけど、
もちろんもちろん。
そこに対して跳ねのける勇気というか、
跳ねのけていくこと自体に対しての不安みたいなのはなかったりするんですかね。
それはもちろんありますけどね。
そうなんだけど、Rubyに対してリクエストをする人っていうのは、
多分自分の他に使ってる言語、例えばTypeScriptにあるとかを見ながら、
これと同じ機能がRubyにもあったらいいのにっていうふうに、
TypeScriptの開発体験をRubyでもっていうふうに思って提案してくださってると思うんですね。
それは発想として悪くはないんですけど、
ただRubyのデザイナーとしてはもうちょっと長い視点で、
この先、この提案された機能を取り入れて、
それをRubyが10年、20年経った時に、
それはRubyにとってプラスになるかどうかみたいな視点で判断しないといけないかと思って、
そうするとせっかく提案していただいたんだけど、
ごめんなさいみたいなことになるケースっていうのはかなりたくさんありますね。
ある意味で、その瞬間瞬間のニーズもそうですけど、
Rubyっていう言語がこれからの未来の中で、
どういう言語としてみんなに受け入れられていくのかっていうところも考えて、
松さんとしてはいろいろな判断をしているってことですね。
今のお話、聞いている中でも不安っていうものもありつつ、
ただその中でもRubyっていうものの未来っていうところを考えて、
いろいろな判断をされているってお話あると思うんだけど、
やっぱり一個一個対話ができるのは、
やっぱりその時になってみないとわからないっていう局面があると思うので、
やっぱり不安っていうのは常につきまとうと思いますし、
プレッシャーっていうのもある意味で利用者が増えれば増えるほど
どんどん大きくはなっていくんじゃないかなと思うんですけど、
その不安に打ち勝つ上でのメンタリティというか、
何を意識されているかみたいなところもしあればお伺いしたいんですけど、どうでしょうか。
メンタリティ。
ただ、私の判断に対して誰が責任を取るかっていうと、
私がするんだっていうふうなことはいつも思ってます。
つまりRubyっていうのは言ってしまえば私の言語なので、
私がした判断について私が判断して責任を取るみたいな感じのことは常に思ってますね。
逆に言うと誰が提案したとしても、
その提案を受けた瞬間にその責任は私に移行するっていうふうに思ってるんですよ。
何かを受けるときにその責任を私が将来取れるかどうかっていうのは一つの重要な選択肢になってますね。
それが例えば言語を悪くしたので誰かに文句を言われたら、
それが他の人が最初に提案したものであっても、
ごめんなさい言った私が悪くございました、私がデザイナーですっていうふうなつもりで採用するかしないかという判断をしていくつもりではいます。
ある意味で自分自身が責任を取りたいと思える選択かどうかっていうのも含めていろんな判断をされているってことですね。