Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Yuki Teraoka
PDF, PPTX
2,999 views
Ruby2.0 Getting Started
Ruby2.0の新機能やパフォーマンスなどの変更点をまとめました。
Technology
◦
Read more
5
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 38
2
/ 38
3
/ 38
4
/ 38
5
/ 38
6
/ 38
7
/ 38
8
/ 38
9
/ 38
10
/ 38
11
/ 38
12
/ 38
13
/ 38
14
/ 38
15
/ 38
16
/ 38
17
/ 38
18
/ 38
19
/ 38
20
/ 38
21
/ 38
22
/ 38
23
/ 38
24
/ 38
25
/ 38
26
/ 38
27
/ 38
28
/ 38
29
/ 38
30
/ 38
31
/ 38
32
/ 38
33
/ 38
34
/ 38
35
/ 38
36
/ 38
37
/ 38
38
/ 38
More Related Content
PPTX
わんくま東京#46 予告編
by
Sunao Tomita
PDF
20161004 DMM/エウレカ/インテリジェンス合同勉強会
by
Yusuke Komatsu
PDF
Pentaho ETL@DevLOVE関西
by
Hirokazu Tokuno
PPTX
Natura
by
Nadia61
PPT
Jilbab bagi-muslimah2
by
Anisa Muliawati
PPTX
Better workplace + happier lives - Sara Redman & Associates - specialists in ...
by
Toby P. Newstead
PPTX
Podcast
by
grupouro
PPT
Meta
by
METAADM
わんくま東京#46 予告編
by
Sunao Tomita
20161004 DMM/エウレカ/インテリジェンス合同勉強会
by
Yusuke Komatsu
Pentaho ETL@DevLOVE関西
by
Hirokazu Tokuno
Natura
by
Nadia61
Jilbab bagi-muslimah2
by
Anisa Muliawati
Better workplace + happier lives - Sara Redman & Associates - specialists in ...
by
Toby P. Newstead
Podcast
by
grupouro
Meta
by
METAADM
Similar to Ruby2.0 Getting Started
PDF
マニアックなRuby 2.7新機能紹介
by
mametter
PDF
怠惰なRubyistへの道 fukuoka rubykaigi01
by
nagachika t
PDF
Ruby 2.5
by
Masahiro Tomita
PDF
Ruby2.0について
by
Shinichirou Nakamura
PDF
怠惰なRubyistへの道
by
nagachika t
PDF
Tottoruby 20130119
by
Takashi SAKAGUCHI
PDF
Ruby2.0 - refinements - 鳥取Ruby会 第11回
by
Rie HIRONO
PDF
本番環境で使える実行コード記録機能
by
mametter
PDF
Ruby 2.6 Update
by
Kazuhiro Nishiyama
PDF
Ruby 3の型推論やってます
by
mametter
PDF
Ruby でつくる型付き Ruby
by
mametter
PDF
Language update 2018 - ruby
by
Kazuhiro Nishiyama
ODP
Rubyのコードを読んでみよう(オブジェクト編)
by
baban ba-n
PDF
Enumerable lazy について
by
Tomoya Kawanishi
PDF
nomlab_okayamaruby_slide
by
nomlab
PDF
名古屋Ruby会議02 LT:Ruby中級への道
by
Shigeru UCHIYAMA
PDF
シュッとふりかえる Ruby 2.0 以降
by
Tomohiro Nishimura
PDF
Ruby on Rails 入門
by
Yasuko Ohba
PDF
Ruby&Active Support for expert 3
by
xibbar
PDF
Meta programing ruby monday
by
Yuisho Takafuji
マニアックなRuby 2.7新機能紹介
by
mametter
怠惰なRubyistへの道 fukuoka rubykaigi01
by
nagachika t
Ruby 2.5
by
Masahiro Tomita
Ruby2.0について
by
Shinichirou Nakamura
怠惰なRubyistへの道
by
nagachika t
Tottoruby 20130119
by
Takashi SAKAGUCHI
Ruby2.0 - refinements - 鳥取Ruby会 第11回
by
Rie HIRONO
本番環境で使える実行コード記録機能
by
mametter
Ruby 2.6 Update
by
Kazuhiro Nishiyama
Ruby 3の型推論やってます
by
mametter
Ruby でつくる型付き Ruby
by
mametter
Language update 2018 - ruby
by
Kazuhiro Nishiyama
Rubyのコードを読んでみよう(オブジェクト編)
by
baban ba-n
Enumerable lazy について
by
Tomoya Kawanishi
nomlab_okayamaruby_slide
by
nomlab
名古屋Ruby会議02 LT:Ruby中級への道
by
Shigeru UCHIYAMA
シュッとふりかえる Ruby 2.0 以降
by
Tomohiro Nishimura
Ruby on Rails 入門
by
Yasuko Ohba
Ruby&Active Support for expert 3
by
xibbar
Meta programing ruby monday
by
Yuisho Takafuji
Ruby2.0 Getting Started
1.
Ruby2.0 Getting Started
Ruby2.0をはじめよう!
2.
• Ruby2.0について • 新機能紹介 •
非互換性 • パフォーマンス Agenda
3.
About Ruby2.0
Ruby2.0について About Ruby2.0
4.
•
2013年2月24日にリリース( Ruby20歳の誕生日! ) • Ruby1.9との高い互換性 • 数多くの新機能 • パフォーマンスの向上 • 2.0.0は「安定版」リリース • 「Rubyは言語として2.0でほぼ完成」by matz About Ruby2.0
5.
Future
新機能紹介 Future
6.
•
キーワード引数 • Enumerable#lazy • Module#prepend • シンボルリストリテラル • Refinments • その他 Future
7.
Keyword Arguments
キーワード引数 Keyword Arguments Future
8.
~1.9でも実現可能 def hello(options =
{}) # デフォルト値を適用 options = {name: "guest"}.merge(options) puts "Hello #{options[:name]}!!" end hello #=> Hello guest!! hello(name: "taro") #=> Hello taro!! Keyword Arguments Future
9.
2.0ではこうなる def hello(name: "guest")
puts "Hello #{name}!!" end hello #=> Hello guest!! hello(name: "taro") #=> Hello taro!! Keyword Arguments Future
10.
シンプルに書けるようになった! # Ruby1.9 def hello(options
= {}) options = {name: "guest"}.merge(options) puts "Hello #{options[:name]}!!" end # Ruby2.0 def hello(name: "guest") puts "Hello #{name}!!" end Keyword Arguments Future
11.
引数の存在チェックもしてくれる def hello(name: "guest")
puts "Hello #{name}!!" end hello(nama: "jiro") #=> ArgumentError: unknown keyword: nama Keyword Arguments Future
12.
**で残りのHashを受け取れる def hello(name: "guest",
**options) msg = "Hello #{name}!!" msg.upcase! if options[:upcase] puts msg end hello(name: "hanako") #=> Hello hanako!! hello(name: "hanako", upcase: true) #=> HELLO HANAKO!! Keyword Arguments Future
13.
最後の引数がHashのメソッドは注意 def foo(somehash, option:
1) # do something... end # 引数の最後がHashの場合、キーワードだと判断される hash_arg = {name: "guest"} foo(hash_arg) #=> ArgumentError: unknown keyword: name # オプションとして空のHashを指定することで回避可能 foo(hash_arg, {}) Keyword Arguments Future
14.
積極的に使うべき!! • オプションパラメータを受けるメソッドがシンプル
に実装できる • 引数の存在チェックもしてくれる • 引数の最後にHashを受ける場合は使わない Keyword Arguments Future
15.
Enumerable#lazy
遅延評価イテレータ Enumerable#lazy Future
16.
Enumerable#lazyって? •
遅延評価を行うEnumeratorを返すメソッド • 遅延評価=必要とされるまで評価(実行)しない • selectやmapの利用範囲が広がる • 巨大なリストの処理が省メモリに Enumerable#lazy Future
17.
1~1億の奇数を5個取り出してみる # lazy不使用:なかなか結果が返ってこない (1..100000000).select{|num| num.odd?}.take(5) #=>
[1, 3, 5, 7, 9] # lazy使用:すぐに結果が返ってくる (1..100000000).lazy.select{|num| num.odd?}.take(5).force #=> [1, 3, 5, 7, 9] Enumerable#lazy Future
18.
Enumerable#lazyの使い道 •
IO・Range・巨大な配列を省メモリに処理 • 無限リストでselectやmapを使う • Railsアプリでは使い所は少ないかも • 続きはWEBで http://www.techscore.com/tech/Ruby/ruby-2.0/lazy/ Enumerable#lazy Future
19.
Module#prepend モジュールによるオーバーライド Module#prepend
Future
20.
Module#prependって? • Module#includeの親戚 • includeは自クラスと親クラスの間にモジュールを
挿入 • prependは自クラスの手前にモジュールを追加 • 対象クラスのメソッドをオーバーライド可能に Module#prepend Future
21.
prependとincludeの比較 - 1 module
IM def hoge; puts "IM#hoge"; end end module PM def hoge; puts "PM#hoge"; super; end end class C include IM prepend PM def hoge; puts " C#hoge"; super; end end Module#prepend Future
22.
prependとincludeの比較 - 2 #
ancestorsで継承階層を表示する C.ancestors #=> [PM, C, IM, Object, Kernel, BasicObject] obj = C.new obj.hoge # PM#hoge # C#hoge # IM#hoge Module#prepend Future
23.
Module#prependの使い道 • 構造化された再利用可能なモンキーパッチ • alias_method_chain(ActiveSupport)の撲滅 •
RailsやActiveRecordなど、既存のライブラリを拡 張するライブラリを制作する時に便利! Module#prepend Future
24.
Symbol list literal
シンボルリストリテラル Symbol list literal Future
25.
%i %I でシンボルの配列に。便利!! #
普通に配列リテラルで書く [:hoge, :fuga, :piyo] #=>[:hoge, :fuga, :piyo] # %wしてmapする %w(hoge fuga piyo).map(&:intern) #=>[:hoge, :fuga, :piyo] # シンボルリストリテラル - %i (式展開なし) %i(hoge fuga piyo) #=>[:hoge, :fuga, :piyo] # シンボルリストリテラル - %I (式展開あり) %I(a#{1+1} a#{1+2}) #=>[:a2, :a3] Symbol list literal Future
26.
Refinements
局所的なメソッド再定義 Refinements Future
27.
Refinementsって? • 局所的に特定のクラスのメソッドを変更する仕組 • Ruby2.0の目玉機能になる筈だった •
例)ActiveRecord+Refinments # gem activerecord-refinements # 以下はUser.where(name: "matz")と同じ User.where{:name == "matz"} Refinements Future
28.
しかし… • 残念ながら大幅に機能削減された挙句、
experimental(実験的)機能になってしまった • 本来の想定どおりに実装されるとDSLの可能性 が大きく広がる • 2013年クリスマス頃に予定されているRuby2.1に 大いに期待!! Refinements Future
29.
Others
その他の新機能 Others Future
30.
• デフォルトの文字コードがUTF-8に
(マジックコメントが不要になる) • __dir__メソッド (実行中ファイルのディレクトリパス) • to_hメソッド( Hashへの型変換) • Enumerable#size(遅延サイズ評価) • 正規表現エンジンの変更(鬼車 → 鬼雲) • TracePointやDtraceによるデバッグ機能の強化 Others Future
31.
Incompatibility
非互換性 Incompatibility
32.
1.9 ~ 2.0の非互換性 •
iconvの削除(Ruby1.9で既に非推奨) • IO#lines, #chars, #codepoints, #bytesが Enumeratorではなく配列を返すようになった • Object#inspect が#to_s を呼び出さなくなった • デフォルトのエンコーディングがUTF-8に • ABI互換性がなくなった (1.9の.soや.bundleを共用してはいけない) Incompatibility
33.
Performance
パフォーマンス Performance
34.
最適化によるパフォーマンス向上 •
bitmap marking による GC 最適化 • メソッドディスパッチなどの VM 最適化 • 浮動小数演算の最適化 • Kernel#require の最適化 Performance
35.
ベンチマーク1 - 浮動小数点演算 require
'benchmark' puts RUBY_VERSION puts Benchmark::CAPTION puts Benchmark.measure {100000000.times{|i| 1.0 * i}} user system total real 1.8.7 | 2.040000 0.000000 2.040000 ( 2.086681) 1.9.3 | 1.120000 0.000000 1.120000 ( 1.161166) 2.0.0 | 0.720000 0.000000 0.720000 ( 0.724945) Performance
36.
ベンチマーク2 – Rails起動速度 time
RAILS_ENV=production rails runner "" user system real 1.9.3 | 0m4.104s 0m0.356s 0m4.620s 2.0.0 | 0m2.154s 0m0.365s 0m2.594s Performance
37.
Conclusion
まとめ Conclusion
38.
Ruby2.0の魅力 • 魅力的な新機能 •
キーワード引数・lazy・prependなど • 1.9との高い互換性 • 殆どのコードが変更なしで動作する • パフォーマンスの向上 • 処理速度の向上 • Railsの起動速度大幅に向上 Conclusion
Download