RubyKaigi 2023: Matz Keynote
yuiseki.iconのまとめ
プログラミング言語Rubyは、今年で誕生30周年である
Matzはキーノートにおいて、Rubyの生い立ちから現在までを語った
初期のRubyはMatzがほとんど一人で開発していた
しかし、この頃に考案された言語仕様が、30年間一貫している
長く通用する原則を考えることが重要である
その後にRubyを他の人に紹介して意見を貰った
自分とは違った視点の良い意見は積極的に取り入れた
また、この初期にRubyに関わりはじめた人は、いまでも強く貢献してくれている人がいる
Ruby 1.0の時期
ほとんどの開発者は、プログラミング言語に「便利さ」や「利便性」あるいは「利益」「便益」を求める
成長過程のプログラミング言語には、こうした利便性がない
しかし、開発者がいなければ、プログラミング言語が成長して利便性が高まることもない
数少ない開発者が、便益ではなく、ただ楽しみのために新しいことに挑戦する
こうした同志を探し出して、結束することが重要である
そのためには、情熱や動機を表現して伝える必要がある
Ruby on Railsが登場した時期
Rubyが成長していき、圧倒的な便益を提供できるキラーアプリケーションが登場した
ただ楽しみのために続けていくことが、いずれ便益を生み出す
また、圧倒的な便益があることを、広く・上手く伝えることも非常に重要である
そのためにはプレゼンテーションやマーケティングが重要である
Ruby 3.xへの道のり
自分でも実現できるかどうかわからないような、無理めな目標を掲げる
ただし、この目標は達成することに戦略的に大きな価値のあるものでなければならない
どう実現するかはみんなで考えよう!
そうすると思わぬアイデアを試行錯誤し、実践してみせてくれる人が現れる
また、リーダーは時に、自分のダメなところもさらけ出すことが、重要である
周りが思わず助けたくなる・手伝いたくなるようなウッカリさ
「まったくしょうがないなあ、じゃあそこは私がやりますから」みたいに思ってもらう
30 Years of Ruby
1993年2月
名前が先に決まった
名前重要
Lesson: 良い名前を決める
1993年2月~1994年12月
一人で開発
v0.49
Rubyの基礎、原則が完成
ずっと安定
Lesson: Stick with Basic Principles
1994年12月~1995年12月
Alpha Release
@ニュースネット
ブロックの{}ではないdo...end記法などはこの時代に生まれた
Lesson: Different POV
1995年12月~1997年8月
First Public Release
v0.95
メーリングリストを作った
Lesson: Community = Communication
1997年8月~1999年11月
v1.0
Lesson: Benefit vs Joy
Chicken and Egg Problem
99% Benefit Seekers
1% Just for Fun
Seek Comrades
Share your Motivation
1999年11月~2004年11月
Books and Conference
First Ruby Book
オブジェクト指向スクリプト言語Ruby
First English Ruby Book
ピッケル本
怒涛のメール
半年ちょっとくらいで書かれた
JAOO
カンファレンス
9.11
DHHがカンファレンスの手伝いをしていた
First RubyConf
炭疽菌騒ぎ
40名以下
Lesson: Connection Matters
人と人とのつながり
Pragmatic Programmers
Programming Ruby
2004年11月~2009年1月
Ruby on Rails登場
Killer Application
Ruby Association
Lesson: Joy can create Benefit
Lesson: Marketing is Important
DHHのデモ動画がすごかった
15分でToDoアプリを作る
Lesson: Filling Gap
2009年1月~2013年2月
v1.9.1
v1.9でYARVを導入してv1.8と互換性が失われた
v1.9.1で互換性が取り戻された
Lesson: Compatibility Matters
互換性重要
Lesson: Performance Heals All Sorrows
性能重要
2013年2月~2015年11月
v2.0
New Features
Path to Perfection
The End of Rails Illution
Lesson: People Come and Go
Lesson: Keep Moving Forward
2015年11月~2020年2月
Ruby3x3
ジョン・エフ・ケネディ
アポロ計画
MJIT
YJIT
Lesson: Leadership and Vision
2020年2月~いま
Ruby v3.0
Lesson: Withstand Headwinds
DHH
vs TypeScript
@dhh: TypeScript sucked out much of the joy I had writing JavaScript. I’m forever grateful that @yukihiro_matz didn’t succumb to the pressure of adding similar type hints to Ruby. May we forever enjoy this beloved language without 🙏 https://t.co/KqttpLzo8B
静的型付けを受け入れない地球平面説信者 vs Static Type Bielivers
Lesson: The Best Way To Predict The Future Is To Invent It
Matz:
静的型付けを書かなくても型解析できるはずだ!!
Alt Ruby impls
JRuby
IronRuby
TruffleRuby
mruby
ISO
30170:2012
100 Year Language by Paul Graham
Concise
Readable
Extensible
Rubyは30年生き残った
次の30年生き残れるか?
改善点
Performance
Concurrency
Tools
Types
TypePref
ChatGPTにRubyコードの型を推論させてみた
TypePrefみたいなことができそう
人間が型を書かなくても十分に推論してくれるんじゃないか
型に書ける以上のことを推論できる日が来るかもしれない