RubyKaigi 2023 キーノートレポート

まつもとゆきひろさん「30 Years of Ruby」 〜RubyKaigi 2023 1日目キーノート

2023年5月11日から13日まで、長野県松本市でRubyKaigi 2023が開催されました。今回のRubyKaigiは「松本に始まり松本に終わる」かたちで、Rubyの作者であるまつもとゆきひろさんの基調講演からスタートしました。タイトルは「30 Years of Ruby」です。

今年はRubyの開発を始めてから30年の節目ということで、今回の講演では、これまでの開発で得た様々な教訓を、いくつかの時代ごとに区分して紹介くださいました。

1993年2月24日⁠Rubyの誕生

Rubyの名前が決まったのがこの日です。この時点ではRubyのコードは1行もなかったそうですが、公開された日ではなく、名前が決まった日が誕生日とされています。ソフトウェアは物理的実体を持たない概念であり、名前によってその存在が決まるのだから、名前が決まった日を持ってRubyという概念が誕生したとみなしているそうです。

名前については「Ruby」の他にも、当時は「Coral(サンゴ⁠⁠Tish(ティッシュ⁠⁠」など、いくつか命名候補があったようです。もし言語名がTishになっていたら、今頃カンファレンスはTishKaigiとか呼ばれ、製紙会社のカンファレンスかと勘違いされそうな名前になってしまったかもしれません。

教訓良い名前を選ぶ

もしサービスやソフトウェアを作ることになった場合、それが成功するかどうかは名前によってある程度決まってしまうのではないか、とまつもとさんは述べています。

1993年2月〜1994年12月⁠ひとりで開発を進める

Rubyを作っているということを数人にしか教えず、まつもとさんがひとりで開発をしていた時期です。当時のソースコードはほとんど残っていないそうですが、手元に残っているうちで最も古いv0.49の時点で驚くほど現代のRubyに似ていて、Rubyの原則はこの時すでに完成していたと言えそうです。

教訓最初に決めた基本的方針や原則にこだわる

1994年12月〜1995年12月⁠他人の意見を取り入れる

Rubyがインターネットに公開されたのは1995年12月ですが、それより前に、αリリースとしてネット上で興味を持ってくれた一部の人にソースコードを公開し、意見を聞いていたのがこの時期です。

言語としての基本的な部分はひとりで決めていたものの、様々な視点からの意見を聞くことで自分だけでは気づかなかったことを学んだと言います。もともと{ ... }でしか渡せなかったブロックが、do ... endでも渡せるようになったのもこの時だそうです。

教訓他人の意見を聞くことで視野が広がる

1995年12月〜1997年08月⁠一般公開⁠コミュニティが生まれる

ファーストパブリックリリースとして多くの人に使ってもらっていたのがこの時期です。当時はメーリングリストが主なコミュニティだったそうですが、いろいろな人からバグレポートが送られてきたと言います。まだそれほど品質の高い言語ではなかったことがうかがえます。

しかし、品質が高くなかったことでかえってコミュニケーションが生まれ、Rubyのコミュニティができていったことは良いことだったと述べています。もし自動車を購入して気に入らないことがあったとしても、それを伝える場所というのはなかなか限られています。一方、まつもとさんに言わせれば、Rubyを作った人は「迂闊な人」で、その動作について気軽に文句も言うことができます。すると、関わっている人の中から「しょうがないなあ」とか言って開発に携わってくれる人が出てきたそうです。迂闊で隙のある性格がRubyにとっては幸いだったと述べていました。

教訓コミュニケーションとコミュニティは非常に大事

1997年8月〜1999年11月⁠Ruby 1.0がリリース⁠楽しさをアピール

Ruby 1.0がリリースされたのがこの時期です。0.xから1.xになることでソフトウェアが安定しているような印象を与えることになりますが、特に何があったから1.0にしたというよりも、ここを節目としたいという意思表示として1.0にしたというのが実際のところだそうです。

たくさんの人にRubyの存在は知れ渡っていましたが、キラーアプリケーションが存在しないために伸び悩む時期が続いたと言います。99%の人は利益を求めてソフトウェアを使うわけで、市場からは便利なものを求められる一方で、当時は機能もライブラリも足りないので利益が提供できない状況が続きました。利益を追求するためにはリソースが必要な一方で、リソースを提供するためには利益が必要という状態です。

しかし、99%の人が利益を求めていたのに対し、1%の人は楽しさのために作っていたことに注目し、同志を求めて「好きだからRubyに携わっている」という人たちに「利益は提供できないけど楽しいよ」とアピールするようにしたそうです。自由に対するモチベーションがこの頃は背景にあったようです。

教訓楽しさを武器に利益と戦う

1999年11月〜2004年10月⁠Rubyが世界に広まる

本が出版されたり、カンファレンスが開かれたりするようになったのがこの時期です。明確な締め切りがないために苦労をしつつも、最初のRubyの本『オブジェクト指向スクリプト言語 Ruby』が当初の予定から2年ほど遅れて1999年11月に出版されます。その後、最初の英語の本『Programming Ruby』が2000年10月に出版されました。

『Programming Ruby』の著者陣からは執筆期間に怒涛のように質問のメールが送られてきたそうですが、彼らが半年強で分厚い本を一気に書き上げてしまったことには驚いたと述べていました。この本のおかげで海外の多くの人がRubyを使うようになったそうで、この本がなかったら今のRubyはなかったと述べています。

2001年9月にはJava And Object Oriented(JAOO)というカンファレンスでまつもとさんの招待講演があり、翌月には最初のRubyConfが開催されます。JAOOではのちにRuby on Railsを作ることになるDavid Heinemeier Hansson(DHH)との出会いがあり、RubyConfは当時は小規模だったものの、世界中にコミュニティが広がるきっかけになったようでした。

教訓人と人とのつながりが非常に大事

言語の開発を応援するだけではなく、本を出版したいと声をかけてくれる人、Rubyのカンファレンスを開催してくれる人、Rubyに興味を持ってカンファレンスに招待してくれる人がいるおかげで、Rubyの世界は広がっていったようです。

2004年10月〜2009年1月⁠Ruby on Railsの登場と⁠Ruby Associationの設立

Ruby on Railsが誕生したのが2004年10月です。Ruby待望のキラーアプリケーションとしてWebアプリケーションフレームワークが誕生し、利益を提供できるようになりました。

教訓楽しみのためにツールを作るということを継続すれば、いずれ利益を産むことができる

この頃は、良いものを作ればそれは広まると信じてきたものの、それは必ずしも真実ではないということを学んだ時期でもあるようです。Ruby on Railsの作者であるDHHはマーケティングが得意で、炎上している記事にコメントをつけたり、15分でWebアプリケーションを作るデモを動画で行ったりすることでRailsの知名度を高めていったようです。2004年というのはYouTubeが生まれた年であり、インターネット上で動画を扱うことがあまり一般的ではなかった時代に、説得力のあるデモを行うという彼のプレゼンテーション能力によって、Ruby on Railsは最初の一歩を歩んだのです。

教訓マーケティングは大事

また、同時期にはRuby Associationが設立され、ビジネスでRubyを使いたい人と技術者との目線の違いを埋めるための取り組みが行われていきました。スーツを着ている人たちに対しても技術の優位性を説得する必要性があることに気づいたのもこの時期だそうです。

教訓ビジネスに携わっている人たちとのギャップを埋める

2009年1月〜2013年2月⁠Ruby 1.9で互換性を失う

2009年の1月にRuby 1.9がリリースされました。Ruby 1.9ではコアな部分を書き換えて大規模な改善をしたので、互換性がありませんでした。するといくらRuby 1.9や2.0をリリースする活動を続けていても、コミュニティの一部はRuby 1.8を使い続けてしまったようで、コミュニティの分断が起きてしまいました。

性能を改善してもコミュニティに届かないという状況が5年以上続き、対応にとても苦労されたようです。バージョン2とバージョン3の間で15年もコミュニティが分断されてしまったPythonと比べたら運が良かったとも言えますが、互換性を犠牲にするとコミュニティの分断が起こるため、現在は工夫をしながら改善をしているそうです。

教訓互換性は大事

一方で、Ruby 1.8とRuby 1.9の性能はかなり異なっていたため、Ruby 1.9でパフォーマンスが上がるなら書き換えるコストがかかっても良いか、という人も一定数いたようです。JITなど、パフォーマンスの改善に力を入れるのは、この時の教訓があるからだそうです。

教訓パフォーマンスを改善すると他のことが改善することもある

2013年2月〜2015年11月⁠Ruby 2.0のリリース

Rubyの開発が20周年を迎え、記念としてRuby 2.0がリリースされました。開発を始めた当初から実装したいと構想していた機能がコミュニティの力で概ね揃い、Rubyが完成に近づいたのがこの時だそうです。

一方で、Ruby on Railsの評判にかげりが出たのもこの時期でした。Railsの発表当時は画期的だった機能も別の言語で実現できてしまうなど、来る人もいれば離れていく人もいるというのを学んだそうです。人気がかげると「Rubyは死んだ」とか言われて叩かれることもありますが、それでも前に進み続けなければいけないという決意を新たにしたとのことでした。

教訓来る人もいれば離れて行く人もいる

教訓前に進み続けなければいけない

2015年11月〜2020年2月⁠「Ruby3x3」を旗印に開発を進める

この時期には"Ruby3x3"というキャッチフレーズを作り、Ruby3をRuby2の3倍速くすることを目指していました。このキャッチフレーズの元となったのは、1962年に行われたJFKの演説だったようです。

「この10年の間に月に行きましょう。簡単だから月に行くのではなく、難しいから月に行くのです。そこにエネルギーを集中することによって、我々は組織化してエネルギーとスキルを測ることができるのです」

2015年のRubyConfで初めてこの話をした時には、絶対にRubyを3倍速くすることができるとは思っておらず、リリース時に謝る可能性があるとも思っていたようですが、こういう方向に向かうことを宣言したのち、MJITができて、YJITができて、性能が改善されていったそうです。作ってくれた人の努力のおかげももちろんありますが、入口を作って旗を振ったことによってそれが実現したというのは言えるだろうと述べています。

教訓リーダーシップとビジョンの提示の重要性

2020年2月〜現在⁠Ruby 3.0⁠そしてこれから

Ruby 3.0がリリースされたのは2020年2月です。Rubyはずいぶん改善されたのにも関わらず、⁠Rubyは死んだ」⁠Railsも終わりだ」などと言われることもたびたびあるそうです。まつもとさんは、プログラミング言語の人気ランキングでRubyが1位になる未来はすぐには訪れないとしながらも、2位以下に存在意義がないかと言われるとそうでもない、価値を提供し続けているのでそれでいいのではないかと考えていると語りました。

この講演の3日前に、DHHがこんなツイートをしました。

「TypeScriptを書いていると大変で、PlainなJavaScriptのほうが楽しい。TypeScriptと似たような型ヒントを言語に組み込むようにプレッシャーをかけられても、それに屈しないMatzに永遠に感謝する」

これに対し、TypeScriptの人たちは「地球は平らだと信じている人がいる。静的型付けの優位性は科学的に証明されているので、動的な型の言語には未来がない。動的型付けに固執する人は地球は平らだと信じて疑わない人だ」などと反論するそうです。

まつもとさんとしては、そればかりが未来ではない、静的に型があることの良さも理解しているが、型宣言を言語に加えることが最善かと言われるとそうは思わないので、違う未来を作りたいと述べています。

教訓未来を予測する最も良い方法はそれを作ることだ

30年の間にあったイベントたち

これまで紹介できなかった重要なイベントを2つほど紹介してくださいました。

Rubyの別実装ができた

1990年にRubyを作った頃にメジャーだったPerlやPythonには別実装はなかったので、プログラミング言語と実装は強固に結びついているのが当たり前だと思っていたそうです。しかし2001年以降、JRuby、IronRuby、TruffleRuby、mrubyと数々の別実装が生まれました。これらの実装はRuby本体の実装からも参考にされているそうです。他の人が自分の言語を作ってくれるのはとても嬉しいことだと述べていました。

ISO/IEC 30170:2012というISO規格ができた

標準規格を作るためには、会議や出張がとても多くて大変だったそうですが、その大変さの割には、嬉しいこともあまりないんだとか。標準規格ができたら、それを採用する企業がいたり、検定試験に採用されたりするかもよと言われていたそうですが、情報処理技術者試験に採用されたのはPythonでした。

結びに

Rubyは簡潔だし、拡張性にも長けているので、長く生き残る言語としての特性を揃えているのではと述べつつも、もちろん改善すべき点もたくさんあると考えているそうです。Ruby 3.0以降も、パフォーマンス、並列実行、ツール、型などたくさんの改善を重ねてきており、これで完成という訳にはいかないものの、正しい方向に進歩していることを確信していると述べていました。

特に型については、ChatGPTに型を推論させてみたらある程度の型は推論できる時代であり、人間が型を書かずとも十分に推論してくれる可能性は高いと述べています。freezeされているなどの追加の情報を持っている型情報をわざわざ書かなくても利用できる未来を実現するために、Rubyには型宣言を頑なに入れないつもりだと語っていました。

まだ手をつけていないことに手をつけ、これからも前に進み続けようとしているのは、Rubyユーザーが喜んでプログラムを書き、利益を受けられる未来を作るためであり、その想いはRubyのコア開発者も、gemの作者も、Railsの開発者も同じであると言います。⁠Ruby、Railsを使って世の中をよくする活動を推し進めたいと思っているので参加してほしい」と呼びかけ、キーノートは幕を閉じました。

おすすめ記事

記事・ニュース一覧