$30 off During Our Annual Pro Sale. View Details »

Ruby history of my life

sugamasao
October 21, 2020

Ruby history of my life

「集え、Rubyist ~著名Rubyistから学ぼう~ iCARE Dev Meetup #14」
での登壇資料です
https://icare.connpass.com/event/189356/

sugamasao

October 21, 2020
Tweet

More Decks by sugamasao

Other Decks in Technology

Transcript

  1. Rubyͷ
    ͍··Ͱͱ͜Ε͔Β
    sugamasao
    [email protected]
    iCARE Dev Meetup #14(2020/10/21)

    View Slide

  2. Rubyͷ
    ͍··Ͱͱ͜Ε͔Β
    RubyͰϫΫϫΫ͠
    ͖ͯͨ࿩Λ͠·͢

    View Slide

  3. ※ݸਓͷײ૝

    View Slide

  4. HN:sugamasao
    PN:͕͢ΘΒ ·͞ͷΓ
    Rubyྺ : 14೥͘Β͍
    Railsྺ : 10೥͘Β͍
    • ຊۀ
    • WebΞϓϦέʔγϣϯϓϩάϥϚʔ
    ʢגࣜձࣾSmartHRʣ
    • झຯ
    • Rubyʹؔ͢Δॻ੶ͷࣥච׆ಈ
    ͩΕʁ

    View Slide

  5. झຯͷ׆ಈ
    ྦྷܭ5࡭ʢ2࡭͸վగ൛͋Γʣ

    View Slide

  6. Ruby
    ָ͠ΜͰ·͔͢ʁ

    View Slide

  7. ָ͠͞ʁ

    View Slide

  8. ॻ͖ຯ
    ΤίγεςϜ
    ίϛϡχςΟ
    ਓͷ਺ָ͚ͩ͠Έํ͸͋Γ·͢Ͷ

    View Slide

  9. ਓͧΕͧΕ
    ͍Ζ͍Ζ͋Δ

    View Slide

  10. ʢࢲ͸ʣ
    ৽͍͠όʔδϣϯʹ௥
    Ճ͞ΕͨػೳΛݟΔͱ
    ڵฃͯ͠͠·͏

    View Slide

  11. ⚠⚠⚠
    ͔͜͜Βઌ͸ಠࣗݚڀɾ
    ಠࣗղऍͰ͢
    ⚠⚠⚠

    View Slide

  12. Rubyͷͬ͘͟Γͨ͠όʔδϣϯͷ
    ྺ࢙
    1.0
    1996 2000
    1.6
    2005
    1.8.4
    2010
    1.9.2
    2015 2020
    2.3.0 3.0.0
    ※Rubyͷ”࢝·Γ”Λ͍͔ͭΒͱଊ͑Δ͔͸ॾઆ͋Γ·͢

    View Slide

  13. 1996ʙ2004͘Β͍
    1.0
    1996 2000
    1.6
    2005
    1.8.4
    2010
    1.9.2
    2015 2020
    2.3.0 3.0.0

    View Slide

  14. ͝ΊΜͳ͍͞ɺ͋·Γ
    ஌Βͳ͍Ͱ͢

    View Slide

  15. 1996ʙ2004͘Β͍
    1.0
    1996 2000
    1.6
    1998
    1.2
    1999
    1.4
    2004
    1.8.2
    2003
    1.8.0
    ʙ
    C MagazineͰ࿈ࡌ

    RubyGemsҎલɺϥΠϒϥϦͳͲ͸RAAͱ͍͏
    αΠτʹࡌͤΔ/ࡌͬͯΔͷΛ୳࣌͢୅ͩͬͨΑ͏ͳʢهԱũƄūŘʣ



    RubyGemsެ։

    View Slide

  16. 2005ʙ2009͘Β͍
    1.0
    1996 2000
    1.6
    2010
    1.9.2
    2015 2020
    2.3.0 3.0.0
    2005
    1.8.4

    View Slide

  17. 2005ʙ2009͘Β͍
    2005
    1.8.4
    2009
    2007
    1.9.0 1.9.1
    Ruby 1.8·Ͱ͸1.X͕ۮ਺ = ҆ఆ൛ͱ͍͏Ґஔ͚ͮ
    3VCZͷόʔδϣϯʹ͍ͭͯ
    Ruby 1.9.0͸։ൃ൛
    Ruby 1.9.1͸ࢸߴͷ2.0.0΁޲͚ͯͷ҆ఆ൛
    2008
    1.8.4
    2005
    1.8.7
    2007
    1.8.6
    2007
    1.8.5

    View Slide

  18. 2005ʙ2009͘Β͍
    2005
    1.8.4

    Rails 1.0ϦϦʔε
    2009
    2007
    1.9.0 1.9.1

    Rails 2.0ϦϦʔε(RESTfulϕʔεʹ)

    Rails 2.3ϦϦʔε(Rackϕʔεʹ)

    ೔ຊRubyΧϯϑΝϨϯε
    ʢͷͪͷ೔ຊRubyձٞʣ
    ։࠵
    Rubyͷιʔείʔυ͕SVN؅ཧʹ

    Rails Conf 2006։࠵

    View Slide

  19. Ruby 1.8ʙ1.9໰୊
    Ruby 1.8ͱ1.9ʢ㲈2.0Ҏ߱ʣ͸େ͖ͳมԽ͕͋Γ·ͨ͠
    • YARVͱݺ͹Ε͍ͯͨRubyͷιʔείʔυΛ
    όΠτίʔυʹม׵࣮ͯ͠ߦ͢ΔVMΛ౥ࡌ
    • จࣈྻͷଟݴޠԽʢM17NʣରԠ
    • R.I.P $KCODE
    • จࣈྻͷѻ͍ํ͸େ͖͘มΘΓɺASCIIҎ֎ͷ
    ΤϯίʔσΟϯάΛ࢖͏৔߹͸Ϛδίϝඞਢ
    • ࡉ͔͍ߏจղऍͷมߋ
    • RubyGems/Rake͕ඪ४ఴ෇ʹ

    View Slide

  20. Ruby 1.8ʙ1.9໰୊
    • VMͷ౥ࡌʢ଎͘ͳͬͨʂʣ΍RubyGemsͷඪ४
    ఴ෇ʹΑΔศར͞
    • ΤϯίʔσΟϯάͷѻ͍΍ߏจͷඍົͳඇޓ׵ʹ
    ΑΓʮRubyͬͯόʔδϣϯ͋͛Δͱ͙͢յΕΔ
    ͶʯΈ͍ͨͳΠϝʔδΛ΋ͨΕͨΓ
    ※ͪͳΈʹɺObjectSpace΍ripper΋1.9͔Β
    ಋೖɾಉࠝ͞ΕΔΑ͏ʹͳΓ·ͨ͠

    View Slide

  21. 2010ʙ2014͘Β͍
    1.0
    1996 2000
    1.6
    2015 2020
    2.3.0 3.0.0
    2005
    1.8.4
    2010
    1.9.2
    ݸਓͷײ૝ɿ͜͜Βล͔ΒRubyΛ࢓ࣄͰ࢖͏ձ͕ࣾ૿͖͑ͯͨ

    View Slide

  22. 2010ʙ2014͘Β͍
    2010
    1.9.2
    2014
    2.2.0
    2013/12
    2.1.0
    2013/2
    2.0.0
    2011
    1.9.3

    Rails 3.0ϦϦʔε
    Merbͱ౷߹͞Εͨ……!!
    Bundlerͷಋೖ

    Rails 3.1ϦϦʔε
    AssetPipelineͷಋೖ
    CoffeeScriptͷ࣌୅ʢJS͸ίϯύΠϧ͢Ε͹ྑ͍ͱ͍͏ੈք؍ʣ
    “The Final RubyKaigi”
    ARelͷಋೖ

    reboot “RubyKaigi”


    Rails 3.2ϦϦʔε

    Rails 4.0ϦϦʔε
    (Ruby 1.9, 2.0Ҏ͕߱
    λʔήοτʹ)
    Ruby 20प೥Πϕϯτ։࠵

    View Slide

  23. ͍ͭʹϦϦʔε͞ΕͨRuby 2.0
    • Ruby 1.9.1ʙ1.9.3Λܦͯ଴๬ͷ2.0
    • σϑΥϧτΤϯίʔσΟϯά͕UTF-8ʹͳͬͯ
    ʢଟ͘ͷ৔߹͸ʣϚδίϝෆཁʹ
    • ΈΜͳେ޷͖Refinements͕࣮ݧతػೳͱͯ͠ಋ

    • Karnel#requireͷੑೳվળͰRails͕ૣ͘ͳΔ
    • GCʹBitmapMarkingΛಋೖ(CoWͱͷ૬ੑ͕ྑ͘ͳͬͨ)
    • ϦϦʔεαΠΫϧ΍όʔδϣχϯάํ਑ͷมߋ

    View Slide

  24. 2015ʙ2019͘Β͍
    1.0
    1996 2000
    1.6
    2005
    1.8.4
    2010
    1.9.2
    2015 2020
    2.3.0 3.0.0
    ݸਓͷײ૝ɿ͜͜Βล͔ΒRubyϑϧλΠϜίϛολʔ৬͕ͪΒ΄Βʁ

    View Slide

  25. 2015ʙ2019͘Β͍
    2015
    2.3.0
    2019
    2.7.0
    2016 2017 2018
    2.4.0 2.5.0 2.6.0
    RubyKaigi͕
    ஍ํͰ։࠵͞ΕΔΑ͏ʹ

    ΦϯϥΠϯ։࠵ͷRubyKaigi

    APIϞʔυͷಋೖ
    Ruby 2.2.2Ҏ߱Λαϙʔτ

    Yarn/Webpackerαϙʔτ
    Rails 5.0ϦϦʔε Rails 5.1ϦϦʔε

    Rails 5.2ϦϦʔε

    Rails 6.0
    ϦϦʔε
    ※࠷ۙͷग़དྷࣄͳͷͰলུύRailsങͬͯ͘Ε!!!
    RubyϦϙδτϦ͕git΁

    View Slide

  26. Ruby 2.3ʙ2.7
    • 2.3.0
    • “Frozen String Literal”΍”&.”΍”did you mean”ͷಋೖ
    • 2.4.0
    • “binding.irb”ͰσόοάՄೳʹ
    • Hashͷߴ଎Խ
    • 2.5.0
    • ERB͕ΊͬͪΌૣ͘ͳΔ
    • ppͷࣗಈrequire

    View Slide

  27. Ruby 2.3ʙ2.7
    • 2.6.0
    • Jitͷ࣮ݧతಋೖ
    • Bundler͕σϑΥϧτgemͱͯ͠ಉࠝ͞ΕΔΑ͏ʹ
    • 2.7.0
    • irb͕relineʹΑΔ࣮૷ʹͳͬͯ͘͢͝ͳΔ
    • “ྩ࿨”ʹରԠ(UnicodeରԠ)
    • Pattern Matchingͷ࣮ݧతಋೖ
    • default gemsԽͷਪਐ
    • ΩʔϫʔυҾ਺ͷܯࠂൃੜʢ2.7.2Ͱ཈੍͞Εͨʣ

    View Slide

  28. Ruby 3.0
    1.0
    1996 2000
    1.6
    2005
    1.8.4
    2010
    1.9.2
    2015 2020
    2.3.0 3.0.0

    View Slide

  29. Ruby 3.0
    “ੑೳͷվળͱ
    ੜ࢈ੑͷվળ"
    Ruby Kaigi Takeout
    Matz KeynoteΑΓ

    View Slide

  30. Ruby 3.0
    • Fast
    • Concurrent
    • Correct
    ͘Θ͘͠͸Ruby Kaigi Takeout
    Matz KeynoteݟͯͶʢURL͸ࢀߟจݙʹࡌͤͯ·͢ʣ
    ʢଞʹ΋ͨ͘͞Μʂʣ

    View Slide

  31. Fast
    • JITίϯύΠϥͷಋೖ
    • GCͷվળ

    View Slide

  32. Concurrent
    • Async I/O Fiber
    • Ractor
    ϚϧνίΞ࣌୅ʹϦιʔεΛ༗ޮ׆༻͢Δ
    ͨΊʹ͸ฒߦ(CPU)࣮ߦͷखஈ͕ཉ͍͠

    View Slide

  33. Correct
    • RBS(Ruby Signature)
    • Type Profiler(RBS Generations)
    • Static Type Checker(Third-Party)
    ࣮ߦલʹෆ੔߹Λݕ஌Ͱ͖ΔΑ͏ʹ͢ΔͨΊͷ
    Static Type Checksػߏ
    ※TypeProfͱ͍͏໊લʹมΘΓ·ͨ͠

    View Slide

  34. (ຖ೥ࢮΜͰΔͬͯݴΘΕΔ͚Ͳ)
    ͜Ε͔Β΋RubyͰίʔυॻ͍͍ͯͧ͘ʂʂʂ̍

    View Slide

  35. ࢀߟจݙ
    - ΦϒδΣΫτࢦ޲εΫϦϓτݴޠ Ruby
    - https://www.amazon.co.jp/dp/4756132545
    - ϓϩάϥϛϯάRuby―ୡਓϓϩάϥϚʔΨΠυ
    - https://www.amazon.co.jp/dp/4894714531
    - Ruby ιʔείʔυ׬શղઆ
    - https://book.impress.co.jp/books/1721
    - ʮRuby on Rails 1.0ʯ͕ਖ਼ࣜϦϦʔε
    - https://www.itmedia.co.jp/enterprise/articles/0512/15/news098.html
    - “RESTful”ͳRuby on Rails 2.0ϦϦʔε
    - https://www.itmedia.co.jp/enterprise/articles/0712/11/news027.html
    - Rack౷߹ʮRuby on Rails 2.3ʯਖ਼ࣜ൛͕ϦϦʔε
    - https://mag.osdn.jp/09/03/18/0152252
    - rails 3.0
    - https://weblog.rubyonrails.org/2010/8/29/rails-3-0-it-s-done/
    - Ruby 20प೥
    - https://ruby20th.herokuapp.com/
    - Ruby 2.3.0
    - https://www.ruby-lang.org/ja/news/2015/12/25/ruby-2-3-0-released/
    - Ruby 2.4.0
    - https://www.ruby-lang.org/ja/news/2016/12/25/ruby-2-4-0-released/
    - Ruby 2.5.0
    - https://www.ruby-lang.org/ja/news/2017/12/25/ruby-2-5-0-released/
    - Ruby 2.6.0
    - https://www.ruby-lang.org/ja/news/2018/12/25/ruby-2-6-0-released/
    - Ruby 2.7.0
    - https://www.ruby-lang.org/ja/news/2019/12/25/ruby-2-7-0-released/
    - RubyKaigi Takeout Matz Keynote
    - https://www.youtube.com/watch?v=wVrJZReHlM8

    View Slide