Rails Developers Meetup

0c471249ee93ab17a011f3e8d2b1057a?s=47 AKAMATSU Yuki
November 16, 2017

Rails Developers Meetup

0c471249ee93ab17a011f3e8d2b1057a?s=128

AKAMATSU Yuki

November 16, 2017
Tweet

Transcript

  1. 3BJMTͰ&$αʔϏεΛ θϩ͔Β࡞ͬͯΈͯ גࣜձࣾTQJDFMJGF $5045&&34ϓϩμΫτϚωʔδϟʔ੺দ༞ر

  2. 45&&34ʹ͍ͭͯ w ΦϦδφϧ5γϟπൢചαʔϏε w ը૾Ξοϓϩʔυ΍αʔϏε্ͷσβΠϯΤσΟλͰ5γϟπ ΛσβΠϯɾൢച w ઃఆͨ͠ൢചՁ֨ʹԠͯ͡஫จ͝ͱʹऩӹ͕ൃੜ

  3. 45&&34ʹ͍ͭͯ w ΦϦδφϧ5γϟπൢചαʔϏε w ը૾Ξοϓϩʔυ΍αʔϏε্ͷσβΠϯΤσΟλͰ5γϟπ ΛσβΠϯɾൢച w ઃఆͨ͠ൢചՁ֨ʹԠͯ͡஫จ͝ͱʹऩӹ͕ൃੜ

  4. νʔϜߏ੒ w ϓϩμΫτϚωʔδϟʔ݉ΞϓϦέʔγϣϯΤϯδχΞ w Πϯϑϥ݉ΞϓϦέʔγϣϯΤϯδχΞ w σβΠφ

  5. 1E.ͱ։ൃऀ͕ಉҰਓ෺Ͱ͋ΔϝϦοτ w ҙࢥૄ௨ͷίετ͕େ෯ݮ w Ϗδωεͱ։ൃͱͰೝࣝͷҧ͍ͱ͍͏ͷ͕جຊతʹൃੜ͠ͳ ͍

  6. ೝࣝҧ͍ͷൃੜͱ͸ w ྫ͑͹ w Ϗδωεଆͷࢥ࿭ʮͱΓ͋͑ͣ.71ͱͯ͠ϦϦʔεͯ͠ػೳͱͯ͠ඞཁ͔֬ ೝ͍ͨ͠ʯ w ։ൃଆͷࢥ࿭ʮͱ͘ʹԿ΋ݴΘΕͯͳ͍͠ɺ࡞ΓࠐΜͰ͠·͍͍ͬͯΜͩΖ ͏ʯ w

    Ϗδωεͱ։ൃͷར֐ͷෆҰகͱ͔΋͋Δ w Ϗδωε͸ച্΍ϦϦʔεεϐʔυΛؾʹ͢Δ͕ɺ։ൃଆ͸কདྷతʹࣗ෼ୡ ͕ۤ࿑͠ͳ͍͔Ͳ͏͔Λؾʹ͢Δ w ։ൃʮԾઆݕূ͕͏·͍ͬͨ͘Β࡞Γͳ͓࣌ؒ͢Λ࡞Δ͘ΕΔͱݴ͚ͬͨͲ ͍ͭ΋͘Εͳ͍΍Μ͚ʜʯ w ҆શࡦͰෛ࠴Λ࡞Γ͜·ͳ͍ํ਑ΛͱΓ͕ͪ
  7. ಉҰਓ෺ͷ৔߹ w ෛ࠴ΛੵΉͱͯ͠΋ͲΕ͙Β͍ۤ࿑ͦ͠͏͔ɺϏδωεతʹ ࠓޙͲ͏͍ͨ͠ͷ͔ࣗ෼͕Θ͔͍ͬͯΔͷͰ൑அ͕ϥΫ w ۤ࿑͢Δͷ΋ࣗ෼ͳͷͰɺͦ͜Β΁Μʹର͢Δؾෛ͍͸͋· Γͳ͍

  8. ͱ͸͍͑ʜ w ΍͸ΓϢʔβʔͷߦಈ͕ࣗ෼ͱ૝ఆ͠ͳ͍΋ͷͩͬͨΓ͢Δ ͷͰɺ༧ఆ֎ͷ࢓༷มߋ͕ൃੜ͢Δ w 45&&34ͷ৔߹ɺ࠷ॳ͸γϯϓϧʹճͷ஫จͰͻͱͭͷαΠ ζ͔͠ങ͑ͳ͔ͬͨ w ࣗ෼ͷ෼Λങ͏෼ʹ͸ࣗ෼ͷαΠζ͚ͩങ͑Ε͹Α͍ͱࢥͬ ͨ

    w ͚ͩͲ૝ఆ֎ʹෳ਺αΠζΛങ͍͍ͨਓ͕ଟ͔ͬͨ w ͳΔ΄ͲͶ͍ͬͯ͏͜ͱͰ%#ͷߏ੒Λม͑ͯෳ਺αΠζߪೖ ͷϦϦʔεΛߦͬͨ
  9. ͭ·Γʜ w ߟ͑Δਓͱ࡞Δਓ͕ಉ͡Ͱ΋Ϣʔβʔ͕͍ΔҎ্͢΂ͯεϜʔ ζʹߦ͘Θ͚Ͱ͸ͳ͍ w ࣗ෼ͻͱΓͩͱͦ͜Β΁Μͷ࢓༷มߋͷཧ༝ͱ͔ٕज़తͳΉͣ ͔͠͞΋Θ͔ΔͷͰೲಘײ͕͋Δ w ෳ਺ਓͷ৔߹ɺཧ༝͕։ൃʹ఻ΘΒͣ࢓༷มߋͷࢦ͚ࣔͩ఻Θ Δͱඃ֐ऀతͳؾ࣋ͪʹͳΓ͕ͪ

    w ͦ͜Β΁Μͷίϛϡχέʔγϣϯ͕͏·͍͔͘ͳ͍ͱۭؾ΋Θ Δ͘ͳΓ͕ͪ w ͜ͷลΓʹରͯࣗ͠෼΋ಛʹ౴͑Λ͍࣋ͬͯΔΘ͚Ͱ͸ͳ͍ ͚Ͳɺҙࣝ͸͓ͯ͘͠ͱΑͦ͞͏
  10. 3BJMTͷ࿩ w 3BJMT%FWFMPQFST.FFUVQͳͷͰ։ൃଆͷ࿩Λ w ͋·ΓίΞٕज़తͳ࿩͕͋ΔΘ͚Ͱ΋ͳ͍ͷͰτϐοΫ͸গ ͠෼ࢄؾຯʹͳΔ͔΋ w ಛผͳʹ͔೉͍͜͠ͱΛ͍ͯ͠ΔΘ͚͡Όͳ͍ͷͰɺ͋Δҙ ຯ਎ۙͳ࿩୊ʹͳΔͱࢥ͏

  11. ։ൃʹ͓͍ͯߟ͍͑ͯͨ͜ͱ w ඼࣭ͱεϐʔυͷόϥϯεΛऔΓ͍ͨͱߟ͍͑ͯͨ w εϐʔυॏࢹ͗ͣ͢͠ɺ ࣗ෼ʹͱͬͯ ͋ͨΓ·͑ͷ͜ͱ͸ ͋ͨΓ·͑ʹͪΌΜͱ΍Δ w ػೳݸผͷઃܭ͸͋Δఔ౓ͬ͘͟ΓͰ΋0,ɻ࣍ΠδΔػձ͕

    ͋Ε͹ͦͷ࣌ʹ௚͢ w ٯʹશମͷઃܭํ਑͸ͳΔ΂͘ߟ͓͖͔͑ͯͨͬͨ
  12. σʔλϕʔεઃܭ w ͪΌΜͱਖ਼نԽͱ֎෦ΩʔΛ͸Δ w σʔλϕʔεͱσʔλͷෛ࠴͸ղফ͢Δͷ͕େมͳͷͰ࠷ ௿ݶ͜Ε͙Β͍͸΍Δ w ͍Βͳ͍ςʔϒϧ΍΍Γ͍ͨ͜ͱͱ߹Θͳ͍ઃܭʹͳͬͨΒ ͪΌΜͱ௚͢ w

    ΞΫηε਺͕ଟ͘ͳ͚Ε͹มߋʹରͯͦ͜͠·ͰγϏΞʹ ͳΔ͜ͱ΋ͳ͍ w ͦΕΑΓ΋Α͘Θ͔ΒΜઃܭͷςʔϒϧ࢒͢ํ͕ࠔΔ
  13. σʔλϕʔεͷ7JFX w ਖ਼نԽ͍ͯ͘͠ͱ/ ͷղফ΍+0*/ͷ਺͕ଟͯ͘3BJMT্ͷίʔ υͷݟ௨͕͠ΘΔ͘ͳΔ͜ͱ͕͋Δ w ͦͷͱ͖͸7JFXΛ༻ҙͯ͠ରॲ͢Δ w IUUQTHJUIVCDPNUIPVHIUCPUTDFOJD w

    7JFXΛଟஈʹ͢Δͱ͋Δ7JFXͷߏ੒Λม͍͑ͨͱ͖ʹ໘౗ʹͳ ΔͷͰ஫ҙ w ࣅͨཧ༝ͰΧϥϜ௥Ճ࣌ʹ͜·ΔͷͰ7JFXʹ͸࠷௿ݶͷΧϥϜ Λࢦఆ͢Δ΄͏͕Α͍ w ΞϓϦଆͱ%#ଆʹϩδοΫ͕෼͔ΕΔͷ͸ͪΐͬͱ೰ΈͲ͜Ζ
  14. ϚΠάϨʔγϣϯ w εΩʔϚͷมߋͱσʔλͷ౤ೖͷ؅ཧΛΘ͚ΔΑ͏ʹͨ͠ w σʔλ౤ೖ͸IUUQTHJUIVCDPNIBSSZTUFDI TFFE@NJHSBUJPOͰ w εΩʔϚͷมߋʹIUUQTHJUIVCDPNBOLBOF TUSPOH@NJHSBUJPOTΛೖΕͯΈͨ w

    ةݥͳ%#มߋʹରͯ͠ܯࠂΛग़͢ w ৭ʑษڧʹͳ͚ͬͨͲɺࠓճ͸ෆཁ͔ͩͬͨͳͱ΋ࢥ͏
  15. αʔϏεϨΠϠ w αʔϏεϨΠϠ͸ѱ͘ͳ͍͕ɺಋೖ౰ॳͷαʔϏεϨΠϠʹ ର͢ΔෆษڧͰඍົͳײ͡ʹ w "3ͷΠϯελϯεΛෳ਺࢖͏Α͏ͳॲཧ͸αʔϏεϨΠ ϠΈ͍ͨʹͯͨ͠

  16. ߪೖॲཧ·ΘΓΛαʔϏεΫϥεʹ w ߪೖॲཧ͸΍Δ͜ͱ͕ͨ͘͞Μ w ΫϨΧͷܾࡁॲཧɺ஫จ৘ใͷӬଓԽɺϢʔβʔ΁ͷϝʔϧ ௨஌ͳͲͳͲʜ w ѻ͏Ϟσϧ͕ଟ͍͠ɺ΍Δ͜ͱ΋ଟ͍ͷͰɺͦΕΛ·Δͬͱ αʔϏεΫϥε΁ w

    ౰ॳ͸ίʔυ͕खଓ͖తʹࣗવͱͳΔͷͰͦΕ͸ͦΕͰϝϦο τ͕͋ͬͨ w ίʔυΛ࠶ར༻͢Δͱͳͬͨͱ͖ʹ࢖͍·Θ͕͠Ͱ͖ͣʹࠔ Δ͸Ίʹʜ
  17. Ͳ͏͢Ε͹Α͔ͬͨͷ͔ w αʔϏεϨΠϠ͸ग़དྷΔݶΓബ͘͢Δ w ͦ͏͢Δͱ3BJMTͷ৔߹ɺίϯτϩʔϥʔʹॻ͚͹͍͍΍ͬ ͍ͯ͏ͷ΋ଟʑ͋Δ w υϝΠϯϞσϧͷઃܭྗΛ஁͑Δ

  18. ϑΥʔϜΫϥε w ਖ਼نԽ͢Δͱେମʹ͓͍ͯϑΥʔϜͱϞσϧ͕ʹͳΒͳ͍ w ϑΥʔϜ͝ͱʹϑΥʔϜΫϥεΛ࡞Δͷ͕݁ہ͸ϥΫ w ࣮૷͸IUUQUFDINFEQFFSDPKQFOUSZ Λࢀߟʹ͢Ε͹େମ0,

  19. όϦσʔγϣϯΛͲ͜Ͱߦ͏͔ w ͋ͱ͔ΒϑΥʔϜΫϥεΛಋೖͨ͠ͷͰ౰ॳ͸ϞσϧʹόϦ σʔγϣϯ͕͋ͬͨ w ϑΥʔϜΫϥεͷόϦσʔγϣϯ͸஋ΛϞσϧͷΠϯελϯ εʹ౉ͯ͠ϞσϧͰߦ͏

  20. class Form def sync @model_a = ModelA.new(foo: @foo, bar: @bar)

    @model_b = ModelB.new(hoge: @hoge) end def valid? sync @model_a.valid? && @model_b.valid? end end όϦσʔγϣϯΛͲ͜Ͱߦ͏͔
  21. ϑΥʔϜΫϥεʹ௚઀ॻ͘ํ޲ʹγϑτ w ਓ਺΋গͳ͍ͷͰϞσϧ௚઀ݺΜͰόϦσʔγϣϯ͞ΕͣࣄނΔ ͱ͍͏ͷ΋গͳ͍ w ϑΥʔϜ࣮૷͢Δͱ͖ʹϑΥʔϜ୯ҐͰόϦσʔγϣϯߟ͑Δํ ͕ͳΜ͔ϥΫ w ϞσϧͰόϦσʔγϣϯ͢ΔͱࠔΔέʔε΋͋Δ w

    ಛఆΧϥϜ͸ଞͷΧϥϜಉ࢜ͷܭࢉʹΑͬͯຒΊΒΕΔ৔߹ w όϦσʔγϣϯ࣌ʹܭࢉ͢ΔίετΛࢧ෷͏ඞཁ͕͋Δ w ·ͨϑΥʔϜͷ஋ΛόϦσʔγϣϯ͍ͨ͠ͷͰϑΥʔϜͰͦ ͜Λ͋·Γؾʹͨ͘͠ͳ͍
  22. class Form def sync @model = ModelA.new(foo: @foo, bar: @bar)

    end def valid? @model.valid? # hogeΛೖΕͯͳ͍ͷͰvalidʹͳΒͳ͍ end def save! hoge = (@foo + @bar) * rate @model.hoge = hoge @model.save! end end
  23. ϑΥʔϜΫϥεʹ௚઀ॻ͘ํ޲ʹγϑτ w ͱ͸͍͑΍͸ΓϞσϧʹόϦσʔγϣϯ͕ͳ͍ͷ͸ʜ w ͋ͱࣅͨΑ͏ͳϑΥʔϜͰࣅͨΑ͏ͳόϦσʔγϣϯΛॻ͘ ͜ͱ΋ଟʑ w όϦσʔγϣϯΛ͍͍ײ͡ʹ·ͱΊͨϞδϡʔϧΛ࡞Δͱ Α͍ͷ͔ͳʜ

  24. ·ͱΊ w ϓϩμΫτϚωʔδϟʔͱ։ൃऀͷҙࢥૄ௨͸େࣄͩΑ w ͏ͪͷ৔߹݉຿Ͱͦ͜͸εΩοϓ͚ͨ͠Ͳɺݱ࣮໰୊ͦΕΛଓ ͚͍ͯ͘ͷ͸ͳ͔ͳ͔೉͍͠ w 3BJMT։ൃʹ͓͍ͯେ·͔ͳݪଇΛक͍ͬͯ͘ͷ͕جຊ w ݪଇʹ͍ͭͯ͸ษڧ͠Α͏

    w ҙਤతʹखΛൈ͘ͱ͔Ͱͳ͍ݶΓɺ্ݶ͕ࣗ෼ͷ࣮ྗͰܾ·Δ w ͱ͸ݴ࣮͑૷Ϩϕϧͩͱܾ·Γख͕ͳ͍͜ͱ΋ଟ͍ w ͦͷลͷࢼߦࡨޡ͸ڪΕͳ͍