RubyKaigi 2014 レポート

まつもとゆきひろさん,Ruby 3に向けて組み込んでみたいアイデアを提案 ~ RubyKaigi 2014 2日目 基調講演

この記事を読むのに必要な時間:およそ 4 分

2014年9月18日~20日の3日間,タワーホール船堀にてRubyKaigi 2014が開催されました。基調講演をそれぞれレポートします。

画像

2日目の基調講演は,まつもとゆきひろさんです。まつもとさんは,過去に開催されたRubyConfでRubyに取り込んでみたいアイデアを提案してきました。しかし,最近のカンファレンスではRubyの未来についてあまり言及していませんでした。そこで今年は「Comming Soon...」というタイトルで,Ruby 3のアイデアを話しました。

今まで提案してきたアイデアを振り返る

2001年

まつもとさんは2001年のRubyConfでRubyのVirtual Machineを作りたいというアイデアを話しました。当時,まつもとさんはVirtual Machineのプロトタイプを作っていましたが,互換性を保ったまま動かせるように作るのが大変だったので,途中で挫折してしまったそうです。

画像

その後に笹田さんが別の方法でRubyのVirtual Machine(YARV)を作り,これはRuby 1.9に組み込まれました。Ruby 1.9は2007年にリリースされたので,2001年にまつもとさんが語られたアイデアは6年後に現実化したことになります。

2002年

2002年のRubyConfでは「他言語化(M17N)」「ネイティブスレッド」「世代別GC」について話しました。M17NとネイティブスレッドはRuby 1.9に,世代別GCはRuby 2.1に組み込まれました。

2003年

2003年のRubyConfにも基調講演として参加し,前年と比べてとても多くの新しいアイデアを話しました。

  • ローカル変数のスコープのルール変更
  • 多重代入のルールの明確化
  • ローカルメソッドの可視性変更
  • キーワード引数
  • メソッドコンビネーション
  • Selector Namespace
  • Optional Static Type

この年に語られた7つのアイデアの中で現実化されたアイデアは「多重代入のルールの明確化」「キーワード引数」「メソッドコンビネーション」「Selector Namespace」の4つです。「ローカル変数のスコープのルール変更」「ローカルメソッドの可視性の変更」については互換性を破壊せずに組み込むことができなさそうだったため,諦めてしまったそうです。また,「Optional Static Type」については提案してみたものの,現実化される気配がないようです。

2004年

2004年はRubyConfは欠席しましたので,未来について予想はしていませんでした。

2005年

2005年のRubyConfでは「ラムダ式(Stabby lambda)」「Real multi-value」「Traits」について語られて,「ラムダ式(Stabby lambda)」がRuby 1.9で組み込まれました。 発表当時はラムダ式の記号「->」に反対意見が多かったようですが,実際にRuby本体に組み込まれてからは好意的な意見が寄せられたそうです。

2006年から2009年まで

2006年から2009年までのRubyConfでは新しいアイデアを語らず,「自転車置き場の議論」という逸話や,Ruby 1.9リリースなどについて話しました。

久々に新しいアイデアを語られることになったのは,RubyKaigi2009の基調講演になります。このときは次のアイデアを話しました。

  • 複素数リテラル
  • 有理数リテラル
  • True division
  • Bitmap marking
  • Symbol GC

「True division」「Bitmap marking」は現実化されていませんが,「複素数リテラル」「有理数リテラル」はRuby 2.1で,「Bitmap marking」はRuby 2.0で,「Symbol GC」はRuby 2.2で実装されました。

2010年

翌年である2010年のRubyConfでは次のアイデアを話しました。

  • Mix(Traitsの再考)
  • Module#prepend
  • Refinement
  • RiteVM

このうち「Module#prepend」「Refinement」はRuby 2.0で組み込まれました。また,組み込みなどの小規模なデバイスをターゲットとした処理系を目指していたRiteVMは,mrubyという名前に変えて2012年にリリースしました。4つのアイデアの内,3つは現実化されているということです。

2011年から2014年までのRubyConfでは新しいアイデアについては語られませんでした。

振り返ってわかったこと

振り返ってみると,2010年のカンファレンスまで,まつもとさんは多くのアイデアを提案してきました。しかし,2011年からのカンファレンスでは新しいアイデアを何も提案していません。最近のRubyはメモリについての改善が著しいので,Rubyは確実に成長していますが,新しいアイデアについて語らない時期が続くのは辛いことです。

「OSSコミュニティはまるでサメのようで,泳ぎ続けなければ死んでしまう」

そう考えたまつもとさんは,Rubyコミュニティに新しい燃料を投下するために,Ruby 3のアイデアを話しました。

Ruby 3のアイデア

まつもとさんは,Ruby 3へ向けて実装したいアイデアとして,次の3つを挙げました。

  • Concurrency
  • JIT
  • 静的型付け

このうち今回の講演で取り上げたのは静的型付けについてでした。

静的型付け

20世紀に生まれた言語は変数に型が必要ない言語が多いです。一方で,ScalaやTypeScript,Dartなど最近生まれた言語はスクリプト言語のような使い方をされながらも静的な型を持っています。

このことについて,まつもとさんは「悔しいからRubyに静的な型を導入してみようか」と思っていたところ,ruby-trunkのチケット#9999にて「次の文法で型を宣言するのはどうだろうか」と提案がありました。

def connect(r -> Stream, c -> Client) -> Fiber
  ...
end

画像

著者プロフィール

小田井優(おだいすぐる)

RubyとRubyコミュニティとブログを書くことが好きなプログラマ。日本各地で開催されている地域Ruby会議に参加し,RubyistMagazineにレポートを寄稿している。コミュニティはよちよち.rbに所属。

twitter:@odailly_jp
blog:http://shindolog.hatenablog.com/

コメント

コメントの記入