Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Ruby 2.0
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yukihiro Matsumoto
February 14, 2013
Programming
4.9k
24
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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.6k
Reinventhing Wheels of Future
yukihiro_matz
55
5.7k
Other Decks in Programming
See All in Programming
JIS keyboard support in Omarchy
lef237
0
180
複数ドメインを一つのアプリに統合するFlutterの設計と運用_FlutterKaigi2026登壇資料(須永高弘)
takahirosunaga
0
140
Python Lambdaにおけるテストしやすい設計とAI支援の活用 / Designing Testable Python Lambda Functions with AI
kitano_yuichi
1
290
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
4
1.8k
Engineering Biometric UX Across Android Versions | DroidKnights 2026
ryunen344
1
170
[DroidKnights 2026] Workflow AX: From Auto-Documented Policies to E2E Testing
raeminkang
0
510
小さなアプリを作って公開するまで
onozaty
0
110
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
340
Spec-driven Development with AI
simas
PRO
0
2.2k
Performance Optimization With LLMs
xleitix
0
240
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
220
SODA - FACT BOOK(JP)
sodainc
1
40k
Featured
See All Featured
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
300
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
A better future with KSS
kneath
240
18k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
1k
WENDY [Excerpt]
tessaabrams
14
40k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
320
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
330
It's Worth the Effort
3n
188
29k
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