Ruby 1.9.1 に期待できること〜最新のRubyの今〜

東京⼤学⼤学院情報理⼯学系研究科 創造情報学専攻 講師
⽇本Rubyの会

笹⽥耕⼀ / ささだこういち
ko1 at rvm.jp

2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

1

agenday Ruby 1.9.1 とは

y Ruby 1.9.1 で利⽤できる機能
y Ruby 1.9.1 の性能

y ⾃⼰紹介：ささだ（ko1）y 秋葉原勤務

y Ruby 1.9 を最近使い出した newbe
2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

2

参考資料 / 協⼒y Sam Ruby / dave, dblack の発表
y Ruby 1.9: What to Expect

http://rubyconf2008.confreaks.com/
ruby-19-what-to-expect.html

y Asakusa.rb の⼈々

y 第4回 浅草.rb でのディスカッション

2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

3

Ruby 1.9.1 とは
y CでかかれたRuby処理系

y MRI (Matz Ruby Interpreter), CRuby ともy OO Script ⾔語Rubyy 2009年1⽉にリリース予定（予定）y クリスマスじゃありませんy 簡単な歴史y （前略）y 2007年12⽉ 1.9.0 リリース

しかし，⼗分な品質は得られず
y デバッグデバッグデバッグ…
y 2008年12⽉リリースの延期
2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

4

Ruby 1.9.1 とは開発体制
y まつもとさん依存からの脱却
y yugui さんによるリリース管理

y えんどうさんによる徹底的ないじめカバレッジ向上

y 開発体制の改善

y Redmine による問題の管理
y リリースブランチの設定

y 定期的な開発ミーティングの開催
y RubySpec の開発（海外）y 「るりま」の充実
2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

5

Ruby 1.9.1 の機能
y Rubyのプログラムが動かせます！
y Rubyの構⽂の解析とかなんとかy 代⼊とかOO機能とか例外とかいろいろ

y 新機能いろいろ！

y 1.8 からいろいろ追加・変更が⾏われました
y 今⽇の発表のメイン

y Ruby知らない⼈は置いてけぼり→ とても便利になった環境で始められると思ってください！

2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

6

Ruby 1.9.1 の新機能
m17n (Multilingerlization) 対応
y いろいろな⽂字コードエンコーディングが使えるように

y 詳細は次回の「るびま」で！

2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

7

Ruby 1.9.1 の新機能
Hashの拡張y Ordered Hashy Hashが順序を保存するように

y Hashリテラルの拡張

y {a: 1, b: 2, …} # 従来は： {:a => 1, :b => 2, …}
y キーワード引数もどきrun(a: 1, b: 2) # 従来は：run(:a => 1, :b => 2)

2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

8

Ruby 1.9.1 の新機能
Enumeratory ブロックをつけないイテレータはEnumerator を返すように変更
1.times #=> <Enumerator>y 利⽤例：map.with_index
y Enumerator#next とか

2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

9

Ruby 1.9.1 の新機能組み込みクラス，メソッドの変更
y tap

y “foo”.split(//).each{|e| …}.tap{|ary| …}.join(“¥n”)

y Symbol#to_proc

y ary.inject(:&+) #=> ary.inject{|r, e| r + e}y p() が引数をそのまま返す

y to_s の書式（⼀部inspect っぽく）
y 埋め込み⽂字列に効く

y Array#shuffle などの新機能
2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

10Ruby 1.9.1 の新機能
⽂法の変更
y -> (lambda)

y “lambda{|a, b| …}” == “-> a, b { … }”y Stuby arrowy Block Parameter の変更

y ブロック引数，オプショナル引数などが利⽤可能
y define_method で定義されたブロックを使えるように

y Block Scope の変更
y Shadowling するように

y 括弧の省略y 括弧の省略について，より寛容に

y Post Argument

y m(a, b=1, *c, d) と書けるように

2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

11

Ruby 1.9.1 の新機能ライブラリの拡張
y RubyGems の取り込み
y Rake の取り込み

2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

12

Ruby 1.9.1 の新機能
Fiberのサポート
y Enumerator#nextを作るための仕組み
y 要するに SemiCoroutine

y と聞いてわからない⼈は多分必要ない
y 世間が騒いでいるほど，すごい機能じゃないです（まだ）2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

13

Ruby 1.9.1 の新機能
その他
y まだまだいろいろあるよ！
y goruby とかy 詳細は「るりま」を参照
y Rubyリファレンスマニュアル刷新計画
y http://doc.loveruby.net/y 「どんな⾔語でもリファレンスマニュ

アルの主なところは"通読"すべき」by yugui2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

14

Ruby 1.9.1 の性能
y スピードy そこそこよくなったよy メモリ消費量y けっこうよくなったよ

2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

15

Ruby 1.9.1：処理速度
y VMの導⼊による速度向上→ 性能特性が変わりました

速くなることもあります（多いと思いたい）
遅くなることもありますy ネイティブスレッドの導⼊
y 並列実⾏はしません

y スレッドに関する性能特性の変更
y 拡張ライブラリの対応
2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

16

Ruby 1.9.1 の性能：メモリ消費量y 省メモリ化が進みました
y 標準クラスString, Array, Hashなど
y 性能よりもメモリ使⽤量削減に⼒をy GCがいろいろ改善されました

2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

17

まとめy Ruby 1.9.1 出るよ！
y 体制とか期待できるよ！

y Ruby 1.9.1 いろいろ便利！
y 便利な機能が期待できるよ！

y Ruby 1.9.1 の性能はいいよ！
y 性能向上が期待できるよ！

2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

18

おしまい
ご静聴ありがとうございました「Ruby 1.9.1 に期待できること」
東京⼤学⼤学院情報理⼯学系研究科創造情報学専攻（冬⼊試願書受付：2009年1⽉初旬）

講師 笹⽥耕⼀

sasada at ci.i.u-tokyo.ac.jp
⽇本Rubyの会 / るびま編集 / ⽇本Ruby会議実⾏委員
MRI コミッタ（VM担当）

ささだこういち

ko1 at atdot.net or ko1 at rvm.jp
2008/12/14

Ruby 1.9.1に期待できること @ 九州RubyKaigi01

19