Rubyコミュニティが生存するためには何が必要か

まつもとゆきひろ氏(以下、まつもと):さて、これらの教訓をもとに、Rubyの未来はどうなるかについて考えてみましょう。

教訓をもう1回まとめておきますね。アイデアだけでは、価値がない。単純さは、いつもいいこととは限らない。仕様が大きいことは、いつもいいこととは限らない。それから、退屈させるとコミュニティは離散する。それから、結果的にモチベーションが重要である。それから、Second System Syndromeに気をつけなさい。私たちは、段階的に成長する必要があります。

そうすると、未来に対して必要なものは、生存するためにがんばるということですね。生存するために何が必要か? Rubyコミュニティが生存するためには何が必要か?。

あるいは、Rubyという言語は、今まで30年がんばってきましたが、今後30年生き延び続けるためにはどうしたらいいか? 30年か、ギリギリ生きているかな(笑)?

仮定として前提条件を置きましょう。1つは、人類が生きていないとRubyは生きていないので、人類にはちょっと生き延びてもらわないといけない。人類が絶滅していない。

もう1つ、『スタートレック』の世界って、誰もプログラミングしていないんですよね。少なくともドラマの中ではプログラミングしている様子はないんですよね。

何をしているかというと、コンピューターに呼びかける。「コンピューター、なんとかを表示してくれ」とか言うんですね。それを考えると、30年後、プログラミングというものが残っているかは、ちょっと疑問が残る点でもありますが、残っていると仮定しましょう。

それから、ほぼ同じなんですが、30年後、プログラミング言語を使ってプログラミングしているかはちょっとわからないところがあって、それもしていると仮定しましょう。過去60年してきたので、今後30年もするんじゃないかなと思ってはいるんですけど。

このような前提条件を置いた上で1つわかることは、いずれにしても、30年後もコミュニティは重要であること。1人では何もできないんですね。

とすると、コミュニティは新陳代謝が必要で、新しい人たちを呼び寄せる必要がありますね。誰も新しい人が入ってこないと、コミュニティの平均年齢は1歳ずつ上がっていくんですね。100年経ったら誰もいなくなるんですよ。

なんだけど、どんどん新しい人が入ってくると、平均年齢も下がるしコミュニティも生き続けるわけですね。つまりどんどん新しい人が入ってくるんですね。

私が、Rubyコミュニティについて非常にうれしいなと思っていることの1つは、こうやって、若い人がまだ入ってきてくれているということです。

アメリカの「RubyConf」に行った時に、「この中で、このカンファレンスに初めて参加する人はどのぐらいいますか?」と質問をすることが多いんですね。ここのところアメリカに行っていないので、ここで質問しますね。この「RubyWorld Conference」に今回初めて参加したという人、ちょっと手を挙げてみてもらえませんか?

前にいる人たちは後ろを振り返ってみてくださいね。けっこうな人が手を挙げていますね。ありがとうございます。つまり、こうやって新しくRubyに関心を持ったり、あるいは「RubyWorld Conference」に行こうかと、腰を上げた人がこれだけいるということは、Rubyのコミュニティに新しい人が来ているということなんですね。

これもすごく大事な指標で、もしこれが、「あっ、2022年も会いましたね。2021年も会いましたね」という人たちばかりだと……いや、そういう人がいてもいいんですよ。だけど、なじみの人ばかりだと、100年後消滅するんですね。どんどん新しい人に来てもらわないといけない。なので、若いプログラマーを惹きつける必要があるんですね。

もう1つうれしいことは、最近コミッターになってくださった方々の中に、すごく若い人がいて、その方々は私の子どもより若いんですね。あるいはRubyより若いんですね。これは本当にすばらしいことだなと思っていて、そういう人たちを呼び寄せることが必要だなと思います。

Rubyを魅力的なものにするために必要なのは、信頼性・生産性・効率性

じゃあ、Rubyコミュニティ全体として、若いプログラマーを惹きつけるためには何が必要かを考えると、答えはすごくクリアですね。仕事とお金が必要です。

仕事とお金が提供されるためには、会社にとって、企業にとってRubyというものが魅力的である必要がある。

信頼性、生産性、効率性、こういうものを企業に提供できることによって、Rubyを魅力的なものにできると考えています。この3つがRubyが企業に対して提供できるバリューですね。

信頼できるRubyとはどういうことかというと、いろいろあると思いますが、一番大事なのは、コミュニティとしての資産ではないかなと思っています。コミュニティの人たちがさまざまなものを作って、それを積み上げたものが活用できるからこそ今のRubyの魅力があるわけで、それが古びてしまわないように継続することが強く強く必要だと考えます。

例えば、ツールとかgemですね。「RubyGems」の数もだいぶ増えましたが、そういうようなものが必要だと考えます。

それから、教科書、チュートリアル、学校、スクールですね。そういうところで入門者がRubyを学ぶ機会も提供していく必要があります。

それから、「あの会社はRubyを使っています」とか「こういうふうにRubyを使ったらもっと効率が良くなりました」という体験談や、ブログのポストや、ユースケースなども必要です。

そういえば、スライドに書き忘れましたが、こういうカンファレンスがいろいろなところで開かれるということも、コミュニティによって運営されることが多いので、コミュニティの資産であることが多いと思います。

次ですね、生産性。Rubyが提供できる最大のバリューは生産性だろうと私は思っています。そうすると、Ruby言語そのものを改善していくことは必要だと思いますし、サポートするツールを改善していくのも必要だと思います。

私たちは、すでに「RuboCop」や「RubyMine」や「Ruby LSP」などを持っていますが、これで十分かというと、なかなかそうとはいかない。もっともっと改善の余地はあると思いますし、それによってRuby体験が良くなればRubyの生産性は向上していくんじゃないかなと思います。

さて、忘れてはいけない、重要なのが、Rubyの効率ですね。この場合の効率というのは、実行効率のことです。例えば、Rubyの実装を改善していくことが必要になります。

Ruby3.0以降に入ったJITコンパイラ、特にRuby3.2から入った「YJIT」という名前のJITコンパイラは、非常に性能が良くて、コマンドラインオプションでYJITを使いますとオプションを指定するだけで、10パーセントから20パーセントぐらいパフォーマンスが良くなるというレポートが来ています。

Railsアプリケーションが20パーセント改善するということは、例えばサーバーサイドにおけるコストが低減できるということですね。そういうかたちで、Rubyに対する投資、企業に対する投資を招く必要があります。

もしRubyの実行が10パーセント速くなれば、それはバックエンドのコスト、クラウドのサーバーの数を10パーセント減らせるということになります。

例えばみなさんが「Shopify」のような巨大なサービスを運営していたとして、10パーセントのバックエンドのコストが低減されると、それはもう何億円とか、何十億円になるわけですね。そうするとShopifyとしては、開発者をRubyに投入して、Rubyのパフォーマンスを改善するのに十分な正当性があると判断できるんですね。

同じようなことはShopifyだけではなく、ありとあらゆる企業に成立すると思うんですね。もしみなさんがRubyの改善に対して0.1パーセントでも貢献することができるならば、そのバックエンドのコストをそれだけ下げることができるということです。自分が最初の一石を投じることによって、ほかの人がフォローするのであれば、自分が改善した0.1パーセントだけではなく、それに続く5パーセント、10パーセント、30パーセントを招く呼び水になるのではないかなと考えます。Rubyに対しての投資がどんどん行われることを非常に強く期待したいと思います。

停滞は危険 コミュニティのみんなと一緒に前に進みたい

おそらく、Rubyに対する投資を行う上では意味や価値を持つ、最後の時期に来ているんじゃないかなと思います。

どういうことかというと、ガートナーのハイプ・サイクルという言葉があって、最初、技術が登場すると、ものすごく人気が高まって注目されるんですね。「なんか、新しい技術が出てきた」と言って。

Rubyの場合、2007年、2008年からこの「RubyWorld Conference」が始まったあたりですね。それから2012年ぐらいからにこのピークに達したと思うんですね。過大に評価される地点ですね。

ですが、2012年以降は例えばGoであるとかRustであるとか、TypeScriptであるとか、静的な型のついた言語が人気が高まったこともあって、ちょっと人気が下がっているところがあるんですね。

今はそれを乗り越えて、平野部分ですかね。実態どおりの評価をされているところだと思います。「Plateau of Productivity」、生産性の平原と書いていますが、これはすごく危険だと思うんですね。このフラットなところは、変化がないということじゃないですか。

停滞は危険なんですよ。ここで停滞しちゃうと、Rubyのコミュニティそのものが消えてしまう可能性があるということですね。安定は、非常に危険な時期だと思うわけですね。

Intelという会社では、パラノイド、偏執狂だけが生き残るというスローガンがあるそうですね。もしかしたら、これ駄目かもしれないという人がちょっと悲観的な感じで手を打っていくことによって生き延びていくという話ですけれども。

自画自賛ですが、Rubyは本当にすばらしい言語だと思います。だけど、実態以上に評価された時期を乗り越えて安定期に入っているというのも事実だと思います。

それを考えると、この安定期というのは、過去の教訓などを含めて考えると、私たちにとっては非常に危険な時期ではないかなと思うんですね。

例えば、最近本屋さんに行くと、Pythonの本がいっぱい並んでいて、棚1個全部Pythonの本でね、その隣に3冊ぐらいRubyの本があるという現状を見ると、ちょっと悲しいものがあります。

だけど、実際にWebアプリケーションを作りましょう、あるいは、スタートアップで新しいWebサービスを作りましょうとなって、「Pythonで作るのとRubyで作るのとどっちがいいか?」という話をする時に、好みもあるので断言できませんが、Rubyのほうがいいと思います。

(会場笑)

Rubyが失われるということは、そのすばらしい手段が過去のものになってしまう危険性があるんですね。それは良くない。良くないので、みなさんご一緒にすばらしい未来を作ろうね。

もしそうじゃなかったら、私たちはなにか別のものを使わないといけない、それはなにかとは言いませんが、少なくとも私にとっては望ましい未来ではない。

「おじいちゃんね、昔Rubyを作ったんだよ」と孫に言った時にですね、孫いませんけど(笑)。もし孫に言った時にですね、「Rubyって何? 宝石?」と言われる未来はあまり欲しくないんですね。

じゃなくて、孫に対してよぼよぼのおじいちゃんが「あのサービスもこのサービスもRubyでできているんだよ」と言いたいんですね。

もちろん私は、我のためにそうしてほしいわけではなくて、(Rubyは)それだけのポテンシャルは持っているんですね。ただ、ポテンシャルだけでは勝負はできない、「アイデアだけはいい」では価値がない。なので、それを実現させるためには私1人だけではなくてみなさんの力こそ必要なんですね。

このTipping Point、岐路に立って、そのまま落ちるか、伸びていくか、岐路に立っていると私はすでに感じているんですね。なぜならば、パラノイドだけが生き延びるからです。Rubyのために私は喜んでパラノイドになろうと思います。

私も、Rubyコミュニティも、前に進み続けるRubyに対して改善をし続けて、コミュニティに対して飽きさせないようなものをずっと提供し続けることを約束します。また、歩幅を広げて前進するスピードをより速めたいと考えています。

そのために、たくさんの企業が支援してくださっています。それも本当に感謝しています。私たちがもう一度世界を席巻するためには、みなさんと一緒に働くことが必要だと思いますし、それは本当に楽しいことなんですね。

Rubyには、価値があります。その価値をみなさんに届けて、みなさんには、その価値を享受していただきたい。その価値を使って、楽しいプログラミングをしていただきたいし、良いサービスを作っていただきたいし、世界をより良いものにしていただきたいし、結果として世界そのものをRubyを通じて良くしていきたい。みなさんと一緒に良くしていきたいと思っています。

それ(世界を良くする行為)全体がコミュニティの成果ですよね。なので、再び一緒に参加していただければと思います。そして、良い未来を作っていただきたいなと考えています。

Rubyという言語はきっかけに過ぎないんですよね。そのきっかけをうまく捉えて、みなさんと一緒に方向をそろえて働くことが、Rubyの力ではないかなと考えます。

みなさん、ここに来たからにはもう強制的にRubyのコミュニティの一員なので。

(会場笑)

いや、嘘です。強制ではないんですが、ぜひみんなで、一緒に楽しい時間、楽しいプログラミングをエンジョイしたいなと思います。

みなさん、一緒に前に進みましょう。ありがとうございました。

(会場拍手)

Rubyにコミットしたいと思っている人はどこから読み始めるべきか?

司会者:それでは、ご質問をお受けしたいと思います。ご質問ある方、挙手をお願いいたします。手が挙がりました。マイクをお持ちしますね。

質問者1:実際に、Rubyにコミットしたいと思っている人たちは、Rubyのどのあたりから読み始めたらいいと思いますか?

まつもと:バックグラウンドによって違うと思うんですね。Rubyのほとんどの部分はCで書いてあるので、Cが得意な人は、Rubyのコアについて、見て、読んで、直せるところを探したりすることができると思います。

そうでない人は、Rubyで書かれたライブラリを直すとか、それからドキュメントに問題があったら、よりわかりやすくするために直したりとか、そういうことからできると思います。

今は「GitHub」のプルリクエストを受け付けているので、なにか改善することがあったら、Rubyのリポジトリにプルリクエストを送ることから始めるといいと思います。

何回かプルリクエストを受け付けて、この人は信頼できるなとか、技術力があるなと思った人は、こちらから「コミッターになりませんか?」とスカウトメールを送ります。そうすると、コミッターになれるという手順になっています。

質問者1:ありがとうございます。実際にCのコードはけっこう膨大な量があって、入りやすいところとか、おすすめの好きなところとかあれば、お願いしたいです。

まつもと:駄目なところはいくつかあって、GCとParserとコードジェネレータには手を出すなって(笑)。

(会場笑)

そういう人たちは、ブラックベルトが必要なので。

ほかの、例えばStringクラスのメソッドをちょっと直すとか、あるいはArrayクラスのメソッドをこうするとちょっとだけ良くなるかなというところが、だいぶ楽だと思います。

質問者1:ありがとうございます。

司会者:ありがとうございました。ほかにございますか。

まつもと:VMにも(手を)出すな(笑)。

なぜ学校ではRubyを教えないのか?

司会者:あっ、手が挙がりましたので、マイクをお願いします。

質問者2:ありがとうございます。私は今、ITを勉強しています。

やはり本当に、Rubyの言語は授業がないです。ほかの専門学校を見ても、ほとんどないですかね。留学生としてはやはり日本に来てたので、日本の言語であるRubyを勉強したいなと思っていたのですが、そういうのはあまりなかったです。それはなぜだと思いますか? 

(会場笑)

まつもと:ほとんどの学校は、何を教えるかを決める時に、本屋の本棚の本の数で決めるんですよね。つまり、よく話題になっている言語を使いたいということなんですね。

Rubyは仕事になるしお金にもなりますが、新しいものが好きな技術者が来る言語じゃなくなっているんですね。それはすごく残念なことなんですけども。そういうことを改善していかないといけないということも、今日の話の中にはありましたね。

出版社の人と話をするんですけどね。「Rubyの本を」と言ったら、「最近Rubyの本は……」とか言われてしまって、私もちょっとつらい思いをしているんですけれども(笑)。

(会場笑)

まつもと:もしかすると、Rubyのプログラミングを教えます、Webアプリケーションプログラミング教えますという専門学校が出たら、別の意味で留学生が集まるかもしれませんね。そういう話は、今度専門学校の人に会ったら話しておこうと思います(笑)。