2023年5月11日から13日まで、長野県松本市でRubyKaigi 2023が開催されました。今回のRubyKaigiは
今年はRubyの開発を始めてから30年の節目ということで、今回の講演では、これまでの開発で得た様々な教訓を、いくつかの時代ごとに区分して紹介くださいました。
1993年2月24日:Rubyの誕生
Rubyの名前が決まったのがこの日です。この時点ではRubyのコードは1行もなかったそうですが、公開された日ではなく、名前が決まった日が誕生日とされています。ソフトウェアは物理的実体を持たない概念であり、名前によってその存在が決まるのだから、名前が決まった日を持ってRubyという概念が誕生したとみなしているそうです。
名前については
教訓:良い名前を選ぶ
もしサービスやソフトウェアを作ることになった場合、それが成功するかどうかは名前によってある程度決まってしまうのではないか、とまつもとさんは述べています。
1993年2月〜1994年12月:ひとりで開発を進める
Rubyを作っているということを数人にしか教えず、まつもとさんがひとりで開発をしていた時期です。当時のソースコードはほとんど残っていないそうですが、手元に残っているうちで最も古いv0.
教訓:最初に決めた基本的方針や原則にこだわる
1994年12月〜1995年12月:他人の意見を取り入れる
Rubyがインターネットに公開されたのは1995年12月ですが、それより前に、αリリースとしてネット上で興味を持ってくれた一部の人にソースコードを公開し、意見を聞いていたのがこの時期です。
言語としての基本的な部分はひとりで決めていたものの、様々な視点からの意見を聞くことで自分だけでは気づかなかったことを学んだと言います。もともと{ ... }
でしか渡せなかったブロックが、do ... end
でも渡せるようになったのもこの時だそうです。
教訓:他人の意見を聞くことで視野が広がる
1995年12月〜1997年08月:一般公開。コミュニティが生まれる
ファーストパブリックリリースとして多くの人に使ってもらっていたのがこの時期です。当時はメーリングリストが主なコミュニティだったそうですが、いろいろな人からバグレポートが送られてきたと言います。まだそれほど品質の高い言語ではなかったことがうかがえます。
しかし、品質が高くなかったことでかえってコミュニケーションが生まれ、Rubyのコミュニティができていったことは良いことだったと述べています。もし自動車を購入して気に入らないことがあったとしても、それを伝える場所というのはなかなか限られています。一方、まつもとさんに言わせれば、Rubyを作った人は
教訓:コミュニケーションとコミュニティは非常に大事
1997年8月〜1999年11月:Ruby 1.0がリリース。楽しさをアピール
Ruby 1.
たくさんの人にRubyの存在は知れ渡っていましたが、キラーアプリケーションが存在しないために伸び悩む時期が続いたと言います。99%の人は利益を求めてソフトウェアを使うわけで、市場からは便利なものを求められる一方で、当時は機能もライブラリも足りないので利益が提供できない状況が続きました。利益を追求するためにはリソースが必要な一方で、リソースを提供するためには利益が必要という状態です。
しかし、99%の人が利益を求めていたのに対し、1%の人は楽しさのために作っていたことに注目し、同志を求めて
教訓:楽しさを武器に利益と戦う
1999年11月〜2004年10月:Rubyが世界に広まる
本が出版されたり、カンファレンスが開かれたりするようになったのがこの時期です。明確な締め切りがないために苦労をしつつも、最初のRubyの本
『Programming Ruby』
2001年9月にはJava And Object Oriented
教訓:人と人とのつながりが非常に大事
言語の開発を応援するだけではなく、本を出版したいと声をかけてくれる人、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.
性能を改善してもコミュニティに届かないという状況が5年以上続き、対応にとても苦労されたようです。バージョン2とバージョン3の間で15年もコミュニティが分断されてしまったPythonと比べたら運が良かったとも言えますが、互換性を犠牲にするとコミュニティの分断が起こるため、現在は工夫をしながら改善をしているそうです。
教訓:互換性は大事
一方で、Ruby 1.
教訓:パフォーマンスを改善すると他のことが改善することもある
2013年2月〜2015年11月:Ruby 2.0のリリース
Rubyの開発が20周年を迎え、記念としてRuby 2.
一方で、Ruby on Railsの評判にかげりが出たのもこの時期でした。Railsの発表当時は画期的だった機能も別の言語で実現できてしまうなど、来る人もいれば離れていく人もいるというのを学んだそうです。人気がかげると
教訓:来る人もいれば離れて行く人もいる
教訓:前に進み続けなければいけない
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.
この講演の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.
特に型については、ChatGPTに型を推論させてみたらある程度の型は推論できる時代であり、人間が型を書かずとも十分に推論してくれる可能性は高いと述べています。freezeされているなどの追加の情報を持っている型情報をわざわざ書かなくても利用できる未来を実現するために、Rubyには型宣言を頑なに入れないつもりだと語っていました。
まだ手をつけていないことに手をつけ、これからも前に進み続けようとしているのは、Rubyユーザーが喜んでプログラムを書き、利益を受けられる未来を作るためであり、その想いはRubyのコア開発者も、gemの作者も、Railsの開発者も同じであると言います。