Slide 1

Slide 1 text

࠷ۙͷRailsࣄ৘Λ15෼Ͱ͓͞ Β͍ ୈ28ճΏΔ͸ͪ.it OKURA Masafumi, 2021-02-24

Slide 2

Slide 2 text

ࣗݾ঺հ • ໊લɿେ૔խ࢙ʢ͓͓͘Β·͞;Έʣ • ॴଐɿϑϦʔϥϯε • ಘҙɿRubyͱRuby on Railsɺͪΐͬ͜ͱVim • ՝֎׆ಈɿ֤छొஃɺίϛϡχςΟӡӦʢܭ4ͭʣɺΧϯϑΝϨϯε ӡӦʢKaigi on RailsʣɺOSSʢgemΛܭ8ͭʣ

Slide 3

Slide 3 text

15෼

Slide 4

Slide 4 text

ࠓ೔࿩͢͜ͱ • Rails 6.1Ͱೖͬͨػೳ • ߋʹਐΜͩෳ਺DBରԠ • ActiveModel::ErrorͷΦϒδΣΫτԽ • etc. • HotwireͱTurbo • StimulusReflexपล

Slide 5

Slide 5 text

ࠓ೔ͷτʔΫ͸୭޲͚ʁ • ࠷ۙRailsΛ͋·Γ৮͍ͬͯͳ͍ਓ • RailsΛ৽نҊ݅Ͱ࠾༻͠Α͏͔໎͍ͬͯΔਓ • RailsͱϑϩϯτΤϯυͷؔ܎ੑʹ͍ͭͯ஌Γ͍ͨਓ

Slide 6

Slide 6 text

Rails 6.1

Slide 7

Slide 7 text

Rails 6.1 • 2020೥12݄ϦϦʔε • ໨ۄػೳ͸ਫฏγϟʔσΟϯάͳͲͷෳ਺DBରԠ • ActiveModel::Errorؔ܎ͷඇޓ׵ͳมߋ • ࡉ͔ͳվྑ

Slide 8

Slide 8 text

Rails 6.1ʹ͓͚Δෳ਺DBରԠ • 6.0ͰύʔςΟγϣχϯά͕αϙʔτ͞Εͨ • 6.1Ͱ͸ਫฏγϟʔσΟϯά΋αϙʔτ͞Εɺ͞Βʹศརʹ • Ϟσϧ͝ͱʹҟͳΔDBʹ઀ଓ͢Δ͜ͱ΋Մೳʹ

Slide 9

Slide 9 text

ActiveModel::Errorͷ௥Ճ • ैདྷ͸@model.errorsϝιου͸Τϥʔ৘ใؚ͕·ΕͨϋογϡΛฦ ͍͕ͯͨ͠ɺϋογϡͩͱѻ͍ͮΒ͞΍σʔλഁଛͷݒ೦΋͋ͬͨ • 6.1͔Β͸ɺ@model.errorsϝιου͸ActiveModel::ErrorΦϒδΣΫ τͷ഑ྻΛฦ͢Α͏ʹͳͬͨ • ৄࡉ͸ https://youtu.be/FGhZR4ns_tc ʢKaigi on RailsͰͷ࣮૷ऀͷ ൃදʣΛࢀর

Slide 10

Slide 10 text

࣍͸7.0ʹͳͬͨ • https://github.com/rails/rails/commit/ 1b455e2e9d6937d4107e19cb32e2f98aa08886b9 • ͳΜ͔Ͱ͔͍มߋ͕ೖΔΒ͍͠ʂ

Slide 11

Slide 11 text

Hotwire

Slide 12

Slide 12 text

Hotwire • https://hotwire.dev/ • RailsͷΦϦδφϧαʔϏεͰ͋ΔBasecampͷਓ͕ͨͪ࡞ͬͨɺ HTML Over The WireͷΦʔϓϯιʔε࣮૷ • Heyͱ͍͏ϝʔϧαʔϏεͰ࣮ઓ౤ೖࡁΈ • TurboɺStimulusɺStradaͷ3ͭͷίϯϙʔωϯτͰߏ੒͞ΕΔ • ଞݴޠͩͱLivewire΍Liveviewͱݺ͹ΕΔ΋ͷ͕ࣅ͍ͯΔΒ͍͠

Slide 13

Slide 13 text

Turbo • JavaScriptͷهड़ྔΛ࠷খݶʹͭͭ͠ϢʔβʔମݧΛ޲্ͤ͞ΔͨΊ ͷϥΠϒϥϦ • DriveɺFramesɺStreamsɺNativeͷ4ͭͷίϯϙʔωϯτͰߏ੒͞Ε Δ • ͋Μ·ΓͪΌΜͱ৮Εͯͳ͍ͷͰղઆͰ͖ͳ͍…

Slide 14

Slide 14 text

Stimulus • ܰྔͳJavaScriptϑϨʔϜϫʔΫ • TurboͰ͸଍Γͳ͍ͱ͖ʹStimulusͰJSΛॻ͘ɺͱ͍͏ΠϝʔδΒ͠ ͍ • CoCʢઃఆΑΓن໿ʣͷΑ͏ͳRailsͬΆ͍Ξϓϩʔν͕ಛ௃

Slide 15

Slide 15 text

Strada • ະϦϦʔε • ϞόΠϧΞϓϦʹؔΘΔ΋ͷΒ͍͠

Slide 16

Slide 16 text

StimulusReflex

Slide 17

Slide 17 text

StimulusReflexʢҎԼ”SR”ʣ • https://docs.stimulusreflex.com/ • Hopsoftͱ͍͏ਓ͕ϝΠϯͰ։ൃ͍ͯ͠ΔΦʔϓϯιʔεͷRails޲͚ ϥΠϒϥϦ • WebSocketΛ׆༻ͯ͠HTMLΛॻ͖׵͑Δ • SPAͬΆ͍ΞϓϦΛJSΛॻ͔ͣʹ࡞ΕΔ͕ɺStimulusʹґଘ͍ͯ͠Δ • Djangoͱ͔Ͱಈ͔͍ͯ͠Δਓ΋͍ΔΒ͍͠…ʁ

Slide 18

Slide 18 text

༨ஊ • SRΛ࢖͍20෼ͰTwitterͬΆ͍ΞϓϦΛ࡞ΔϥΠϒίʔσΟϯά͕ۜ ࠲Rails#27ͰߦΘΕͨʢhttps://ginza-rails.connpass.com/event/ 193008/ʣ • ؆୯ͳը໘ಉظΛ࣮૷͍͚ͨͩ͠ͳΒ͜ΕͰ΋े෼Ͱ͸ͱ͍͏࣮ײ • SR͸ίϛϡχςΟ͕׆ൃʢDiscord͸1000ਓ௒͑ʂʣ • ࡞ऀ͔Β௚઀αϙʔτͯ͠΋Β͑Δ͔΋ʁ

Slide 19

Slide 19 text

पลٕज़ • CableReadyɿSRͷج൫ɺWebSocketʹσʔλΛྲྀ͠ࠐΉ • FuturismɿRailsͷύʔγϟϧΛActionCableͰඇಉظͰϨϯμʔ͢Δ • OptimismɿRailsͷόϦσʔγϣϯͱΤϥʔͷϨϯμϦϯάΛϦΞϧ λΠϜͰߦ͏ • ViewComponentReflexɿViewComponentͱ͍͏GitHubࣾʹΑΔ ϏϡʔίϯϙʔωϯτϑϨʔϜϫʔΫͱSRΛ૊Έ߹ΘͤͨϥΠϒϥϦ

Slide 20

Slide 20 text

HotwireͱSR͔Ϳͬͯͳ͍ʁ

Slide 21

Slide 21 text

͔ͿͬͯΔʂ

Slide 22

Slide 22 text

HotwireͱSRͷকདྷ͸Ͳ͏ͳΔͷ͔ • Θ͔ΒΜʂ • Hotwire͸ActiveRecordͷCRUDίʔϧόοΫͱͷ૬ੑ͕ྑ͍ͷͱγ ϯϓϧͳͷ͕ڧΈͬΆ͍ • SR͸Morphͱ͍͏֓೦ʹΑΓԠ༻ൣғΛ޿͍͛ͯΔҹ৅ • ͕ͬͭΓ࢖͍ൺ΂ͯΈͨΘ͚Ͱ͸ͳ͍ͷͰ஌ݟ͕΄͍͠ͱ͜Ζ

Slide 23

Slide 23 text

·ͱΊ

Slide 24

Slide 24 text

Rails 6.1 • ෳ਺DBରԠ͸͔ͳΓਐΜͩ • ErrorपΓͷඇޓ׵ʹ஫ҙ • ࣍͸Rails 7!

Slide 25

Slide 25 text

HotwireͱSR • ͲͪΒ΋RailsϝΠϯʢগͳ͍JSʣͰSPAͬΆ͍ΞϓϦΛ࣮ݱ͢ΔͨΊ ͷπʔϧ • ࠓޙɺ྆ํ͕ྲྀߦΔͷ͔ɺͲͪΒ͔͕γΣΞΛऔΔͷ͔ɺͲͪΒ΋࢖ ΘΕͳ͍ͷ͔ɺ·ͩ୭ʹ΋Θ͔Βͳ͍ • ؾʹͳΔਓ͸ཁνΣοΫͩʂ