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

Polishing on "Polished Ruby Programming" #kaigionrails / kaigionrails 2021

Shintaro Kakutani
October 22, 2021
3.9k

Polishing on "Polished Ruby Programming" #kaigionrails / kaigionrails 2021

Recorded Video: https://youtu.be/EJuKeX7k2rY

Ruby is Nice so We are Nice
https://speakerdeck.com/kakutani/ruby-is-nice-so-we-are-nice
https://youtu.be/NctyqVznddg, https://youtu.be/P7AunfXSOTQ

Polished Ruby Programming
https://www.packtpub.com/product/polished-ruby-programming/9781801072724

Jeremy Evans
https://github.com/jeremyevans
https://twitter.com/jeremyevans0

Lambda Note
https://www.lambdanote.com

n月刊ラムダノート 既刊5冊セット(電子書籍のみ) – 技術書出版と販売のラムダノート https://www.lambdanote.com/collections/frontpage/products/nmonthly-5set-2021-ebook

RubyでつくるRuby ゼロから学びなおすプログラミング言語入門(PDF版のみ) – 技術書出版と販売のラムダノート https://www.lambdanote.com/collections/frontpage/products/ruby-ruby-ebook

エクストリームプログラミング【委託】 - 達人出版会
https://tatsu-zine.com/books/extreme-programming

僕らはエクストリームプログラミングのかけら
https://speakerdeck.com/kakutani/xpmatsuri2019-keynote

Optimizing Partial Backtraces in Ruby 3 by Jeremy Evans - RubyKaigi Takeout 2021
https://rubykaigi.org/2021-takeout/presentations/jeremyevans0.html

Polished Ruby Programming (Amazon.com)
https://www.amazon.com/dp/1801072728

Polished Ruby Programming (Amazon.co.jp)
https://www.amazon.co.jp/dp/B093TH9P7C

Ruby Archaeology by Nick Schwaderer - RubyKaigi Takeout 2021
https://rubykaigi.org/2021-takeout/presentations/schwad4hd14.html
Ruby Archaeology
https://schwaderer-kaigi-2021.herokuapp.com/#33

前提知識が多い。すごくおおい → 最後にまとめて掲載

Rubyist Magazine 0028 号 巻頭言
https://magazine.rubyist.net/articles/0028/0028-ForeWord.html

ワタシハ ルビーカイギ チョットデキル / I can organize RubyKaigi a little
https://speakerdeck.com/kakutani/i-can-organize-rubykaigi-a-little

マッドマックス 怒りのデス・ロード (2015) - IMDb
https://www.imdb.com/title/tt1392190/

日本Rubyの会とは | 一般社団法人 日本Rubyの会
https://ruby-no-kai.org/

RubyKaigi Takeout 2021
https://rubykaigi.org/2021-takeout

RubyConf 2021
https://rubyconf.org/

Rubyにとって決定的に足りないものは何だと思いますか?
https://qr.ae/pGVdZc

状況に埋め込まれた学習―正統的周辺参加 Jean Lave, Etienne Wenger
https://www.amazon.co.jp/dp/4782800843

Kaigi on Rails 2021
https://kaigionrails.org/2021/

FJORD BOOT CAMP(フィヨルドブートキャンプ)
https://bootcamp.fjord.jp/

Ginza Rails27 igaiga - Speaker Deck
https://speakerdeck.com/igaiga/ginza-rails27-igaiga?slide=9

Jeremy Evans on Twitter: "Weighing in at 434 pages, "Polished Ruby Programming" will be available for sale on July 9. Currently, it is the #1 New Release in Ruby Computer Programming! This would probably be more impressive if there was more than one new release. :) https://t.co/wFRn4yHbVC @PacktPub" / Twitter
https://twitter.com/jeremyevans0/status/1407513414646198279

Junya Ogura on Twitter: "池袋のジュンク堂、ついにPythonコーナーが独立した。 https://t.co/nAgaXMnBEz" / Twitter
https://twitter.com/junya/status/1437704432372781060

Amazon.co.jp: 角谷 信太郎:作品一覧、著者略歴 https://www.amazon.co.jp/%E8%A7%92%E8%B0%B7%E4%BF%A1%E5%A4%AA%E9%83%8E/e/B0051LA12K

Kakutani Shintaro on Twitter: "売れる本を書けば本は売れる(迫真" / Twitter https://twitter.com/kakutani/status/1382919795939549184

前提知識がおおい。すごくおおい:

WEB+DB PRESS総集編[Vol.1~120]
https://gihyo.jp/book/2021/978-4-297-12215-7

メタプログラミングRuby 第2版
https://www.oreilly.co.jp/books/9784873117430/

オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方
https://gihyo.jp/book/2016/978-4-7741-8361-9

リファクタリング 既存のコードを安全に改善する(第2版)
https://tatsu-zine.com/books/refactoring-2ed

テスト駆動開発
https://tatsu-zine.com/books/test-driven-development

実践テスト駆動開発 テストに導かれてオブジェクト指向ソフトウェアを育てる
https://www.shoeisha.co.jp/book/detail/9784798124582

Rubyのしくみ Ruby Under a Microscope
https://tatsu-zine.com/books/ruby-under-a-microscope-ja

Clean Architecture 達人に学ぶソフトウェアの構造と設計
https://tatsu-zine.com/books/clean-architecture

リーダブルコード
https://www.oreilly.co.jp/books/9784873115658/

Rubyソースコード完全解説(全文)
https://i.loveruby.net/ja/rhg/book/

Java言語で学ぶデザインパターン入門 第3版
https://www.hyuki.com/dp/

Specification by Example
https://www.manning.com/books/specification-by-example

The RSpec Book
https://www.shoeisha.co.jp/book/detail/9784798121932

The Well-Grounded Rubyist, Third Edition,
https://www.manning.com/books/the-well-grounded-rubyist-third-edition

Exceptional Ruby: Master the Art of Handling Failure in Ruby
https://pragprog.com/titles/ager/exceptional-ruby/

Ruby Performance Optimization: Why Ruby Is Slow, and How to Fix It https://pragprog.com/titles/adrpo/ruby-performance-optimization/

Rubyによるデザインパターン
https://www.amazon.co.jp/dp/4894712857

明解!Ruby―奥深いRubyの文化を身に付けるテクニック
https://www.amazon.co.jp/dp/4864011095

ドメイン特化言語 パターンで学ぶDSLのベストプラクティス46項目
https://www.amazon.co.jp/dp/4864010471

Shintaro Kakutani

October 22, 2021
Tweet

Transcript

  1. !LBLVUBOJ

    0DU LBJHJPOSBJMT
    POLISHING ON


    POLISHED RUBY

    PROGRAMMING

    View Slide

  2. ֯୩৴ଠ࿠
    @kakutani

    Rubyist-ist, Keeb zombie⌨🧟
    Ұࣾ
    ೔ຊ3VCZͷձཧࣄ
    ג
    Ӭ࿨γεςϜϚωδϝϯτސ໰

    ϑΟϤϧυϒʔτΩϟϯϓސ໰
    ϝΧχΧϧΩʔϘʔυεΠον५׈ऀ

    View Slide

  3. 3VCZJTUJTUͱ͸

    View Slide

  4. https://speakerdeck.com/kakutani/ruby-is-nice-so-we-are-nice
    📺IUUQTZPVUVCF/DUZR7[OEEH 📺IUUQTZPVUVCF1"VOG94052

    View Slide

  5. https://www.packtpub.com/product/polished-ruby-programming/9781801072724
    ݪஶͷిࢠॻ੶͸,JOEMFͰ΋ങ͑Δ͚Ͳɺ1BDLUͷ௚ൢͰങ͏ͱ
    %3.'SFFͷ1%'౳ΛೖखͰ͖Δ͔Β௚ൢ͕͓͢͢Ίͩκ😆📚

    View Slide

  6. +FSFNZ͸3VCZ$PNNJUUFSͰɺ3VCZ,BJHJͷ,FZOPUF4QFBLFSͰ͋ΓɺCVHTSVCZMBOHPSHͷνέο
    τΛ௚͠·ͬͯ͘3VCZ1SJ[FΛड৆͍ͯ͠ΔΑɻ$PNNJUUFSͱͯ͠͸৽͠Ίͷ3VCZJTU͚ͩͲɺ3VCZ,BJHJ
    ʹॳΊͯొஃͨ͠ͷ͸3VCZ,BJHJͱ͍͏ݹࢀͳͷͩɻ4FRVFM΍3PEBͳͲΛ΋Γ΋Γϝϯςφϯε͍ͯ͠ΔΑ

    View Slide

  7. Lambda Note

    View Slide

  8. ʰݚᮎ3VCZϓϩάϥϛϯάʱ
    Ծ


    ࢮܐࣥߦத
    ຋༁ਐߦத
    ೥ཅय़ ༧ఆ

    ֯୩৴ଠ࿠༁ϥϜμϊʔτࣾץο
    ೥݄ిॻЌ൛ൢച։࢝ر๬ ر๬


    ϖʔδ<্࢙࠷ް>͋ΔͷͰ࣌ؒΛ͍ͩ͘͞ʜ

    View Slide

  9. https://www.lambdanote.com/collections/frontpage/products/ruby-ruby-ebook

    View Slide

  10. ⁋ຊ͞ΜͷʮύλʔϯϚονJO3VCZʯ ݱঢ়ͱ͸গ͠࢓༷͸มΘ͍ͬͯΔ͚Ͳlͳͥz͕ॻ͔Ε͍ͯΔ͔ΒλΠϜϨε
    ͩ
    ΍ɺ֏͞ΜͷʮE3VCZͰָ͠Ή෼ࢄΦϒδΣΫτʯɺNBNFUUFSͷʮʰίϧʔνϯʱͱ͸Կͩͬͨͷ͔ʁʯʮʰܧ
    ଓʱͷͻΈͭʯͱ͍ͬͨ3VCZJTUͷدߘ΍ͳΜ͔೉͠Ίιϑτ΢ΣΞ͕ΒΈͷ࿩͕ͨ͘͞ΜಡΊ͓ͯಘR
    https://www.lambdanote.com/collections/frontpage/products/nmonthly-5set-2021-ebook

    View Slide

  11. ങͬͯ͘
    ΕR

    View Slide

  12. ໨త

    View Slide

  13. lզʑ͸ɺιϑτ΢ΣΞ։ൃʹ͓͍ͯ৽ͨͳࣾձߏ଄
    Λ࡞Γग़͠ɺͦͷͳ͔
    で
    ٕज़తͳߴΈͱ
    ビジ
    ωεͷ
    ビ
    ジ
    ϣϯΛ݁
    び
    ෇͚ɺಠࣗͷ
    バ
    ϦϡʔΛ࣋ͬͨ
    プ
    ϩ
    ダ
    Ϋ
    τ΍αʔ
    ビ
    εΛੜΈग़͢ػձΛ͍࣋ͬͯΔɻ

    ͜Ε
    が
    զʑͷڧΈ
    だ
    ɻ
    ɹ91ͷ੒ޭ͸ɺ৴པ
    で
    ͖Διϑτ΢ΣΞͷ͢
    ば
    ΍͍
    ݟੵΓɺ࣮૷ɺ
    デプ
    ϩΠ
    がで
    ͖Δ༏लͳ
    プ
    ϩ
    グ
    ϥϚʔ
    ͷ૿Ճʹ͔͔͍ͬͯΔɻ
    ڧௐ౳͸Ҿ༻ऀʹΑΔ

    View Slide

  14. https://speakerdeck.com/kakutani/xpmatsuri2019-keynote
    ͜Ε͸ߨԋͷͱ͖ͷഎܠը૾͔͠࢒ͬͯͳͯ͘͝ΊΜ΍Ͱʜ

    View Slide

  15. https://www.packtpub.com/product/polished-ruby-programming/9781801072724

    View Slide

  16. “This book is aimed at intermediate Ruby programmers
    and focuses on teaching principles of Ruby
    programming, as well as trade-offs to consider when
    making implementation decisions.
    !"#$%&'()*+,-./0123456)*+,-./078/(9:;%<
    =>?@ABCD(EF2GHIAJKLM;3NOAPQ6QRCS


    — Jeremy Evans (RubyKaigi Takeout 2021)

    View Slide

  17. Polished Ruby Programming #ŪŰ
    w ίϛϡχςΟͷlेશత࣮ફऀzʹΑΔٱͼ͞ͷେܕॻ੶
    w ෦ߏ੒ શষ 3VCZରԠ
    w ୈ෦3VCZͷlجૅz ϝιουҾ਺ʹҟ༷ʹ͘Θ͍͠

    w ୈ෦࣮ફͷlݪଇͱτϨʔυΦϑz
    w ୈ෦+FSFNZͷओுP
    ff
    UIF3BJMT %# 8FC ηΩϡϦςΟ

    w ϖʔδ จষͱίʔυ͔͠ͳ͍ ͔ͨ͘ͳʹਤ͕ແ͍

    w l8PSL $PSSFDU 'VOʜBOE'BTUz
    w αϯϓϧίʔυ͕པ΋͍͠ པ΋͗͢͠Δ͔΋😂

    View Slide

  18. album_artists = {}


    album_track_artists = {}


    album_infos.each do |album, track, artist|


    (album_artists[album] ||= []) << artist


    (album_track_artists[[album, track]] ||= []) << artist


    end


    album_artists.each_value(&:uniq!)


    པ΋͍͠αϯϓϧίʔυͷ͘͝؆୯ͳྫ
    )BTIͷΤϯτϦʹ഑ྻΛ֨ೲ͢ΔࡍʹɺΤϯτϦ͕OJMͷ৔߹͸ۭ഑ྻͰॳظԽ͔ͯ͠ΒཁૉΛ௥Ճ
    ͢Δͷ͸ߦͰॻ͚ͯ΂ΜΓɺͱ͍͏͜ͱʹ͍ͭͯಛʹຊจͰઆ໌ෆཁͳͷ͕ର৅ಡऀͷதڃऀͩΑ

    ଞʹ΋ɺsuper ͷ࢖͍ํ͕΍ͨΒͱ্खͳͷ͕ҹ৅ʹ࢒Γ·ͨ͠ɻࢀߟʹͳΔ😵💫

    View Slide

  19. 3VCZ্ڃऀͷϨϏϡʔ

    ʮ͍͍ͩͨ஌ͬͯͨʯ Ͱ͠ΐ͏Ͷ

    https://www.amazon.com/dp/1801072728

    View Slide

  20. 3VCZ্ڃऀͷϨϏϡʔ

    ͜Ε͸੢ౢ͞ΜͰ͸ʁlॳֶऀͷਓ͸ؾܰʹ࣭໰Ͱ͖Δ্ڃऀΛ୳ͨ͠΄͏͕͍͍Αz ΍͍͞͠

    https://www.amazon.com/dp/1801072728

    View Slide

  21. 3VCZ্ڃऀͷϨϏϡʔ

    https://www.amazon.co.jp/dp/B093TH9P7C
    ʮ͜ͷͻͱΊͬͪΌ3VCZίϛϡχ
    ςΟʹ͘Θ͍͠ͳʯͱࢥͬͨΒɺ

    ϑΝχʔτͰͨ͠

    View Slide

  22. Polished Ruby Programming #??
    w ίʔσΟϯάελΠϧ͕ŧŔŕŪŝŬūſʜ
    w checkϝιουͩ ௚આ๏Ͱͳ໋͘ྩ๏ʜͬͯŠŪ

    w do…end͔ΒͷϝιουνΣΠϯ͕ؾʹͳͬͪΌ͏

    ࢲ͸l5IF8FJSJDI$POWFOUJPOz೿ͳͷͰʜ

    w ৘ใݯ͕লུ͞Ε͕ͪͳͷ͕ŝŬūſʜ एׯŰŘŠƃũŝţŪ͔΋

    w 3VCZରԠʜແŰƅŦŖƃŵŕŧ ແ3BDUPS ແ3F
    fi
    OFNFOUT
    w લఏ஌͕͓͓͍ࣝɻ͓͓͍͘͢͝

    View Slide

  23. “The Weirich Convention”
    https://schwaderer-kaigi-2021.herokuapp.com/#33
    ͘Θ͘͠͸3VCZ,BJHJ5BLFPVUͷ!TIXBEͷl3VCZ"SDIBFPMPHZzΛ؍ͯͶ

    IUUQTSVCZLBJHJPSHUBLFPVUQSFTFOUBUJPOTTDIXBEIEIUNM
    do…end ͸खଓ͖తϒϩοΫʹ࢖͏ͱ໌ࣔతʹݴͬͨͷ͸"WEJͳͷ͔ͳ

    View Slide

  24. લఏ஌͕͓͓͍ࣝɻ͓͓͍͘͢͝ɻ

    View Slide

  25. ૊ΈࠐΈΫϥε ม਺ ϝιουҾ
    ਺ ྫ֎ॲཧ ಠࣗΫϥεઃܭ
    3VCP$PQ Ϟδϡʔϧ ϝλϓϩ
    άϥϛϯά %4- ςετ ΠσΟ
    ΦϚςΟοΫ3VCZ ϦϑΝΫλϦ
    ϯά σβΠϯύλʔϯ ࠷దԽʜ

    View Slide

  26. ༁ॻઈ൛ ༁͕ඍົ ະ༁ॻ੶ ݹ͍ େ෦ͳͷ΋ڍ͛ͯ·͢ ৭͕ബ͍΍ͭ


    8%#13&44͸LPͷ࿈ࡌl3VCZͷ΢ϥΨϫz͕ඞಡd

    ૯ूฤʹશ෦͸ऩ࿥͞Εͯͳ͍ͷͰԿ߸͔ݸผͰങ͏


    ʰ3VCZιʔείʔυ׬શղઆʱ 3)(
    ͸΢ΣϒͰશจಡΊ·͢

    View Slide

  27. ʰݚᮎ3VCZϓϩάϥϛϯάʱ
    Ծ


    ࢮܐࣥߦத
    ຋༁ਐߦத
    ೥ཅय़ ༧ఆ

    ֯୩৴ଠ࿠༁ϥϜμϊʔτࣾץο
    ೥݄ిॻЌ൛ൢച։࢝ر๬ ر๬


    ϖʔδ<্࢙࠷ް>͋ΔͷͰ࣌ؒΛ͍ͩ͘͞ʜ

    View Slide

  28. lզʑ͸ɺιϑτ΢ΣΞ։ൃʹ͓͍ͯ৽ͨͳࣾձߏ଄
    Λ࡞Γग़͠ɺͦͷͳ͔
    で
    ٕज़తͳߴΈͱ
    ビジ
    ωεͷ
    ビ
    ジ
    ϣϯΛ݁
    び
    ෇͚ɺಠࣗͷ
    バ
    ϦϡʔΛ࣋ͬͨ
    プ
    ϩ
    ダ
    Ϋ
    τ΍αʔ
    ビ
    εΛੜΈग़͢ػձΛ͍࣋ͬͯΔɻ

    ͜Ε
    が
    զʑͷڧΈ
    だ
    ɻ
    ɹ91ͷ੒ޭ͸ɺ৴པ
    で
    ͖Διϑτ΢ΣΞͷ͢
    ば
    ΍͍
    ݟੵΓɺ࣮૷ɺ
    デプ
    ϩΠ
    がで
    ͖Δ༏लͳ
    プ
    ϩ
    グ
    ϥϚʔ
    ͷ૿Ճʹ͔͔͍ͬͯΔɻ
    ڧௐ౳͸Ҿ༻ऀʹΑΔ

    View Slide

  29. 3VCZίϛϡχςΟଘଓͷ՝୊
    w 3VCZΤίγεςϜͷൃల
    w 3VCZίϛϡχςΟͷ৽௠୅ँ
    w 3VCZίϛϡχςΟ಺Ͱͷ࿅౓ͷ޲্
    w ࠃ಺Ͱͷ
    3VCZϓϨθϯεͷҡ࣋

    View Slide

  30. 3VCZίϛϡχςΟͱ͸

    View Slide

  31. http://www.
    fl
    ickr.com/photos/recompile_net/4932459606/
    lίϛϡχςΟͱ͸୭͔ɻ΋ͪΖΜɺ
    ͋ͳͨͷ͜ͱͩɻ͋ͳ͕ͨίϛϡχ
    ςΟͰ͋Γɺ ͦΕҎ֎ʹίϛϡχ
    ςΟ͸͍ͳ͍ɻ͋ͳͨͷΑ͏ͳਓʑͷ
    ू·ΓΛɺίϛϡχςΟͱݺͿͷͩ
    ߴڮ੐ٛ 3VCZJTU.BHB[JOF߸ר಄ݴ

    View Slide

  32. ƂŦŢŰ ſűƄŖŜŘŝƄ ŧŔŕŪũƄŝſ / I can organize RubyKaigi a little https://speakerdeck.com/kakutani/i-can-organize-rubykaigi-a-little
    3VCZίϛϡχςΟ͸࿭੕ʹͻͱͭ
    ஍ٿ্ʹແ਺ʹଘࡏ͢Δࠃ΍஍Ҭɺൃ࿩͢Δࣗવݴޠɺڵຯɾؔ৺ʹΑΔαϒίϛϡχςΟͦΕͧΕ͕ॏͳΓͱͭͳ͕ΓΛ࣋
    ͭ͜ͱͰ3VCZʹ·ͭΘΔଟ૚తͳ࣮ફڞಉମΛ஍ٿ্ʹߏ੒͢Δͷͩɻଟ༷Ͱ͋ͬͯ΋෼அ͸͞Εͯ΄͘͠ͳ͍Αɻ3VCZ࠾
    ༻اۀͷ৬৔ʹ΋3VCZͷ࣮ફڞಉମͱͯ͠ͷଆ໘͕͋ΔΑɻ෼அ͞Ε͍ͯͳ͍ͱߟ͑ͯΈͯ͸Ͳ͏ͩΖ͏͔ʁ

    View Slide

  33. 3VCZίϛϡχςΟଘଓͷ՝୊
    w 3VCZΤίγεςϜͷൃల
    w 3VCZίϛϡχςΟͷ৽௠୅ँ
    w 3VCZίϛϡχςΟ಺Ͱͷ࿅౓ͷ޲্
    w ࠃ಺Ͱͷ
    3VCZϓϨθϯεͷҡ࣋

    View Slide

  34. 3VCZJTU͕޾ͤʹ฻ΒͤΔɺ
    ΦʔηϯςΟοΫͰ͍ΒΕΔ

    ΤϯδχΞϦϯά૊৫ΛٻΊͯʜ

    View Slide

  35. View Slide

  36. 3VCZΤίγεςϜͷൃల

    View Slide

  37. 3VCZΤίγεςϜͷൃల
    w ίʔυΛॻ͘
    w ӳޠ BTBMJOHVBGSBODB
    Ͱडൃ৴͢Δ
    w ࠃࡍΧϯϑΝϨϯεͰࣗ෼ͷଘࡏΛࣔ͢
    ͜͜Ͱ͸ʮ޲৺తํ޲ʹҠಈ͢ΔʯԦಓίʔεΛࣔͨ͢Ίʹɺएׯޠฐͷ͋Δ୯७ԽΛ͍ͯ͠ΔΑɻ΋ͪΖΜίϯτ
    ϦϏϡʔγϣϯͷ͔ͨͪ͸͞·͟·Ͱ͋Γɺ3VCZͷ࣮ફڞಉମʹlࢀՃ͢Δz 3VCZJTUʹͳΔ
    ಓ͸ͻͱͭͰ͸ͳ͍Α

    View Slide

  38. View Slide

  39. View Slide

  40. View Slide

  41. 3VCZίϛϡχςΟͷ৽௠୅ँ

    View Slide

  42. 2VPSBTIZPVIFJ3VCZ଍Γͳ͍<ݕࡧ>

    View Slide

  43. lਖ਼౷తपลࢀՃ͸ԁख़࣮ͨ͠ફͷ৔ʹ͓͚ΔͦͷҐ
    ஔʹΑͬͯಈػ͚ͮΒΕͯ޲৺తํ޲ʹҠಈ͢Δɻͦ
    Ε͸૿େ͍ͯ͘͠ࢀՃͷ࢖༻Ձ஋ʹΑͬͯɺ͞Βʹɺ
    ৽ࢀऀͷेશత࣮ફऀʹͳΓ͍ͨͱ͍͏ཉٻʹΑͬ
    ͯɺಈػ͚ͮΒΕΔɻ࣮ફڞಉମʹ͸ྺ࢙ͱൃୡͷα
    ΠΫϧ͕͋ΓɺͦΕࣗମ͸ɺ৽ࢀऀ͕ݹࢀऀʹస਎͢
    Δ͜ͱ͕໨ཱͨͳ͍ܗͰ࣮ફʹͱͬͯඞਢͱͳΔ΍Γ
    ํͰ࠶ੜ࢈͞ΕΔɻ

    View Slide

  44. View Slide

  45. View Slide

  46. https://speakerdeck.com/igaiga/ginza-rails27-igaiga?slide=9
    !JHBJHB͕ۜ࠲3BJMTͰ࿩ͨ͠ͱ͖ͷओʹॳֶऀ޲͚ͷॻ੶Ϛοϓ͕΂ΜΓ

    View Slide

  47. 3VCZίϛϡχςΟ಺Ͱͷ
    ɹ࿅౓ͷ޲্

    View Slide

  48. lਖ਼౷తपลࢀՃ͸ԁख़࣮ͨ͠ફͷ৔ʹ͓͚ΔͦͷҐ
    ஔʹΑͬͯಈػ͚ͮΒΕͯ޲৺తํ޲ʹҠಈ͢Δɻͦ
    Ε͸૿େ͍ͯ͘͠ࢀՃͷ࢖༻Ձ஋ʹΑͬͯɺ͞Βʹɺ
    ৽ࢀऀͷेશత࣮ફऀʹͳΓ͍ͨͱ͍͏ཉٻʹΑͬ
    ͯɺಈػ͚ͮΒΕΔɻ࣮ફڞಉମʹ͸ྺ࢙ͱൃୡͷα
    ΠΫϧ͕͋ΓɺͦΕࣗମ͸ɺ৽ࢀऀ͕ݹࢀऀʹస਎͢
    Δ͜ͱ͕໨ཱͨͳ͍ܗͰ࣮ફʹͱͬͯඞਢͱͳΔ΍Γ
    ํͰ࠶ੜ࢈͞ΕΔɻ

    View Slide

  49. https://www.packtpub.com/product/polished-ruby-programming/9781801072724

    View Slide

  50. “This book is aimed at intermediate Ruby programmers
    and focuses on teaching principles of Ruby
    programming, as well as trade-offs to consider when
    making implementation decisions.
    !"#$%&'()*+,-./0123456)*+,-./078/(9:;%<
    =>?@ABCD(EF2GHIAJKLM;3NOAPQ6QRCS


    — Jeremy Evans (RubyKaigi Takeout 2021)

    View Slide

  51. Polished Ruby Programming #ŪŰ
    w ίϛϡχςΟͷlेશత࣮ફऀzʹΑΔٱͼ͞ͷେܕॻ੶
    w ෦ߏ੒ શষ 3VCZରԠ
    w ୈ෦3VCZͷlجૅz ϝιουҾ਺ʹҟ༷ʹ͘Θ͍͠

    w ୈ෦࣮ફͷlݪଇͱτϨʔυΦϑz
    w ୈ෦+FSFNZͷओுP
    ff
    UIF3BJMT %# 8FC ηΩϡϦςΟ

    w ϖʔδ จষͱίʔυ͔͠ͳ͍ ͔ͨ͘ͳʹਤ͕ແ͍

    w l8PSL $PSSFDU 'VOʜBOE'BTUz
    w αϯϓϧίʔυ͕པ΋͍͠ པ΋͗͢͠Δ͔΋😂

    View Slide

  52. ༁ॻઈ൛ ༁͕ඍົ ະ༁ॻ੶ ݹ͍ େ෦ͳͷ΋ڍ͛ͯ·͢ ৭͕ബ͍΍ͭ


    8%#13&44͸LPͷ࿈ࡌl3VCZͷ΢ϥΨϫz͕ඞಡd

    ૯ूฤʹશ෦͸ऩ࿥͞Εͯͳ͍ͷͰԿ߸͔ݸผͰങ͏


    ʰ3VCZιʔείʔυ׬શղઆʱ 3)(
    ͸΢ΣϒͰશจಡΊ·͢

    View Slide

  53. lզʑ͸ɺιϑτ΢ΣΞ։ൃʹ͓͍ͯ৽ͨͳࣾձߏ଄
    Λ࡞Γग़͠ɺͦͷͳ͔
    で
    ٕज़తͳߴΈͱ
    ビジ
    ωεͷ
    ビ
    ジ
    ϣϯΛ݁
    び
    ෇͚ɺಠࣗͷ
    バ
    ϦϡʔΛ࣋ͬͨ
    プ
    ϩ
    ダ
    Ϋ
    τ΍αʔ
    ビ
    εΛੜΈग़͢ػձΛ͍࣋ͬͯΔɻ

    ͜Ε
    が
    զʑͷڧΈ
    だ
    ɻ
    ɹ91ͷ੒ޭ͸ɺ৴པ
    で
    ͖Διϑτ΢ΣΞͷ͢
    ば
    ΍͍
    ݟੵΓɺ࣮૷ɺ
    デプ
    ϩΠ
    がで
    ͖Δ༏लͳ
    プ
    ϩ
    グ
    ϥϚʔ
    ͷ૿Ճʹ͔͔͍ͬͯΔɻ
    ڧௐ౳͸Ҿ༻ऀʹΑΔ

    View Slide

  54. ࠃ಺Ͱͷ


    ɹ3VCZϓϨθϯεͷҡ࣋

    View Slide

  55. 3VCZJTU͕޾ͤʹ฻ΒͤΔɺ
    ΦʔηϯςΟοΫͰ͍ΒΕΔ

    ΤϯδχΞϦϯά૊৫ΛٻΊͯʜ

    View Slide

  56. View Slide

  57. https://twitter.com/jeremyevans0/status/1407513414646198279
    l "NB[PO
    ͷ3VCZίϯϐϡʔλॻ৽ץϥϯΩϯάͰҐʹͳͬͨΑ

    3VCZͷ৽ץ͕࡭Ҏ্͋ͬͨΒ΋ͬͱྑ͔ͬͨΜ͚ͩͲ
    z

    View Slide

  58. https://twitter.com/junya/status/1437704432372781060

    View Slide

  59. Ͱ΋΍ΔΜͩΑR
    w ຊ͕ॻళʹ͋Δੜ͖ͯ·͢Ξϐʔϧ
    w ࠃ಺ͩͱ೔ຊޠ͡Όͳ͍ͱϦʔν͠ͳ͍
    w ίϩφՒͰిॻؚΊ ٕज़ॻࢢ৔͸ଟগ࣋ͪ௚͠
    ͍ͯΔ Β͍͕͠ಈըੈ୅ͷᎱ಄͕ʜ
    w 3VCZͷຊ͸ͦΜͳʹ਺͕ग़ͳ͍
    w ϋΠΤϯυٕज़ॻ͸ͦΜͳʹ਺͕ग़ͳ͍
    w ຊॻ͸3VCZYϋΠΤϯυٕज़ॻ😇

    View Slide

  60. 3VCZYϋΠΤϯυٕज़ॻ😇

    View Slide

  61. ࡞ઓ

    View Slide

  62. https://twitter.com/kakutani/status/1382919795939549184

    View Slide

  63. ചΕΔຊΛॻ͚͹ຊ͸ചΕΔ ഭਅ

    View Slide

  64. 3VCZYϋΠΤϯυٕज़ॻ😇

    View Slide

  65. 🥺

    View Slide

  66. ·ͱΊ

    View Slide

  67. ʰݚᮎ3VCZϓϩάϥϛϯάʱ
    Ծ


    ࢮܐࣥߦத
    ຋༁ਐߦத
    ೥ཅय़ ༧ఆ

    ֯୩৴ଠ࿠༁ϥϜμϊʔτࣾץο
    ೥݄ిॻЌ൛ൢച։࢝ر๬ ر๬


    ϖʔδ͋Δ<্࢙࠷ް>ͷͰ࣌ؒΛ͍ͩ͘͞ʜ

    View Slide

  68. ങͬͯ͘
    ΕR

    View Slide

  69. lզʑ͸ɺιϑτ΢ΣΞ։ൃʹ͓͍ͯ৽ͨͳࣾձߏ଄
    Λ࡞Γग़͠ɺͦͷͳ͔
    で
    ٕज़తͳߴΈͱ
    ビジ
    ωεͷ
    ビ
    ジ
    ϣϯΛ݁
    び
    ෇͚ɺಠࣗͷ
    バ
    ϦϡʔΛ࣋ͬͨ
    プ
    ϩ
    ダ
    Ϋ
    τ΍αʔ
    ビ
    εΛੜΈग़͢ػձΛ͍࣋ͬͯΔɻ

    ͜Ε
    が
    զʑͷڧΈ
    だ
    ɻ
    ɹ91ͷ੒ޭ͸ɺ৴པ
    で
    ͖Διϑτ΢ΣΞͷ͢
    ば
    ΍͍
    ݟੵΓɺ࣮૷ɺ
    デプ
    ϩΠ
    がで
    ͖Δ༏लͳ
    プ
    ϩ
    グ
    ϥϚʔ
    ͷ૿Ճʹ͔͔͍ͬͯΔɻ
    ڧௐ౳͸Ҿ༻ऀʹΑΔ

    View Slide

  70. 3VCZίϛϡχςΟଘଓͷ՝୊
    w 3VCZΤίγεςϜͷൃల
    w 3VCZίϛϡχςΟͷ৽௠୅ँ
    w 3VCZίϛϡχςΟ಺Ͱͷ࿅౓ͷ޲্
    w ࠃ಺Ͱͷ
    3VCZϓϨθϯεͷҡ࣋

    View Slide

  71. 3VCZJTU͕޾ͤʹ฻ΒͤΔɺ
    ΦʔηϯςΟοΫͰ͍ΒΕΔ

    ΤϯδχΞϦϯά૊৫ΛٻΊͯʜ

    View Slide

  72. ങͬͯ͘
    ΕR

    View Slide

  73. ʰݚᮎ3VCZϓϩάϥϛϯάʱ
    Ծ


    ࢮܐࣥߦத
    ຋༁ਐߦத
    ೥ཅय़ ༧ఆ

    ֯୩৴ଠ࿠༁ϥϜμϊʔτࣾץο
    ೥݄ిॻЌ൛ൢച։࢝ر๬ ر๬


    ϖʔδ͋Δ<্࢙࠷ް>ͷͰ࣌ؒΛ͍ͩ͘͞ʜ

    View Slide