Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Coming Soon…💎 / coming soon

Coming Soon…💎 / coming soon

Kaigi on Rails 2020 の基調講演「Coming Soon...💎」の発表スライド https://kaigionrails.org/ #kaigionrails

Akira Matsuda

October 03, 2020
Tweet

More Decks by Akira Matsuda

Other Decks in Programming

Transcript

  1. @amatsuda
    Coming
    Soon...💎
    @amatsuda

    View Slide

  2. ಥવͰ͕͢ɺ

    View Slide

  3. OSS΍Γ͍ͨʂ
    🛤
    Α͍͘ΖΜͳͱ͜ΖͰ૬ஊ͞ΕΔ

    View Slide

  4. ͍ΖΜͳͱ͜Ζ
    🛤
    Asakusa.rb
    🛤 Ӭ࿨γεςϜϚωδϝϯτ͞ΜͷOSSύονձ
    🛤
    ͍ΖΜͳձࣾ
    🛤
    Πϯλʔωοτ

    View Slide

  5. 🤔

    View Slide

  6. ʮ΍Γ͍ͨͳΒ΍Ε͹͍͍ͷ
    Ͱ͸ʁʯ
    🛤
    ʮύονΛॻ͘ʯҎ֎ʹ΍Δ΂͖͜ͱ͸ͳ͍
    🛤
    ύονΛॻ͘ର৅ͷιϑτ΢ΣΞ͸ੈͷதʹແ਺ʹ
    ͋Δ

    View Slide

  7. 🔜

    View Slide

  8. ͨͿΜࠓ͙͢ύονΛॻ͔ͳ͍
    ཧ༝͸ٕज़ྗෆ଍ͱ͔Ͱ͸ͳ͍
    🛤
    ࢓૊Έ
    🛤
    Ϟνϕʔγϣϯ
    🛤
    ετʔϦʔ
    🛤
    ͖͔͚ͬ

    View Slide

  9. ͖͔͚ͬ͸͞·͟·
    🛤
    ࠓ೔͸ɺ͍ΖΜͳϓϩμΫτΛ঺հ͠ͳ͕ΒɺͦΕ
    Λॻ͍͖͔͚ͨͬ΍ͦͷͱ͖ߟ͍͑ͯͨ͜ͱͳͲΛ
    ͝঺հ
    🛤
    OSS։ൃʹڵຯ͕͋Δ͚Ͳ࢝Ί͔͕ͨΘ͔Βͳ
    ͍ɺܧଓͰ͖ͳ͍ɺͱ͍͏ํͷࢀߟʹͳΕ͹

    View Slide

  10. ͱ͍͏ײ͡Ͱɺࠓ೔͸ࣗຫΛ

    ͠ʹདྷ·ͨ͠ʂ
    🛤
    ࣗຫͱࣗըࣗࢍ
    🛤
    RubyKaigiͰ͍ͭ΋εϐʔΧʔͷօ͞Μʹ͓ئ͍

    ͯ͠Δ΍ͭ

    View Slide

  11. self
    🛤
    name: Akira Matsuda
    🛤
    GitHub: @amatsuda
    🛤
    Twitter: @a_matsuda

    View Slide

  12. ੈքతʹ༗໊ͳϓϩάϥϚʔ

    ͸͡Ί·ͨ͠

    View Slide

  13. ոจॻ

    View Slide

  14. https://jp.quora.com/ϓϩάϥϛϯάʹ͓͍ͯ-
    ੈքతʹ༗໊ͳ೔ຊਓ͸͍/answers/141576838

    View Slide

  15. https://twitter.com/joker1007/
    status/1157578882184183808

    View Slide

  16. ͦΜͳ͜ͱͳ͍Ͱ͢ʼʻ
    🛤 ݺ͹ΕΕ͹Ͳ͜Ͱ΋ߦ͘ؾຬʑͳͷʹࠃ಺͔Β͸

    ͥΜͥΜ੠͔͚ͯ΋Β͑ͳ͍͚ͩͳΜͰ

    View Slide

  17. Rubyίϛολʔ

    View Slide

  18. Railsίϛολʔ

    View Slide

  19. ͔ͤͬ͘ͷୈ1ճKaigi on RailsͳͷͰ
    ͪΐͬͱ͚ͩRailsͷ࿩

    View Slide

  20. Railsͱࢲ

    View Slide

  21. ݹגίϯτϦϏϡʔλʔ
    🛤
    https://contributors.rubyonrails.org/

    View Slide

  22. https://
    contributors.rubyonrails.org/

    View Slide

  23. SinceͷཝΛݟΔͱΘ͔Δ

    View Slide

  24. 13೥໨

    View Slide

  25. ͜ͷதͰɺݱ໾Ͱίϛοτ

    ͯ͠Δਓ
    🛤 ҾୀΛද໌ͨ͠΋͘͠͸3೥Ҏ্ίϛοτͯ͠ͳ͍
    ਓΛফ͜͠ΜͰΈΔ

    View Slide

  26. ݱ໾

    View Slide

  27. Railsίϛολʔ͸ͲΜͲΜਓ͕

    ೖΕସΘ͍ͬͯΔ͜ͱ͕Θ͔Δ
    🛤
    ྺͷઙ͍ϝϯόʔ͕ͨͪ׆༂͍ͯ͠Δ

    View Slide

  28. RailsϓϩδΣΫτ͸ɺ௕೥ଓ͍͍ͯΔΘΓ
    ʹɺ͔ͳΓ݈શʹӡӦ͞Ε͍ͯΔͷͰ͸ͳ͍͔

    View Slide

  29. Ruby΍Railsͷपลͷ͍Ζ͍Ζ

    View Slide

  30. Asakusa.rbओ࠵ͯ͠·͢

    View Slide

  31. Asakusa.rbओ࠵ͯ͠·͢

    View Slide

  32. ΦϯϥΠϯͰຖिՐ༵೔ʹ΍ͬͯΔ
    ͷͰ͓ؾܰʹ༡ͼʹདྷ͍ͯͩ͘͞

    View Slide

  33. RubyKaigiͷ

    νʔϑΦʔΨφΠβʔ΍ͬͯ·͢

    View Slide

  34. RubyKaigi Takeout 2020͝ࢀՃ
    ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ

    View Slide

  35. RubyKaigi 2021
    🛤
    https://rubykaigi.org/2021

    View Slide

  36. Kaigi on Railsͱࢲ

    View Slide

  37. ͳΜ͔RailsͷΠϕϯτ΍Γ͍ͨͬͯݴͬͯΔେ૔͞Μ
    Λogijun͞ΜʹҾ͖߹ΘͤͯKaigi on Railsͷ໊લΛ
    ݱ୅ʹોΒͤͨͷΦϨΦϨ
    🛤 ͱ͍͏࿩͸ઌिͷۜ࠲RailsͰ΋͏΍ͬͨͷͰলུ

    View Slide

  38. झຯͰΑ͘ύονΛ

    ॻ͍͍ͯ·͢

    View Slide

  39. ࠓिɺͱ͋Δ͓࢓ࣄͷRailsΞϓϦ
    ͷϦϙδτϦͰूܭͯ͠Έͨ݁Ռ
    🛤
    Railsຊମ͓ΑͼrailsΦʔΨχθʔγϣϯͰϝϯς͍ͯ͠Δgemͨͪ (16ݸ)
    🛤
    ࣗ෼͕࡞ͬͨ΋ͷ (6ݸ)
    🛤
    ϝϯςφΛ΍ͬͯΔ(= ίϛοτݖΛ͍࣋ͬͯΔ)΋ͷ (4ݸ)
    🛤
    ্هҎ֎ͷ͏ͪɺաڈʹ1ͭҎ্Կ͔Λίϛοτͨ͜͠ͱ͕͋Δ΋ͷ (86ݸ)
    🛤
    ະίϛοτͷ΋ͷ (211ݸ)

    View Slide

  40. ΞϓϦͰbundle͍ͯ͠Δgemͷ͏ͪ
    112/323 ʹ͸Կ͔͠Βίϛοτͯͨ͠
    🛤
    3෼ͷ1ڧ͙Β͍
    🛤 ͜Μͳײ͡Ͱɺͱʹ͔͍͘ΖΜͳgemΛಡΈॻ͖

    ͠·͘ΔελΠϧ

    View Slide

  41. ͍ΖΜͳਓ͕ॻ͍͍ͨΖΜͳίʔυΛ
    ಡΈॻ͖͢Δͷ͸ָ͍͠ͷͰ͓͢͢Ί

    View Slide

  42. ͦͷͨΊʹ͸ɺ೔ࠒ͔Β͍ΖΜͳίʔυΛಡΈ
    ॻ͖͢Δ·ͰͷϋʔυϧΛԼ͓͛ͯ͘ͷ͕େࣄ
    🛤
    ಡΈ͍ͨɺͱࢥͬͨ࣍ͷॠؒʹ͸αοͱಡΈ࢝ΊΒ
    ΕΔΑ͏ʹ
    🛤
    ͦͷ৔Ͱ͙͢ʹύονΛॻ͖࢝ΊΒΕΔΑ͏ʹ

    View Slide

  43. OSSϥΠϒϥϦͷίʔυΛಡΜͰ
    ύονΛॻ͘ϋʔυϧΛԼ͛Δʹ͸
    🛤 ·ͣ͸gem-src

    View Slide

  44. 💎 gem-src
    🛤 ͍ΖΜͳgemͷιʔείʔυ͕ϞϦϞϦऩूͰ͖Δ
    ΍ͭ
    🛤
    gem installίϚϯυΛ֦ுͯ͠ɺΠϯετʔϧͷ
    ͍ͭͰʹgemͷιʔείʔυΛউखʹखݩʹclone
    ͯ͘͠ΕΔΑ͏ʹ͢Δ

    View Slide

  45. ࠓேɺେ͖ͳػೳ௥ՃΛ

    ͠·ͨ͠

    View Slide

  46. gem-src as a Bundler
    Plugin!
    % bundler plugin install gem-src

    View Slide

  47. ࠓ೔·Ͱࠔ͍ͬͯͨ͜ͱ
    🛤 ͠͹Β͘લͷBundlerͷ࢓༷มߋͷ͍ͤͰɺ
    Bundlerܦ༝ͰΠϯετʔϧ͞ΕͨgemͰ͸after-
    install hook͕૸Βͳ͘ͳ͍ͬͯͨ

    View Slide

  48. BundlerϓϥάΠϯԽ͢Δ͜ͱͰɺBundlerܦ༝ͰΠϯ
    ετʔϧ͞Εͨgemʹ΋gem-src͕ޮ͘Α͏ʹͳͬͨ

    View Slide

  49. RubyGemsϓϥάΠϯ݉

    rbenvϓϥάΠϯ݉BundlerϓϥάΠϯ
    🛤
    1ϦϙδτϦͰτϦϓϧϓϥάΠϯʂ
    🛤
    ͜ΜͳϓϩμΫτ͸ͨͿΜੈքॳͩͱࢥΘΕΔ
    🛤 ͱ͍͏͔RubyGemsϓϥάΠϯ΋rbenvϓϥάΠϯ
    ΋BundlerϓϥάΠϯ΋ϚΠφʔ͗ͯ͢୭΋࡞ͬͯ
    ͳ͍

    View Slide

  50. ࠓ೔͔Β͸ɺrbenvͱbundlerͷ྆ํ
    ͱ΋ʹ૊ΈࠐΜͰ͓͘ͷ͕ਪ঑ઃఆ
    % git clone https://github.com/amatsuda/gem-src.git "$(rbenv root)/plugins/gem-src"

    % bundler plugin install gem-src

    View Slide

  51. ར༻͍ͯ͠Δgemͷιʔείʔυ͸શͯखݩʹ

    ஔ͍͓͚ͯΔΑ͏ʹͳͬͯɺύονΛൃࣹ͢Δ·Ͱ
    ͷϦʔυλΠϜ͕ܶతʹॖ·Δ
    🛤 ๻ͷखݩͰ͸ਪఆ2000ݸఔ౓͕cloneࡁΈͰɺ

    ͍ͭͰ΋ύον͕ॻ͚Δঢ়ଶʹͳ͍ͬͯΔ
    🛤 ͜Ε͕ແ͍ͱOSS׆ಈ͕Ͱ͖ͳ͘ͳΔ͘Β͍ศར

    View Slide

  52. ͜ΕͰࠓ೔͔Βύον͕ૉૣ͘
    ॻ͚ΔΑ͏ʹͳΔ͸ͣͰ͢

    View Slide

  53. 🔜

    View Slide

  54. ࠓ೔͔ΒύονΛͨ͘͞Μ

    ॻ͍͍͖ͯ·͠ΐ͏

    View Slide

  55. ͦΕ͔Βɺ๻ͷ৔߹ɺଞਓͷϓϩμΫτʹύονΛ
    ౤͛Δ͚ͩ͡Όͳͯ͘ɺझຯͰΑࣗ͘࡞ͷgemΛ
    ࡞͍ͬͯ·͢

    View Slide

  56. ࢓ࣄฑɺओʹʮRailsϓϥΪϯʯ

    View Slide

  57. "Rails Plugin"
    🛤
    ࢮޠʁ
    🛤 ࠷ۙͰ͸୯ʹ"gem"ͬͯݴΘΕͯΔʁ

    View Slide

  58. gem != Rails Plugin

    View Slide

  59. ౰ͨΓલ͚ͩͲɺੈͷதʹ͸Railsͷ֦
    ுҎ֎ͷgem΋͋Δ

    View Slide

  60. 💎 rfd

    View Slide

  61. rfd
    🛤
    RubyͰ࡞ͬͨFD(ϑΝΠϥʔ)ͷΫϩʔϯ

    View Slide

  62. ݟͲ͜Ζ
    🛤
    rfd/commands.rb
    🛤
    Կ͔Ωʔ͕ԡ͞ΕΔͱɺͱʹ͔ͦ͘ͷΩʔͷ໊લͷ
    ϝιου͕࣮ߦ͞ΕΔ

    View Slide

  63. ͖͔͚ͬ
    🛤 ͜ͷcommands.rbͷ࢓૊ΈΛࢥ͍͍ͭͯ͠·ͬͨ
    ͷͰ࣮૷ͯ͠Έͨ͘ͳͬͯ࡞ͬͨ

    View Slide

  64. ϝϯς
    🛤
    2ը໘ରԠͱ͔͍ͨ͠ͱࢥ͍ଓ͚ͯ਺೥ؒ์ஔத……
    🛤
    ։ൃΛख఻ͬͯ͘ΕΔํืूத

    View Slide

  65. gem != Rails Plugin
    🛤 ࠓ౓͸ٯʹɺgemͰ͸ͳ͍Rails pluginͷύλʔϯ

    View Slide

  66. ੲ͸Railsͷ֦ு͸gem͡Ό

    ͳ͔ͬͨ

    View Slide

  67. 💎 i18n_generators

    View Slide

  68. i18n_generators
    🛤
    Rails I18nͷϦιʔεϑΝΠϧΛࣗಈ຋༁Ͱੜ੒͠·͘Δ΍ͭ
    🛤
    ๻͕ॳΊͯࣗ෼Ͱ࡞ͬͨRails plugin
    🛤
    (ͦΕҎલʹ͸ଞਓ͕࡞ͬͨ΋ͷΛforkͯ͠ϝϯςͱ͔͙ͯͨ͠Β͍)
    🛤
    2008೥
    🛤
    GitHubͱ͔Asakusa.rbͱ͔͕Ͱ͖ͨ೥

    View Slide

  69. First CommitΛݟͯΈΔͱ……
    🛤
    https://github.com/amatsuda/
    i18n_generators/commit/7a9b45c

    View Slide

  70. Installation

    View Slide

  71. gem install ͱ͔ bundle install
    ͡Όͳ͍ʂ
    🛤 ౰࣌͸gem͡Όͳ͔ͬͨ͜ͱ͕Θ͔Δ

    View Slide

  72. Rails pluginͱͯ͠͸ൺֱతྺ࢙
    ͕௕ͯͣͬ͘ͱϝϯςͯ͠ΔͷͰ
    🛤
    Ruby 1.8ʙ3.0ͷશͯͷόʔδϣϯRubyͰಈ͘
    🛤
    Rails 3.0ʙ6.1ͷશͯͷόʔδϣϯRailsͰಈ͘
    🛤 ݱଘ͢ΔRails I18nؔ࿈ϓϩμΫτͱͯ͠͸࠷ݹͷ
    ΋ͷ͔΋͠Εͳ͍

    View Slide

  73. ࡞͖͔͚ͬͨͬ
    🛤
    Rails I18nϓϩδΣΫτʹ࠷ॳ͔ΒؔΘͬͨ೔ຊਓͩͬͨ
    🛤
    ౰࣌޿͘࢖ΘΕ͍ͯͨ gettext-rails ͷϦιʔεΛϕʔεʹͯ͠ɺຊମଆ
    ͷ ja.yml Λॻ͍ͨ
    🛤
    ΞϓϦ಺ͷYAML͸Ωʔͷ໋໊نଇ͕ܾ·ͬͯΔΜ͔ͩΒࣗಈੜ੒Ͱ͖
    ΔͷͰ͸ʁͱࢥͬͨͷͰ΍ͬͯΈͨ
    🛤
    Rails I18n͢ΔͳΒ͜͏͍͏΋ͷ͕ඞਢͰ͸ʁͱࢥͬͯ࡞͚ͬͨͲɺ

    ҙ֎ͱ޿·Βͳ͔ͬͨ

    View Slide

  74. ٯʹɺ࡞ऀ͕ࢥͬͨҎ্ʹ

    ޿·ͬͯ͠·ͬͨ΋ͷ

    View Slide

  75. 💎 kaminari

    View Slide

  76. kaminari
    🛤
    ϖʔδωʔγϣϯ͢Δ΍ͭ
    🛤
    2011೥

    View Slide

  77. ࡞͖͔͚ͬͨͬ
    🛤 ౰࣌σϑΝΫτͩͬͨwill_paginate͕Rails 3ʹ

    ͳ͔ͳ͔ରԠͯ͘͠Εͳͯ͘ࠔͬͯͨ
    🛤 ͦͷ͜Ζ࡞ऀͨͪ͸GitHub͍ͬͯ͏ελʔτΞοϓ
    Λ૑ۀͯͯ͠๩͔ͬͨ͠
    🛤
    Rails 3ͷ৽ػೳΛ࢖͑͹΋ͬͱ͏·͘࡞ΕΔؾ͕ͨ͠

    View Slide

  78. Rails 3ͷ৽ػೳ
    🛤
    Active RecordͷϝιουνΣΠϯํࣜͷ৽API
    🛤
    Rails Engine

    View Slide

  79. Rails 3ͷ৽ػೳʹ͍ͭͯͷৄ͍͜͠ͱ͸
    ౰࣌ WEB+DB Press Vol. 58 ʹॻ͍ͨ
    🛤 ૯ूฤͷDVDΛങ͑͹ࠓͰ΋ಡΊ·͢

    View Slide

  80. ݱଘ͢ΔதͰ͸ੈքͰԿ൪໨͔ʹ
    ݹ͍Rails Engine͔΋͠Εͳ͍

    View Slide

  81. kaminari͍ͬͯ͏;໊͚ͨ͟લ
    🛤 ίʔυ͸ॻ͚ͨΜ͚ͩͲɺ໊લ͕ܾΊΒΕͳͯ͘

    2ि͙ؒΒ͍ϦϦʔεͰ͖ͳ͔ͬͨ
    🛤 ౦ژRubyձ͔ٞͳΜ͔Ͱhsbt͞Μʹ͖ͯͱ͏ʹ

    ܾΊͯ΋Βͬͨ

    View Slide

  82. ڞಉϝϯςφ
    🛤
    @yuki24
    🛤 ౰࣌Issue͕100ݸͱ͔ཷ·ͬͯΔͷΛݟΔʹݟ͔Ͷ
    ͯɺAsakusa.rbͷmeetupͰʮख఻͍·͠ΐ͏
    ͔ʁʯͬͯݴͬͯ͘Εͨ

    View Slide

  83. ͻͲ͍ίʔυ
    🛤
    ·͍͋Ζ͍Ζྺ࢙తܦҢ͕͋ΔΜͰ͢Α
    🛤
    ࠓͱͳͬͯ͸ݟͲ͜Ζ͸ಛʹͳ͍͠ɺίʔυ͸৭ʑ
    ͻͲ͍ΜͰಛʹಡΉඞཁ͸ͳ͍

    View Slide

  84. 2011೥ͭͳ͕Γ
    🛤
    2011೥ʹ࡞ͬͨଞͷgem

    View Slide

  85. 💎 action_args

    View Slide

  86. action_args
    🛤
    Railsͷίϯτϩʔϥʔ͕MerbΈ͍ͨʹͳΔ΍ͭ
    🛤 ͜ΕφγͰ͸RailsͳΜ͔࢖͑ͳ͘ͳΔ͙Β͍ศར
    ͳ΍ͭ

    View Slide

  87. ࣗ෼͕࡞ͬͨgemͷதͰҰ൪޷͖
    ͳ΍͔ͭ΋͠Εͳ͍

    View Slide

  88. ࡞͖͔͚ͬͨͬ
    🛤
    Rails 3ͷίϯτϩʔϥʔͷίʔυ͕ؾʹ৯Θͳ
    ͔͔ͬͨΒ

    View Slide

  89. Rails 2 + Merb = Rails 3
    🛤 ίϯτϩʔϥʔʹؔͯ͠͸ɺྑ͘ͳ͍ํͷAPIΛ

    બ୒ͯ͠͠·ͬͨ
    🛤 ͜͜ͰMerbํࣜΛαϙʔτͰ͖ͳ͔ͬͨͷ͸Rails
    ͷྺ্࢙਺গͳ͍DHHͷ൑அϛεͩͱࢥ͏

    View Slide

  90. ݟͲ͜Ζ
    🛤
    https://github.com/asakusarb/action_args/
    commit/895b1ad

    View Slide

  91. "using Refinements in order not to
    reveal our plugin internal methods"

    View Slide

  92. ͜ͷgemͷதͰ͔͠࢖Θͳ͍௒ϓϥΠϕʔτͳ
    ϝιουΛੜ΍ͨ͢ΊʹrefinementsΛ׆༻
    🛤 ͜͜Ͱ͸ɺActionController::Base ʹϓϥΪϯ಺
    ෦༻ͷϩδοΫΛ௥Ճ͍ͯ͠ΔΜ͚ͩͲɺͦΜͳ΋
    ͷ͕ϢʔβʔͷΞϓϦʹ࿙Εग़ͪ͠Ό͏ͱΧοίѱ
    ͍
    🛤
    ͦ͜ͰɺϑΝΠϧείʔϓͳϝιουΛݺͼ͍ͨͱ
    ͜ΖͰ͚ͩੜ΍͢Α͏ʹ͢Δ

    View Slide

  93. 2015೥8݄
    🛤 ͜ͷίϛοτ͕ߦΘΕͨ2015೥8݄ʹԿ͕͋ͬͨͷ
    ͔ʁ

    View Slide

  94. ͖͔͚ͬ͸ @_ksss_ ͞Μͷπ
    Πʔτ

    View Slide

  95. https://twitter.com/_ksss_/
    status/631458253688340480

    View Slide

  96. https://twitter.com/a_matsuda/
    status/631470723974873093

    View Slide

  97. https://twitter.com/_ksss_/
    status/631478188414144512

    View Slide

  98. https://twitter.com/_ksss_/
    status/631589269283303424

    View Slide

  99. https://twitter.com/a_matsuda/
    status/631608168175415296

    View Slide

  100. ͪͳΈʹཌ೥ʹ͸Railsʹ΋ೖΕͨ
    🛤
    https://github.com/rails/rails/commit/
    571f0f32
    🛤 ͜Ε͕Rails্࢙ॳrefinements

    View Slide

  101. https://github.com/rails/
    rails/commit/571f0f32

    View Slide

  102. Refinements
    🛤 ͓࢓ࣄͷRailsΞϓϦͰ͸΄ͱΜͲ࢖͍ಓ͕ͳ͍͚
    ͲɺϥΠϒϥϦ΍ϑϨʔϜϫʔΫͷ։ൃʹ͸͛͢ʔ
    ศར

    View Slide

  103. ͓ͦΒ͘͜ͷػೳΛ͏·͘࢖͏ͱɺΊͪΌΊ
    ͪΌ៉ྷͳϑϨʔϜϫʔΫΛ࡞Δ͜ͱ΋Մೳ͔΋
    🛤
    public APIϝιουҎ֎͸ϢʔβʔʹԿ΋ݟ͑ͯͳ
    ͍Έ͍ͨͳ
    🛤 Ͱ΋Rails͸͍·͞Βແཧ͔ͳ……

    View Slide

  104. ͦΕ͔Βɺ2011೥ʹ࡞ͬͨ΋ͷΛ
    ΋͏ͻͱͭ

    View Slide

  105. 💎 active_decorator

    View Slide

  106. active_decorator
    🛤
    ͍ΘΏΔσίϨʔλʔ
    🛤
    Active Model͕஀ੜͨ͜͠ͱ΋͋ͬͯɺ
    Presenterύλʔϯͱ͔ͦ͏͍͏ͷ͕ྲྀߦͯͨ͠
    🛤
    Draper͕Ͱ͖ͨͷ΋͜ͷ͜Ζ

    View Slide

  107. ͖͔͚ͬ
    🛤
    Draperͷख৮Γ͕͋·Γʹ΋RubyΒ͘͠ͳͯ͘

    ؾ࣋ͪѱ͍ͷͰɺࣗ෼Ͱ΋ͬͱײ৮ͷྑ͍΋ͷΛ
    ࡞ͬͨ
    🛤
    ਖ਼͍͠ઃܭͱਖ਼͍࣮͠૷Λࢥ͍͍ͭͯ͠·ͬͨ

    View Slide

  108. ਖ਼͍͠ઃܭͱਖ਼͍࣮͠૷
    🛤
    view helperͳΜ͔ͩΒɺhelperͱಉ༷viewͷதͰ

    ͚ͩ༗ޮʹͳΔ΂͖

    =>
    🛤 ͋ɺͱ͍͏͜ͱ͸ɺview_assigns ͷλΠϛϯάͰҾ
    ͖౉͠ର৅ͷivarΛObject#extend͢Ε͹͍͍ͷͰ
    ͸ʂ

    View Slide

  109. view_assignsͱ͔;ͭ͏஌Βͳ͍
    ͱࢥ͏ΜͰ͚͢Ͳɺ
    🛤 ͜ͷAPIͷ஌͕ࣝ͋Δ͔ͳ͍͔͕ɺDraperͱͷ

    ख৮ΓͷࠩΛੜΜͩ

    View Slide

  110. WEB+DB Press Vol.58ͷಛू1Λॻͨ͘Ίʹ
    Rails 3ͷίʔυΛಡΈ·ͬͨ͘ͷ͕࣮݁ͨ͠

    View Slide

  111. ख৮Γ
    🛤 ;ͭ͏ͷRubyͷϞδϡʔϧΛૉ௚ʹ࢖͏͚ͩ
    🛤
    ಛघͳجఈΫϥεΛܧঝͱ͔͠ͳ͍
    🛤
    ͓·͡ͳ͍Λ֮͑ͳͯ͘ྑ͍
    🛤
    RubyͷύϫʔΛͦͷ··࢖͏

    View Slide

  112. ࣅͨΑ͏ͳίϯηϓτͷ΋ͷΛ

    ΋͏1ݸ

    View Slide

  113. 💎 jb

    View Slide

  114. jb
    🛤
    JSONΛ࡞ΔͨΊͷςϯϓϨʔτΤϯδϯ
    🛤
    jbuilder͍ͬͯ͏DSL͕ԚΒͯ͘͠࢖͍ํ͕֮͑

    ʹ͍͘΍ͭͷalternative

    View Slide

  115. ίϯηϓτ
    🛤
    JSONͱRubyͷHash͍͍ͬͯͩͨҰॹͩΑͶ
    🛤
    ςϯϓϨʔτͷதͰจࣈྻΛ੾ͬͨுͬͨͯ͠
    JSONͬΆ͍จࣈྻΛ૊ΈཱͯΔΜ͡Όͳͯ͘ɺ
    HashͷΠϯελϯεΛ࡞ͬͨΒͦΕΛJSONʹ͠
    ͯ͘ΕΔ΄͏͕௚ײతͩ͠ے͕ྑ͍ͷͰ͸ʁ

    View Slide

  116. ઃܭͱ࣮૷
    🛤
    Action ViewͰ͸1ຕ1ຕͷςϯϓϨʔτ͕ίϯύΠϧ͞Εͨ
    ΋ͷ͕ϝιουͱͯ͠ఆٛ͞ΕΔ
    🛤
    jbͰ͸ίϯύΠϧ΋Կ΋ͳͯ͘ɺςϯϓϨʔτʹॻ͍ͨ΋ͷ
    ͕ͦͷ···ΔͬͱϝιουbodyʹͳΔ
    🛤
    ͦͷϝιου͕HashͷΠϯελϯεΛฦ͢Α͏ʹ͢Ε͹͍
    ͍͚ͩɻͱʹ͔͘;ͭ͏ͷRubyΛॻ͚͹ྑ͍

    View Slide

  117. ϝϦοτ
    🛤 ṖͷDSLΛ֮͑ͳͯ͘ྑ͍
    🛤
    Կ΋ͯ͠ͳ͍ͷͰ଎͍
    🛤
    jbuilderΑΓ΋ϑΝΠϧ໊ͷ֦ுࢠ͕୹͍

    View Slide

  118. ݟͲ͜Ζ
    🛤
    template handlerͷԿ΋΍ͬͯͳͬ͞΀Γ

    View Slide

  119. lib/jb/handler.rb

    View Slide

  120. handler͕Կ΋΍ͬͯͳ͍ςϯϓϨʔτ

    ΤϯδϯΛ΋͏1ݸ

    View Slide

  121. 💎 string_template

    View Slide

  122. ݱଘ͢ΔRubyͷςϯϓϨʔτ

    ΤϯδϯͷதͰ͸Ӊ஦࠷଎

    View Slide

  123. jbͱಉ͡ײ͡ͰɺςϯϓϨʔτ͕

    ͦͷ··ϝιουbodyʹͳΔ
    🛤 ͦ͜Ͱฦͨ͠String͕ͦͷ··HTMLͱ͔ʹͳΔ

    View Slide

  124. ςϯϓϨʔτ͕ΫΦʔτ͞Εͨ΋ͷ͕
    ·Δ͝ͱ1ຊͷStringϦςϥϧʹͳΔ
    🛤 ແବͳbufferΦϒδΣΫτ͕࢖ΘΕͣʹҰܸͰ
    String͕૊ΈཱͯΒΕΔͷͰੈք࠷଎

    View Slide

  125. ͨͩͷRubyͳͷͰɺಛघͳຒΊࠐΈ

    ه๏ͱ͔͸Ұ੾ͳ͍

    View Slide

  126. <%= %> ͱ͔ແͯ͘େৎ෉ͳͷʁ

    View Slide

  127. RubyͷStringʹ͸ #{} ͷ
    interpolation ͕͋ΔΜͰ͢Αʂ
    🛤
    ͜ΕͰ͚ͬ͜͏ͳΜͱ͔ͳΔ

    View Slide

  128. ࢖͍Ͳ͜Ζ
    🛤
    layoutϑΝΠϧͱ͔Έ͍ͨͳɺΊͬͪΌrender͞
    ΕΔ͚Ͳ͋·Γසൟʹ͍͡Βͳ͍Α͏ͳ΋ͷ͸͜Ε
    Ͱॻ͍͓ͯ͘ͱύϑΥʔϚϯε͕Ք͛Δ͔΋

    View Slide

  129. ݟͲ͜Ζ
    🛤 ΍ͬͺΓtemplate handlerͷԿ΋΍ͬͯͳͬ͞΀
    Γ

    View Slide

  130. lib/string_template/
    handler.rb

    View Slide

  131. Τϯδϯͭͳ͕Γ
    🛤
    Τϯδϯ͸ΤϯδϯͰ΋ɺࠓ౓͸ςϯϓϨʔτΤϯ
    δϯ͡Όͳͯ͘ Rails Engine

    View Slide

  132. 💎 heavens_door

    View Slide

  133. heavens_door
    🛤 ΈΜͳେ޷͖Capybaraͷςετίʔυ͕ɺϒϥ΢
    βͷૢ࡞͔Βੜ੒Ͱ͖ΔEngine

    View Slide

  134. ໊લ
    🛤
    ࿐൐ઌੜͷελϯυ
    🛤
    ͳΜ͔ͦΕͬΆ͍ؾ͕ͨ͠Μ͚ͩͲɺ·͋Θ͔Γʹ
    ͔ͬͨ͘Ͱ͢Ͷ

    View Slide

  135. ͖͔͚ͬ
    🛤
    ZOZOςΫϊϩδʔζ͞Μͷ৽نҊ݅ͰɺΈΜͳͰ
    systemςετॻ͜͏͍ͥͬͯ͏͜ͱʹͳͬͯ
    🛤
    Ͱ΋खॻ͖Ͱ͍͍ͪͪॻ͘ͷ͸େมͩͬͨͷͰ

    View Slide

  136. ࣮͸ϒϥ΢βૢ࡞Ϟʔυ͚ͩ͡Όͳͯ͘
    ίϚϯυϥΠϯϞʔυ΋͋ͬͨΓ͢Δ

    View Slide

  137. ίϚϯυϥΠϯϞʔυʁ
    🛤
    ࡞ͬͨຊਓʹ͔͠࢖͍ํ͕Θ͔Βͳ͍πʔϧʹͳΓ
    ͦ͏ͳͷͰ৸͔ͤͯ͋Δ

    View Slide

  138. ઌߦݚڀ
    🛤 ͜ͷϒϥ΢β্ͷૢ࡞Λه࿥ͯ͠capybaraͷίʔ
    υΛు͘ػೳ͸ɺ2010೥ʹ࡞ͬͨhocus_pocusͬ
    ͍ͯ͏Rails Engine pluginͷػೳͱͯ͠طʹ࣮૷
    ࡁΈͩͬͨ΋ͷ

    View Slide

  139. ͜Μͳ;͏ʹxx೥ܦ͔ͬͯΒੲॻ͍ͨ
    ίʔυͷժ͕ग़ͨΓ͢Δ͜ͱ΋͋Δ
    🛤
    ௕೥ίʔυΛॻ͖ଓ͚ͯΔͱΞυόϯςʔδ͕͋ͬ
    ͨΓ͢Δɺͱ͍͏ࣄྫ

    View Slide

  140. 💎 hocus_pocus

    View Slide

  141. hocus_pocus
    🛤
    WikiΈ͍ͨͳײ֮Ͱɺϒϥ΢β্Ͱૢ࡞ͨ͠Βαʔ
    όʔ্Ͱϖʔδ͕࡞ΕΔRails Engine

    View Slide

  142. ࡞Γ࢝Ίͨͷ͸2010೥
    🛤
    Kaminari͕Engineͱͯ͠͸૬౰ݹ͍͖ͬͯͬ͞
    ݴ͚ͬͨͲɺͦΕΑΓݹ͔ͬͨ
    🛤
    ͍͢͝Φʔύʔπ͔΋͠Εͳ͍

    View Slide

  143. ͍·͍ͪྲྀߦΒͳ͔ͬͨ……
    🛤
    UI͕ϔϘ͗ͨ͢
    🛤
    πʔϧࣗମͷ֓೦͕೉͗ͨ͢͠
    🛤
    υΩϡϝϯτ͕ແͩͬͨ
    🛤
    ΍Γ͔ͨͬͨ͜ͱ͸Ͱ͖ͦ͏ʂͬͯࢥͬͨΒͳΜ͔
    ๞͖ͨ

    View Slide

  144. ͍͍ͩͨͰ͖ͨʂ => ͪΌΜͱ࢖͑
    Δ·Ͱ࡞ΓࠐΉͷ͕ۤख

    View Slide

  145. ίϯηϓτ͕ಛघͩ͠࢖͍ํ΋೉ղͰɺ࡞ͬͨ
    ຊਓʹ͔͠࢖͍ํ͕Θ͔Βͳ͍πʔϧʹͳͬͯ
    ͠·ͬͨ

    View Slide

  146. ͜ͷϓϩμΫτ͕ٴ΅ͨ͠Өڹ
    🛤
    Railsඪ४ͷweb-consoleΛΠϯεύΠΞ
    🛤
    https://github.com/rails-girls-summer-of-
    code/summer-of-code-2014/wiki/Project-
    ideas#conductor-web-based-assistant-for-
    development

    View Slide

  147. ࡞ͬͨߕ൹͸͋ͬͨΈ͍ͨ
    🛤 ݁ہweb-console͸΍ͬͯΔ͜ͱ͸ͥΜͥΜҧ͏
    ͚Ͳ……

    View Slide

  148. Capybaraؔ࿈ͷϏδϡΞϧܥͷ
    EngineΛ΋͏1ͭ
    (͋ͱ͍ͭͰʹݴ͏ͱϓϩάϨۂ໊ͭͳ͕Γ)

    View Slide

  149. 💎 roundabout

    View Slide

  150. roundabout
    🛤
    ը໘ભҠਤੜ੒πʔϧ

    View Slide

  151. ը໘ભҠਤͷੜ੒
    🛤 ࣮૷ͱͯ͠͸CapybaraͷϞϯΩʔύον
    🛤 ςετίʔυதʹCapybaraͰൃੜͨ͠ϦΫΤετ
    ͷભҠΛશ෦ه࿥͢Δ
    🛤
    ͜ΕΛͭͳ͛ͯֆʹ͢Δͱը໘ભҠਤʹͳΔ

    View Slide

  152. ͜Μͳײ͡(RedmineϓϩδΣΫτͰ
    ࣮ߦͨ݁͠Ռ)

    View Slide

  153. ਤʹ͸ςετ͕ॻ͔Ε͍ͯΔ

    ΋ͷ͔͠ग़ͯ͜ͳ͍
    🛤
    ͭ·Γɺ͋ΔछͷςετΧόϨοδతͳ΋ͷ͕Մࢹ
    Խ͞ΕΔπʔϧͰ͋Δͱ΋ݴ͑Δ

    View Slide

  154. ΞΠσΞ͸͓΋͠Ζ͍͠ɺϙςϯγϟϧ͸͋Δ
    ؾ͕͢ΔΜ͚ͩͲɺ͋·Γ࢖ΘΕͯΔखԠ͑͸
    ͳ͍͔΋
    🛤
    ͜ΕΛػʹͥͻ͝ར༻͍ͩ͘͞

    View Slide

  155. ΧόϨοδؔ࿈ͭͳ͕ΓͰ

    View Slide

  156. 💎 per_file_coverage
    (unreleased)

    View Slide

  157. per_file_coverage (Ծ)
    🛤 ςετ࣮ߦ࣌ʹɺΞϓϦΛߏ੒͢Δ֤ϑΝΠϧ͕

    Ͳͷςετ͔Βݺͼग़͞Ε͍ͯΔ͔(ͱɺͦͷٯ)Λ

    શ෦ચ͍ग़ͯ͠ՄࢹԽ͢Δ

    View Slide

  158. ࣮૷ͱͯ͠͸SimpleCovͷ

    ϓϥάΠϯ
    🛤
    (ͨͩ͠SimpleCovʹ͸ϓϥάΠϯͳͲͱ͍͏֓೦
    ͸ͳ͍)

    View Slide

  159. ஍ࠈͷϞϯΩʔύον
    🛤 ͦ͏͍͑͹͍͓ͪ͏ SimpleCov ͷίϛολʔͰ͸
    ͋ΔͷͰɺ֦ு͕͠΍͍͢Α͏ʹϑΟʔυόοΫ͙
    Β͍͸͍͖͍ͯͨ͠

    View Slide

  160. RubyͷCoverageϞδϡʔϧΛ

    ར༻

    View Slide

  161. ͖͔͚ͬ
    🛤
    ANDPADࣾͷͦͦ͜͜ͷن໛ͷطଘΞϓϦʹࢀը
    ͯ͠ɺʮ͜ͷίʔυ͸ͲͷspecϑΝΠϧ͔Βςε
    τ͞ΕͯΔΜͩΖ͏ʁʯͱ͔ɺٯʹʮ͜ͷspec͸
    Ͳ͜Β΁ΜͷϑΝΠϧΛςετͯ͠ΔΜͩΖ͏ʯͱ
    ͔஌Γͨ͘ͳͬͨͷͰ

    View Slide

  162. application_controller͚ͩͰ΋300ݸͱ͔͋Δ
    ͷͰɺ΍ͬͺ͜͏͍͏ͷ͕஌Γͨ͘ͳΔΜͰ͢Α

    View Slide

  163. Ξ΢τϓοτྫ

    View Slide

  164. ͔͠͠ɺgem͸·ͩͳ͍……
    🛤
    HTML͕ڊେԽͨ͠৔߹ͷύϑΥʔϚϯε໰୊͕

    ౗͍ͤͯͳ͍
    🛤
    ໊લ͕ܾ·͍ͬͯͳ͍ʂ

    View Slide

  165. ୭໊͔͍͍લΛ͚͍ͭͯͩ͘͞
    🛤
    ͓ئ͍͠·͢

    View Slide

  166. Coming Soon...💎

    View Slide

  167. ࠷ۙͷ͓࢓ࣄؔ࿈Ͱ࡞ͬͨ΋ͷΛ
    ΋͏1ͭ

    View Slide

  168. 💎 lightweight_attributes

    View Slide

  169. lightweight_attributes
    🛤
    Active RecordͷϞσϧͷΠϯελϯεੜ੒Λۃྗ
    ܰ͘͢ΔͨΊͷ͑͛ͭͳ͍ϞϯΩʔύον

    View Slide

  170. ARͷϞσϧͷΠϯελϯεੜ੒
    🛤
    AR 4͙Β͍Ͱೖͬͨtype castingͱ͔͍͏୭΋࢖ͬͯͳ
    ͍ػೳͷͨΊʹٸܹʹॏͨ͘ͳͬͨ
    🛤
    ͱʹ͔͘DB͔ΒϞσϧΛΨόοͱҾͬுͬͯฦ͚ͩ͢Έͨ
    ͍ͳAPIͱ͔ͩͱɺ͕͜͜ϘτϧωοΫʹͳΔ
    🛤
    RubyϨϕϧͰ͸ɺಛʹTimeతͳ΍ͭͷparse͕஗͔ͬͨ
    Γ͢Δ

    View Slide

  171. RubyͰTimeతͳ΍ͭͷparse͕
    ଎͘ͳΔͱ͍͍ͳ͊
    🛤
    https://bugs.ruby-lang.org/issues/16005

    View Slide

  172. https://bugs.ruby-lang.org/
    issues/16005

    View Slide

  173. ͱ΋͋Εɺ
    lightweight_attributes ʹ͍ͭͯ

    View Slide

  174. sponsored by ΞΧπΩ
    🛤 ࠓ೥͔Βnobuͷύτϩϯʹͳͬͨ͋ͷΞΧπΩࣾ
    Ͱ͢ʂ

    View Slide

  175. ίʔυ͕͑͛ͭͳ͗ͯ͢͞

    ϝϯςෆೳ
    🛤 ͜ͷ΁Μͷίʔυ͸Railsͷόʔδϣϯ͝ͱʹͥΜ
    ͥΜҧͬͯͯɺෳ਺όʔδϣϯରԠͱ͔Ϛδແཧ

    View Slide

  176. ͱ͍͏͜ͱͰɺ·ͱ΋ʹϝϯς
    ͞Εͯͳ͍ͷͰར༻͸ඇਪ঑

    View Slide

  177. type castingΛ஗Ԇͤ͞Δͱ͍͏
    ΞΠσΞ
    🛤
    kamipo͞Μ͕͏·͍͜ͱरͬͯActive Record
    6.1ʹίϛοτͯ͘͠Ε͔ͨΒ΋͏͓ଂೖΓͰ͍͍͔
    ͳ……

    View Slide

  178. Rails 6.1

    View Slide

  179. Coming Soon...💎

    View Slide

  180. ΞΧπΩ͞ΜεϙϯαʔͰ΋͏1ͭ

    View Slide

  181. 💎 activerecord-ruby
    (unreleased)
    🛤 ΞϓϦதͰߋ৽͞Εͳ͍͜ͱ͕લఏͷ͍ΘΏΔ

    ʮϚελʔσʔλʯΛΠϯϝϞϦʹల։
    🛤
    ARͷΦϒδΣΫτͷ··Ωϟογϡ͢Δ
    🛤
    readonlyͳͷͰ҆৺ͯ͠࢖͍ճͤΔ

    View Slide

  182. ૂ͍
    🛤
    ΫΤϦͷແବଧͪΛ཈੍
    🛤
    ARͷΦϒδΣΫτੜ੒ίετΛ࡟ݮ
    🛤
    GCෛՙΛܰݮ

    View Slide

  183. ͜͜·ͰͳΒ୭΋͕ߟ͑ͨ͜ͱ͋Δͱࢥ͏
    Μ͚ͩͲɺΠϯλʔϑΣΠεͱ࣮૷͕໰୊
    🛤
    Model.fetch_from_cache ͱ͔ͦ͏͍͏ײ͡ͷ

    μα͍ίʔυ͸ઈରॻ͖ͨ͘ͳ͍
    🛤
    ϓϩμΫγϣϯͷίʔυ͸;ͭ͏ͷARͷίʔυ͔Β
    Կ΋ม͑ͣʹɺͰ΋ͲͷϞσϧ͕ʮϚελʔςʔϒ
    ϧʯ͔͚ͩڭ͑ͯ΍ͬͨΒউखʹۭؾΛಡΜͰಈ࡞
    ͢Δ͙Β͍͕͍͍

    View Slide

  184. activerecord-ruby ͷAPI
    🛤 ʮϚελʔʯͬΆ͍ϞσϧʹҎԼͷΑ͏ͳએݴΛ

    ೖΕΔ
    class Country < ActiveRecord::Base
    find_by_ruby!
    end

    View Slide

  185. ͦΕ͚ͩ
    🛤
    ଞͷίʔυ͸Ұ੾͍͡Βͳͯ͘΋ɺҎԼͷΫΤϦͨ
    ͕ͪDBΛݺͼग़͢͜ͱͳ͘ద੾ͳ஋Λฦ͢
    Model.find(id)
    Model.where(prefecture: 'Tokyo').order(:created_at)

    View Slide

  186. joins͕ೖͬͯͨΓ͢ΔΑ͏ͳෳࡶͳΫΤϦ
    ͕౤͛ΒΕͨΒDBʹϑΥʔϧόοΫ͢Δ

    View Slide

  187. ϝϞϦ͔Βऔ͖ͬͯͨ΋ͷͱDB͔Βऔ͖ͬͯͨ
    ΋ͷʹᴥᴪ͕ͳ͍͔Ͳ͏͔ൺֱ͢ΔϞʔυΛ౥ࡌ
    🛤
    ςετΛ͜ΕͰճ͓ͯ͘͠ͱ҆৺Ͱ͖Δ͸ͣ

    View Slide

  188. ύϑΥʔϚϯεήΠϯ
    🛤
    ະ஌਺
    🛤
    ਖ਼௚ͳͱ͜Ζɺ·ͱ΋ͳ࣮ΞϓϦͰͷޮՌ͸ݶఆత
    ͳ༧ײ͸͍ͯ͠Δ
    🛤
    DBͷ઀ଓ͕ύοπϯύοπϯΈ͍ͨͳ؀ڥͰ͸

    ޮ͔͘΋

    View Slide

  189. ݟͲ͜Ζ
    🛤
    ARͷΠϯλʔϑΣΠεͱγʔϜϨεʹ࿈ܞ͢ΔͨΊ
    ͷςΫχοΫ

    View Slide

  190. ࣮૷ৄࡉ
    🛤
    AR͕૊ΈཱͯͨASTΛSQLͰ͸ͳͯ͘Rubyͷ

    ίʔυʹม׵͢Δ ToRuby visitor ΛΰϦΰϦ࣮૷

    View Slide

  191. gem͸·ͩͳ͍

    View Slide

  192. Coming Soon...💎

    View Slide

  193. ࠓ·Ͱʹແ͔ͬͨΞϓϩʔνͩ͠ɺίʔυ΋͔
    ͳΓ͓΋͠Ζ͍ͷͰɺੈʹग़ͨΞΧπΩʹ͸ͥͻ
    ͍ͬͯ͡Έ͍ͯͩ͘͞

    View Slide

  194. ઌߦݚڀ
    🛤
    arel_ruby

    View Slide

  195. 💎 arel_ruby
    🛤
    https://github.com/amatsuda/arel_ruby
    🛤
    (2012೥)

    View Slide

  196. ArelͷASTͷRuby visitor
    🛤
    ͭ·ΓɺࠓճͷϓϩμΫτͷΤϯδϯ෦෼ͦͷ΋ͷ

    View Slide

  197. ͜Ε͸౰࣌ɺRDB͔Β੾Γ཭ͯ͠Rubyͷੈք͚ͩ
    ͰΞϓϦͷςετ͕࣮ߦͰ͖ͨΒ͓΋͠Ζ͍͔΋ɺ
    ͱࢥͬͯ΍ͬͯΈͨ΋ͷ
    🛤 ͋·Γݱ࣮తͳϢʔεέʔεͰ͸ͳ͔ͬͨͷͰɺ

    ୯ʹ໘നͦ͏͔ͩΒ࡞ͬͯΈ͚ͨͩΈ͍ͨͳײ͡ʹ
    ͳͬͯ͠·ͬͨ
    🛤
    ͦͯͣͬ͠ͱ͓ଂೖΓ

    View Slide

  198. ίʔυ͸ॻ͚ͯ΋Ϣʔεέʔε
    Λݟޡͬͨྫ

    View Slide

  199. 8೥ܦͬͯɺ৽ͨͳϢʔεέʔεΛ
    ݟ͚ͭͯ෮׆

    View Slide

  200. ͜Μͳ;͏ʹxx೥ܦ͔ͬͯΒੲॻ͍ͨ
    ίʔυͷժ͕ग़ͨΓ͢Δ͜ͱ΋͋Δ
    🛤
    ௕೥ίʔυΛॻ͖ଓ͚ͯΔͱΞυόϯςʔδ͕͋ͬ
    ͨΓ͢Δɺͱ͍͏ࣄྫ

    View Slide

  201. ·ͱΊ

    View Slide

  202. ΍ͬͺRails
    🛤
    RailsΛ͍ͬͺ͍ಡΜͩΓॻ͍ͨΓ͍ͯ͠ΔͱRails
    ʹৄ͘͠ͳΔ

    View Slide

  203. ͍ͭͰ΋Ͳ͜Ͱ΋ૉૣ͘

    ύονΛॻ͜͏
    🛤
    Railsʹৄ͘͠ͳΔͱɺRails͚ͩ͡Όͳ͍ͯ͘ΖΜ
    ͳ΋ͷʹύον͕ॻ͚ΔΑ͏ʹͳΔ
    🛤
    gem-srcΛrbenv΍bundlerͱ࿈ܞ͓͍ͤͯͯ͞ɺ
    ৗʹ࠷୹खॱͰύονΛ౤͚͛ͭΕΔ४උΛ੔͑ͯ
    ͓͜͏

    View Slide

  204. ͱʹ͔ͨ͘͘͞Μ

    ύονΛॻ͜͏
    🛤 ύονΛͨ͘͞Μॻ͔ͳ͍ͱɺύον͕ॻ͚Δ

    Α͏ʹ͸ͳΒͳ͍
    🛤
    ྔ͕࣭ʹస͡Δ͜ͱ΋͋Δ

    View Slide

  205. gem࡞Ո΁ͷಓ
    🛤
    ͍ΖΜͳ΋ͷʹύονΛॻ͍ͯΔͱɺଞਓʹॻ͔ͤ
    ΔΑΓࣗ෼Ͱॻ͍ͨ΄͏͕ྑ͍΋ͷ͕Ͱ͖Δ͜ͱ͕
    Θ͔Δ
    🛤
    ͖͔͚ͬ΍ϢʔεέʔεΛ͔ͭ·͑ͯɺϓϩμΫτ
    ʹ͍ͯ͜͠͏

    View Slide

  206. ͦΜͳΜ୭Ͱ΋ࢥ͍ͭ͘Ͱ͠ΐɺΈ͍ͨ
    ͳgemͰ΋ͱʹ͔͘΍ͬͯΈΔͱྑ͍
    🛤
    ҙ֎ͱ୭΋΍Ζ͏ͱͯ͠ͳ͔ͬͨΓɺࣗ෼͕ੈքͰ
    Ұ൪͏·͘΍ΕͨΓ͢Δ

    View Slide

  207. ໊લॏཁ
    🛤
    ໊લ͚ͭΔͷΉ͍ͣ
    🛤
    ໊લ͕͚ͭΕͳͯ͘ࠓ೔ͷൃදʹؒʹ߹Θͳ͔ͬͨ
    ΋ͷ͕͍͔ͭ͋͘ΔͷͰɺ୭͔Ұॹʹ໊લΛߟ͑ͯ
    ΄͍͠……

    View Slide

  208. gemͷख़੒
    🛤 ࡞ͬͨgem͸͙͢ʹժ͕ग़ͳͯ͘΋ɺޙ͔ΒϢʔε
    έʔε͕͍͖ͭͯͯɺԿ೥΋ܦ͔ͬͯΒ໾ʹཱͬͨ
    Γ͢Δ
    🛤
    ͷͰɺ΍ͬͺΓΞΠσΞΛ͖ͪΜͱίʔυʹམͱ͠
    ͓ͯ͘͜ͱ͕େࣄ

    View Slide

  209. ϝϯς
    🛤
    gemΛ͍ͬͺ͍࡞ͬͨΓͯ͠Δͱɺϝϯςର৅͕

    ૿͑͗ͯ͢ख͕ճΒͳ͘ͳΔ
    🛤 ͦ΋ͦ΋๞͖ͬΆ͍ਖ਼֬ͳͷͰϝϯςͱ͔ۤख……
    🛤
    ͳͷͰɺ୭͔ϝϯςख఻ͬͯ͘ΕΔͱͱͯ΋خ͠
    ͍……

    View Slide

  210. Future Works
    🛤
    ࠓޙͱ΋ɺԿ͔ϓϩμΫτͷΞΠσΞ͕͖߱ͬͯͨ
    Βɺ਺ϲ݄ʹ1ճ͙Β͍ͷϖʔεͰgemΛ࡞Γଓ͚
    ͍ͨ
    🛤
    @amatsuda ͷ࣍ճ࡞ʹ͝ظ଴͍ͩ͘͞ʂ

    View Slide

  211. Coming Soon! 💎

    View Slide

  212. ·ͱΊ
    🛤 গ͠Ͱ΋օ͞Μͷ͜Ε͔ΒͷOSS׆ಈͷώϯτʹ
    ͳ͍ͬͯΕ͹޾͍Ͱ͢

    View Slide

  213. end
    🛤
    name: Akira Matsuda
    🛤
    GitHub: @amatsuda
    🛤
    Twitter: @a_matsuda

    View Slide