RubyKaigi 2017 Keynoteレポート
まつもとゆきひろさん「Rubyはさまざまな言語やコミュニティから影響を受けデザインされている」The Many Faces of Module 〜RubyKaigi2017 基調講演 2日目
2017年9月18日から20日まで,
「よく天才プログラマーと紹介されるが,module
のいろいろな側面を例にとり,
オブジェクト指向
Rubyのオブジェクト指向はSmalltalk,
しかし,
そこで,module
という形でFlavorを受け継いでいます。
moduleの様々な側面
Ruby開発当初の用途
こういった経緯から,module
は当初Mixinのための機能として実装されました。そこから,module
を使うようにもなりました。Mathモジュールがその代表例です。
Ruby 2.0 からの用途
さらにRuby 2.
その当時主にRuby on Railsで使われていたalias_
と呼ばれるテクニックがありました。これはalias_
を使ってメソッドを置き換えるテクニックですが,
そこでRailsコミュニティから,Module#prepend
が提案されます。これが採用され,Module#prepend
によってCLOS
module
にはさらにRefinementの単位としての機能があります。Rubyはオープンクラスによって既に存在しているクラスにメソッドを追加したり置き換えたりできます。これらはモンキーパッチと呼ばれていますが,
今後の想定
そして,module
の機能であるStructual Signatureについて,conform
を呼ぶことによってそのメソッドすべてが使えるかをチェックできるそうです。
Rubyの今後
このようにRubyはさまざまな言語やコミュニティから影響を受けデザインされています。そしてこれからもこのようにデザインされていきます。今のRubyは完璧な言語ではなく,Performance
, Concurrency
, StaticAnalysis
などは,
Rubyの開発を始めた頃はまつもとさんが1人で開発を行っていましたが,
「Ruby3x3のように私んが声をあげたらコミュニティの人たちがそれに答えようと頑張ってくれる。こうあるべきというゴールを示してコミュニティの人たちが直してくれる。今やRubyは
最後に,
バックナンバー
RubyKaigi 2017 Keynoteレポート
- Vladimir Makarovさん「3x3を達成するには,極めて大きな改善が必要だ」Towards Ruby 3x3 performance 〜RubyKaigi 2017 基調講演 3日目
- まつもとゆきひろさん「Rubyはさまざまな言語やコミュニティから影響を受けデザインされている」The Many Faces of Module 〜RubyKaigi2017 基調講演 2日目
- 中田伸悦さん「Ruby開発者の日常」Making Ruby? ゆるふわRuby生活 〜RubyKaigi 2017 基調講演 1日目
関連記事
- nagachikaさん「安定したRubyを届けたい –All bugfixes are incompatibilities–」 〜RubyKaigi 2019 2日目 基調講演
- まつもとゆきひろさん「Ruby3の目指す未来 –The Year of Concurrency–」〜RubyKaigi 2019 1日目 基調講演
- 成瀬ゆいさん,Ruby開発の世界に飛び込もう 〜RubyKaigi 2016 基調講演 3日目
- Justin Searlsさん,恐怖のないリファクタリングを求めて 〜RubyKaigi 2016 基調講演 2日目
- 小崎資広さん「人に依存しないデバッグのために,道具の使い方を知ってほしい」〜RubyKaigi 2015基調講演 2日目