Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ruby 2.0
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yukihiro Matsumoto
February 14, 2013
Programming
4.8k
24
Share
Ruby 2.0
「Ruby 2.0」@デブサミ2013
Yukihiro Matsumoto
February 14, 2013
More Decks by Yukihiro Matsumoto
See All by Yukihiro Matsumoto
Ruby 2.0 (en)
yukihiro_matz
40
4.5k
Reinventhing Wheels of Future
yukihiro_matz
55
5.6k
Other Decks in Programming
See All in Programming
10 Tips of AWS ~Gen AI on AWS~
licux
5
200
YJITとZJITにはイカなる違いがあるのか?
nakiym
0
180
AI時代のPhpStorm最新事情 #phpcon_odawara
yusuke
0
150
Vibe NLP for Applied NLP
inesmontani
PRO
0
240
2026-03-27 #terminalnight 変数展開とコマンド展開でターミナル作業をスマートにする方法
masasuzu
0
320
ハンズオンで学ぶクラウドネイティブ
tatsukiminami
0
110
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
240
[PHPerKaigi 2026]PHPerKaigi2025の企画CodeGolfが最高すぎて社内で内製して半年運営して得た内製と運営の知見
ikezoemakoto
0
340
Go_College_最終発表資料__外部公開用_.pdf
xe_pc23
0
160
年間50登壇、単著出版、雑誌寄稿、Podcast出演、YouTube、CM、カンファレンス主催……全部やってみたので面白さ等を比較してみよう / I’ve tried them all, so let’s compare how interesting they are.
nrslib
4
760
実践ハーネスエンジニアリング #MOSHTech
kajitack
7
6.1k
의존성 주입과 모듈화
fornewid
0
120
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
28
2.5k
Darren the Foodie - Storyboard
khoart
PRO
3
3.2k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
A Modern Web Designer's Workflow
chriscoyier
698
190k
GitHub's CSS Performance
jonrohan
1032
470k
How STYLIGHT went responsive
nonsquared
100
6k
What's in a price? How to price your products and services
michaelherold
247
13k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
Prompt Engineering for Job Search
mfonobong
0
260
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
260
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
110
Transcript
Powered by Rabbit 1.0.4 Ruby 2.0 Rubyアソシエーション 理事長 Heroku, Chief
Architect, Ruby @yukihiro_matz Yukihiro "Matz" Matsumoto
Powered by Rabbit 1.0.4 2013年 1/97
Powered by Rabbit 1.0.4 1993年 2/97
Powered by Rabbit 1.0.4 1993年2月 Ruby開発開始 3/97
Powered by Rabbit 1.0.4 1995年12月 公開(0.95) 4/97
Powered by Rabbit 1.0.4 1996年12月 1.0 1997年08月 1.1 1998年12月
1.2 1999年08月 1.4 2000年09月 1.6 5/97
Powered by Rabbit 1.0.4 2003年08月 1.8 2007年12月 1.9.0 2010年08月
1.9.2 2011年10月 1.9.3 6/97
Powered by Rabbit 1.0.4 by courtesy of @a_matsuda 7/97
Powered by Rabbit 1.0.4 by courtesy of @a_matsuda 8/97
Powered by Rabbit 1.0.4 とうとうやってきた2.0 9/97
Powered by Rabbit 1.0.4 RubyConf2001 10/97
Powered by Rabbit 1.0.4 RubyConf2001 Ruby2に言及 11/97
Powered by Rabbit 1.0.4 RubyConf2001 新VM 新GC ネイティブスレッド 埋込API 12/97
Powered by Rabbit 1.0.4 RubyConf2001 心理的壁にも言及 13/97
Powered by Rabbit 1.0.4 RubyConf2001 新VM 新GC ネイティブスレッド 埋込API 14/97
Powered by Rabbit 1.0.4 RubyConf2001 コア実装の置き換え 15/97
Powered by Rabbit 1.0.4 RubyConf2001 Ruby1.9で実現 16/97
Powered by Rabbit 1.0.4 新VM YARV 17/97
Powered by Rabbit 1.0.4 新GC 世代別GC 18/97
Powered by Rabbit 1.0.4 新GC 性能低下のため不採用 19/97
Powered by Rabbit 1.0.4 新GC Ruby1.9でLazy Sweep 20/97
Powered by Rabbit 1.0.4 新GC Ruby2.0でbitmap marking 21/97
Powered by Rabbit 1.0.4 ネイティブスレッド 1.8はグリーンスレッド 22/97
Powered by Rabbit 1.0.4 ネイティブスレッド 1.9はネイティブスレッド 23/97
Powered by Rabbit 1.0.4 ネイティブスレッド GIL 24/97
Powered by Rabbit 1.0.4 GIL Giant Interpreter Lock 25/97
Powered by Rabbit 1.0.4 GIL 妥協点 26/97
Powered by Rabbit 1.0.4 埋込API 互換性重視のため不採用 27/97
Powered by Rabbit 1.0.4 2001年のRuby2 28/97
Powered by Rabbit 1.0.4 2007年のRuby1.9 29/97
Powered by Rabbit 1.0.4 現代のRuby2.0の起源 30/97
Powered by Rabbit 1.0.4 RubyConf2003 31/97
Powered by Rabbit 1.0.4 RubyConf2003 キーワード引数 新ハッシュリテラル メソッドコンビネーション セレクターネームスペース 32/97
Powered by Rabbit 1.0.4 遅れてきた2.0 33/97
Powered by Rabbit 1.0.4 RubyConf2001 心理的壁に言及 34/97
Powered by Rabbit 1.0.4 壁を乗り越える原因 35/97
Powered by Rabbit 1.0.4 心理的側面 20周年記念 36/97
Powered by Rabbit 1.0.4 心理的側面 Anniversary Driven Development 37/97
Powered by Rabbit 1.0.4 心理的側面 ADD 38/97
Powered by Rabbit 1.0.4 機能的側面 キーワード引数 (2.0) メソッドコンビネーション (2.0) セレクターネームスペース
(2.0) 39/97
Powered by Rabbit 1.0.4 2.0の新機能 40/97
Powered by Rabbit 1.0.4 2.0の新機能 キーワード引数 Module#prepend Enumerable#lazy Refinements 41/97
Powered by Rabbit 1.0.4 2.0の新機能 デフォルトUTF-8 Dtrace TracePoint Performance 42/97
Powered by Rabbit 1.0.4 キーワード引数 名前付きオプショナル引数 順序不定 記述性 記憶想起 43/97
Powered by Rabbit 1.0.4 キーワード引数 def downto(from, to, step: 1)
... end downto(10, 0, step:2) do|i| p i end 44/97
Powered by Rabbit 1.0.4 キーワード引数 APIの柔軟性 ドキュメント化 読みやすさ 覚えやすさ 45/97
Powered by Rabbit 1.0.4 Module#prepend メソッドコンビネーション 既存のクラスの修飾 alias method chain
46/97
Powered by Rabbit 1.0.4 alias method chain alias(別名)によって定義を連鎖 Railsで多用される 既存メソッドの拡張
47/97
Powered by Rabbit 1.0.4 alias method chainの欠点 名前衝突の危険性 名前管理 修飾のグループ化が困難
48/97
Powered by Rabbit 1.0.4 メソッドコンビネーション CLOS(CommonLisp Object System) メソッドを拡張する仕組み MOP
49/97
Powered by Rabbit 1.0.4 メソッドコンビネーション beforeフック afterフック aroundフック 50/97
Powered by Rabbit 1.0.4 メソッドコンビネーション Rubyにはオーバースペック 51/97
Powered by Rabbit 1.0.4 Module#prepend 単純化メソッドコンビネーション 52/97
Powered by Rabbit 1.0.4 Module#prepend prepend includeは後ろに追加 prependは前に追加 既存のメソッドをラップ 53/97
Powered by Rabbit 1.0.4 Module#prepend class Foo def foo; p
:foo; end end module Prepend def foo p :before super p :after end end class Foo prepend Prepend end Foo.new.foo 54/97
Powered by Rabbit 1.0.4 prepend vs chain 名称重複問題 グループ化問題 55/97
Powered by Rabbit 1.0.4 Refinements 既存クラスの拡張 56/97
Powered by Rabbit 1.0.4 既存クラスの拡張 メソッドの追加 メソッドのラップ 57/97
Powered by Rabbit 1.0.4 既存クラスの拡張 オープンクラス クラス再定義 mathn, jcode 58/97
Powered by Rabbit 1.0.4 既存クラスの拡張 スコープ問題 59/97
Powered by Rabbit 1.0.4 Refinements スコープ限定のオープンクラス 60/97
Powered by Rabbit 1.0.4 Refinements module R refine String do
def foo ... end end end "".foo # => error! using R "".foo 61/97
Powered by Rabbit 1.0.4 既存クラス拡張の試み Selector namespace (Smallscript) Classbox (Smalltalk/Java)
拡張メソッド (C#) プロファイル (Classic) 62/97
Powered by Rabbit 1.0.4 Selector namespace 「メッセージ」の多重化 挙動が難しい Smallscriptが入手困難 63/97
Powered by Rabbit 1.0.4 Classbox 既存のクラスを置き換える 例:GUIのルック・アンド・フィール 変更 ローカルリバインディング 64/97
Powered by Rabbit 1.0.4 ローカルリバインディング スコープ問題 動的スコープ 変更の影響範囲が大きい 65/97
Powered by Rabbit 1.0.4 拡張メソッド メソッドの追加しかできない Scalaも同様? 66/97
Powered by Rabbit 1.0.4 プロファイル ひとつの構造体に複数のインタフ ェース 「プロファイル」 相互に代入可能 67/97
Powered by Rabbit 1.0.4 プロファイル 静的型言語向け 24年前のアイディア 他に見かけない 68/97
Powered by Rabbit 1.0.4 Enumerable#lazy 遅延評価 69/97
Powered by Rabbit 1.0.4 Enumerable#lazy 関数型(?)プログラミング 70/97
Powered by Rabbit 1.0.4 Enumerable#lazy 関数型ワナビー 71/97
Powered by Rabbit 1.0.4 関数型ワナビー イミュータブルデータ パターンマッチ 遅延評価 関数組立 72/97
Powered by Rabbit 1.0.4 関数組立 ほぼメソッドチェーン 73/97
Powered by Rabbit 1.0.4 メソッドチェーン (1..Float::INFINITY).map {|i| i.to_s }.select{|s| /3/
=== s }.first(5) 74/97
Powered by Rabbit 1.0.4 メソッドチェーン 動かない 75/97
Powered by Rabbit 1.0.4 メソッドチェーン 遅延評価さえあれば... 76/97
Powered by Rabbit 1.0.4 遅延評価 遅延評価するバージョンのメソッド 77/97
Powered by Rabbit 1.0.4 遅延評価 map_lz, select_lz 78/97
Powered by Rabbit 1.0.4 メソッドチェーン (1..Float::INFINITY).map_lz {|i| i.to_s }.select_lz{|s| /3/
=== s }.first(5) 79/97
Powered by Rabbit 1.0.4 遅延評価 遅延(lazy)を求めるものはlazy(怠惰) である 80/97
Powered by Rabbit 1.0.4 Enumerable#lazy (1..Float::INFINITY).lazy.map {|i| i.to_s }.select{|s| /3/
=== s }.first(5) 81/97
Powered by Rabbit 1.0.4 Enumerable#lazy ナイスアイディア 82/97
Powered by Rabbit 1.0.4 Enumerable#lazy 中身はいろいろ大変 83/97
Powered by Rabbit 1.0.4 デフォルトUTF-8 Unicode浸透 84/97
Powered by Rabbit 1.0.4 デフォルトUTF-8 普通にUTF-8 85/97
Powered by Rabbit 1.0.4 Dtrace/TracePoint デバッグ強化 86/97
Powered by Rabbit 1.0.4 Performance 高速化 87/97
Powered by Rabbit 1.0.4 高速化 VM GC require 88/97
Powered by Rabbit 1.0.4 Ruby 2.0 89/97
Powered by Rabbit 1.0.4 Ruby 2.0 2013年2月24日リリース予定 90/97
Powered by Rabbit 1.0.4 Ruby 2.0 乞御期待 91/97
Powered by Rabbit 1.0.4 Ruby 2.0以後 言語としてはほぼ完成 92/97
Powered by Rabbit 1.0.4 Ruby 2.0以後 Ruby言語の限界 93/97
Powered by Rabbit 1.0.4 Ruby 2.0以後 性能改善 94/97
Powered by Rabbit 1.0.4 Ruby 2.0以後 適用分野拡大 95/97
Powered by Rabbit 1.0.4 Ruby 2.0以後 マルチコア? 96/97
Powered by Rabbit 1.0.4 Ruby 2.0以後 アクター? 97/97