Rubyがメジャー言語となったターニングポイント

楓博光(以下、楓):では次の質問です。「Rubyがここまでメジャーになれたターニングポイントや、理由はなんだと思われますか」。

まつもとゆきひろ氏(以下、まつもと):いくつかあったと思うんですけど。1つは、1995年当時、ネットニュースという媒体があって、そこに、自分が作ったソフトウェアを公開するスレっていうんですかね、今風に言うと。ニュースグループというのがあったんですけど。

1995年の12月、そこに「Rubyを作りました。どうぞ興味のある人はダウンロードして使ってみてください」と公開したんですね。当時は、メールで議論をするのが基本だったので、メーリングリストも作ったんですよ。

そしたら2週間で200人ぐらいの人が、そのメーリングリストに登録をしてくれたんですね。見たこともない聞いたこともない新しいプログラミング言語に、わずか2週間程度で200人もの人が参加してくれるというのは、大したことなので、「意外と興味を持ってくれる人がいるんだな」って思ったのが1995年ですね。あと1998年だったかな。

:それからまたさらに3年ぐらい経ってから。

まつもと:そうですね。Perlを作ったラリー・ウォールさんも呼んで、「Perl Conference」っていうのが開かれたんですけれども。そこで、キーノートのスピーカーとして呼ばれたんですね。なんでPerlのカンファレンスにRubyを作っている人が? とは思ったんですけど(笑)。

:へえ。その当時はRubyもまだそんなにメジャーじゃなかったんですか。

まつもと:知っている人は知っているぐらいの感じなので、ぜんぜんメジャーでもなんでもなかったです。呼んでもらって、Rubyについて紹介をする機会があったんですね。Rubyとわりとユーザー層がかぶっている、Perlを使う多くの人たちに紹介をする機会があった。

著作の販売数は技術書で異例の1万部超え

まつもと:それから1999年にRubyの本を出して、それが意外と1万何千部売れました。技術書はあんまり部数が出ないので、1万部も出ると大ベストセラーなんですよ。

:そうですよね。すごいことですよね、1万部。

まつもと:誰も聞いたことがないようなプログラミング言語なのに、1万何千部も売れました。本はアスキーという会社が出したんですけど、アスキーの人たちから「よく売れました」とだいぶ褒められてありがたい限りという感じ。これが1999年。

もうあと2つあって。2000年に英語の本が出て、それに伴って2001年にアメリカで「Ruby Conference」というRubyのカンファレンスが開かれたんですね。最初のRuby Conferenceは出席者34名しかいなかったので(笑)。

:おお。

まつもと:最後は2004年に「Ruby on Rails」が出たことですね。Ruby on Railsは別に最初のフレームワークでもなかったんですけど評判になりました。2004年に出て、2005年、2006年あたりで非常に話題になったので。

そのRuby on RailsでWebアプリケーションを作るということは、Rubyでプログラミングをするということなので、その人気に引っ張られる感じで非常に普及したというのがあります。2012年から5〜6年ぐらいの間、ちょっと持ち上げられ過ぎぐらい高く評価されたというところはあると思います。

:作られてから一気に広がるまでは、15年とか、もうちょっとかかっていたぐらいなんですかね。

まつもと:そうなりますね。本人だって普及するなんて思っていないから。

:そうなんですね。一気に普及させようという感じでもなかったんですね。

まつもと:マーケティングをするつもりもないし、野望もなにもない、ただずっと続けていましたという感じなので、どちらかというと、伸びてビックリというところはあるんですね。

:そういうことなんですね。

プログラミング言語を開発すると儲かるのか?

:これも何人かに質問をいただいているのでちょっと聞きたいと思います。「プログラミング言語を作ると儲かるんですか。お金儲けはどうするんですか」みたいな、そういう質問があるんですが(笑)。

まつもと:Rubyはオープンソースソフトウェアなので、ダウンロードしたからってお金が発生することはないわけですね。

だけど、1つは、Rubyを応援したいという企業さんの中で、Ruby開発者をフルタイムで雇用している企業さんもいくつかあるんですね。私が所属している松江のネットワーク応用通信研究所もそうですし、クックパッドさんが私以外の2人のフルタイム開発者を採用してくださっています。あとMoney ForwardさんとかSpeeeさんとか、それらの会社がRubyの開発者をフルタイムで雇用しています。

海外でもGitHubやShopifyなど、Rubyを使っている企業の中でかなり大きめのところは、フルタイム雇用をしてRubyの開発に貢献していらっしゃるので、そういうかたちで給料を貰っている人たちもいます。私もそうです。

私に限定して言うと、それに加えて副業みたいな感じでいくつかの企業さんの技術顧問をしていますので、その技術顧問の謝礼もきます。

それから原稿を書く機会もあるので、原稿に対する原稿料がきます。それから、今回のサポーターズの技育祭もそうなんですけれど、講演依頼もあるので、こうやって出番があると、ものによりますけど謝礼が貰えることもけっこうあります。それも収入になるという感じです。

具体的な金額は、しゃべる習慣が日本にはないし、いろいろ差し障りもありそうでリスクが見積もれないので言いませんが、普通のサラリーマンプログラマーと比べても十分に余裕があるだけの収入は得ています。

:夢がありますねえ!(笑)。それじゃあプログラミング言語を作りましょうということで。

Rubyの父が語る、Rubyの魅力

:それでは次の質問です。これはぜひMatzさんに熱く語っていただきたい質問がきています。「ぶっちゃけふだんはPython中心に書いています。Ruby未経験なんですが、Rubyの魅力をRubyの父から直接教えていただきたいです」ということです。

まつもと:そうですね。1つは、やはりRuby on Railsがあるので、Webアプリケーションの開発をする時の生産性は高い傾向があります。もちろんPythonにもDjangoとかFlaskとかそういうWebアプリケーションフレームワークがあるわけなんですけれども。

それらのライバルと言ってもいい他言語のWebアプリケーションフレームワークと比べても、Ruby on Railsは十分に生産性が高いと思います。特に、小さなチームで新しいアプリケーションを素早く開発するという観点で言うと、非常に優秀なWebアプリケーションフレームワークだと思います。そこが魅力の1つです。

また、アプリケーションはそれぞれパフォーマンス特性が違うので、断言するのは難しいんですけども、ほとんどの場合でRubyのほうがパフォーマンスが高いと思います。

ただ、それを言い出すとじゃあGoやRustはどうなんだ、みたいな話になるし、コンパイル型言語にはなかなか勝てないので、それを言い出してもしょうがないと思うのですが、パフォーマンス的テクノロジーの投資としては、例えばPythonよりもずっと早くからJITコンパイラを導入したり、他の最適化もPythonよりも早く導入していたりするので。パフォーマンス的には勝てることが多いんじゃないかなとは思います。

最後は、これを魅力に感じる人がいるかどうかにもよりますけれども。開発者、コアチームと、ユーザーの距離が近いので、Rubyがこんなだったらいいのになと、ふと思いついたアイデアを話しかけていくと、わりと本気で聞いてもらえるところがあります。

そうするとRubyを作る側に回ることができるというか、そういう距離感の近さは魅力なんじゃないかなと思います。

魅力ばかり言うとちょっとあれなので、負けていることも正直に言うとですね。コミュニティサイズがだいぶ違います。Pythonなら、機械学習や人工知能系のジャンルで、いいアプリケーションライブラリがあるけど、Rubyだとそろっていないケースが多いんですね。

あるのはあるんですけど、例えば機能的に勝てないとか、あるいはドキュメントが充実していないとか、そういうコミュニティサイズによる弱さはちょっとありますね。特に苦手なジャンルにおいて。

:なるほど。みなさん、ぜひこれを機にRubyをちょっと触ってほしいなと思います。

Rubyも経験した「ハイプ・サイクル」

:それでは続きまして、これも失礼を承知での質問だと思うんですが。「RubyもしくはRailsはオワコンだというのをよく耳にしますが、Rubyの開発者としてRubyの未来をどう考えていますか」。というところでいかがでしょうか。

まつもと:「ハイプ・サイクル」っていう言葉があってですね。新しい技術が現れた時にそれがすごく話題になるんだけど、話題になり過ぎて実際の能力よりも高い期待を持たせてしまった挙句、物理的な限界とか、なんでもかんでもできるわけではないので幻滅する人が出てきて、次第にみなさんが実態どおりの認識をして安定していくことをハイプ・サイクルと呼びます。

Rubyの場合もやはりハイプ・サイクルを経験したんだと思うんですね。2004年ぐらいからものすごーく話題になって、実態以上にもてはやされたのが正直なところだと思うんです。

ただ、2012年ぐらいからは幻滅期っていうんですかね、ライバルのほうがいいんじゃないかとか、Rubyよりもこの点において優れている他の言語があるよみたいに言われることがあって、幻滅した人も中にはいると思います。

じゃあそれよりもさらに10年経った今はどうかというと、現実に即した状態でRubyを認識している人のほうが多いんじゃないかな、と思っています。

人の見方によっていろいろなんですね。一番高いところを知っていて、現状を見た時にそっちのほうが低いので、人気が落ちたというふうに見る人も当然いるわけですよね。人気が落ち続けると消えてしまうので、オワコンと言う人もいます。日本でも海外でも、毎年のように「Rubyは死んだ」みたいなことをブログに書く人がいます。

:毎年言われている印象がありますよね。

まつもと:そうですね。コミュニティの中では「今年も死んだ」とか、「今年の死に方は近年ないナントカで」とか、ボジョレーヌーヴォーみたいな言い方をしていることがけっこうあるんですけれども。

:あはは(笑)、ボジョレーヌーヴォーと一緒なわけですね。

まつもと:正直言うと、例えばみんな大好きGitHubとか、世界中の人が使っているShopifyとか、全部Rubyで……全部って言ったら言い過ぎだけどRubyで動いているわけですよね。

例えばスケーラビリティの話をした時に、「あなたがこれから作るWebアプリケーションがGitHubほどたくさんのユーザーを集めることがありますか」とか、「Shopifyほどたくさんトラフィックを捌くことがありますか」ということを考えると、まあまあないわけです。

それを考えると、「Pythonのほうが強い」とか、「Javaのほうが強い」とか言うのは当然だと思うんですけど、一番ではないからもう生きる余地がないとか死ぬとか言うのは、ちょっと大袈裟な表現ではないかなとは思いますね。

トヨタじゃなかったら存在できないのかというところですね。日本には車メーカーがいったいいくつあるの? という話でもあるので。

今新たに言語を開発するならば、どんな仕様の言語を作るか

:続きまして、リアルタイムでいただいた質問です。「今新しく言語を開発するとしたら、プログラミングパラダイムや用途など、どのような仕様の言語を作りますか」。という質問をいただいています。

まつもと:どうなんだろうなあ。前提にしているものがいろいろあるので、なかなか言いにくいところではあるんですけれども。私が一番魅力を感じるのは、Rubyみたいな特定の目的ではない汎用プログラミング言語なので、そっちをやりたいなあとは思っています。

ただ、私は数年前にちょっとお遊びで、Streemという名前のストリーム型データ処理をする特定目的言語を作ったことがあるんですね。世の中にはRubyもあるしPythonもあるし、汎用言語はもうすでにいっぱいあるから、今これから必要とされるのは特定目的の言語だと思ってちょっとデザインしました。

なのでちょっとわからないですね。自分の興味の方向としては汎用言語を作りたい、Rubyみたいな言語を作りたいと思いますけど。現実的なニーズから見ると特定目的というか、ドメインが狭い言語のほうが生きる価値はあるかなっていう気はしますね。

:その​​Streemは今はどういう状況なんですか。

まつもと:今はRubyを作るのが忙しくて、Streamはここ何年かほったらかしですね。

:そうなんですね。ちょまどさんがパワーワード、「神々の遊び」とコメントを(笑)。お遊びでプログラミング言語を作るということですが。

まつもと:え、作るでしょう?

:(笑)。

まつもと:だって、2020年でしたっけ。なんか中学生が作っていたじゃないですか「Blawn」。

:ありましたね。

まつもと:言語を作るのは、やればできるんですよ。

:ありましたね。はい、ということです。

すべてのプログラミング言語を愛しているけどRustは好みではない

:これもリアルタイムでいただいている質問です。「今Ruby、Cの次に好きな言語はなんですか」。

まつもと:RubyとCの次に好きな言語。うーん、なんだろうなあ。いや、私はプログラミング言語オタクなので、すべてのプログラミング言語を愛しているんですけれども。

:おおー。

まつもと:そうだな。Elixir、Go、Rustは気になるっちゃ気になるんですね。ただ、正直に言うとRustは僕の好みではない(笑)。

:おおー。気になるポイントと好みじゃないポイントはどのあたりなんですか。

まつもと:やはりCを一番よく書くので、システムプログラミングの領域が、私がよくプログラムする領域なんですけど。そこに出てくる言語の中で今一番メジャーなのは、GoとRustであるというのが気になるところですね。

だけど、Rustが型でいろいろなことを言ってくれるのはうれしいところとうれしくないところがあって。つまりコンパイラに怒られるんですね。僕はコンパイラに怒られるのがすごく嫌いなので(笑)。なんかストレスがたまるんですよね。

:(笑)。

まつもと:どちらかというと、技術的なことではないところで一緒にがんばれるものがいいなって思っていて(笑)。

:なるほど。気持ちよくやれるかというのが大事なんですね。

まつもと:そうですね。

(次回へつづく)