45&&34ʹ͍ͭͯ
w ΦϦδφϧ5γϟπൢചαʔϏε
w ը૾ΞοϓϩʔυαʔϏε্ͷσβΠϯΤσΟλͰ5γϟπ
ΛσβΠϯɾൢച
w ઃఆͨ͠ൢചՁ֨ʹԠͯ͡จ͝ͱʹऩӹ͕ൃੜ
Slide 3
Slide 3 text
45&&34ʹ͍ͭͯ
w ΦϦδφϧ5γϟπൢചαʔϏε
w ը૾ΞοϓϩʔυαʔϏε্ͷσβΠϯΤσΟλͰ5γϟπ
ΛσβΠϯɾൢച
w ઃఆͨ͠ൢചՁ֨ʹԠͯ͡จ͝ͱʹऩӹ͕ൃੜ
Slide 4
Slide 4 text
νʔϜߏ
w ϓϩμΫτϚωʔδϟʔ݉ΞϓϦέʔγϣϯΤϯδχΞ
w Πϯϑϥ݉ΞϓϦέʔγϣϯΤϯδχΞ
w σβΠφ
Slide 5
Slide 5 text
1E.ͱ։ൃऀ͕ಉҰਓͰ͋ΔϝϦοτ
w ҙࢥૄ௨ͷίετ͕େ෯ݮ
w Ϗδωεͱ։ൃͱͰೝࣝͷҧ͍ͱ͍͏ͷ͕جຊతʹൃੜ͠ͳ
͍
Slide 6
Slide 6 text
ೝࣝҧ͍ͷൃੜͱ
w ྫ͑
w ϏδωεଆͷࢥʮͱΓ͋͑ͣ.71ͱͯ͠ϦϦʔεͯ͠ػೳͱͯ͠ඞཁ͔֬
ೝ͍ͨ͠ʯ
w ։ൃଆͷࢥʮͱ͘ʹԿݴΘΕͯͳ͍͠ɺ࡞ΓࠐΜͰ͠·͍͍ͬͯΜͩΖ
͏ʯ
w Ϗδωεͱ։ൃͷརͷෆҰகͱ͔͋Δ
w Ϗδωεച্ϦϦʔεεϐʔυΛؾʹ͢Δ͕ɺ։ൃଆকདྷతʹࣗୡ
͕ۤ࿑͠ͳ͍͔Ͳ͏͔Λؾʹ͢Δ
w ։ൃʮԾઆݕূ͕͏·͍ͬͨ͘Β࡞Γͳ͓࣌ؒ͢Λ࡞Δ͘ΕΔͱݴ͚ͬͨͲ
͍ͭ͘Εͳ͍Μ͚ʜʯ
w ҆શࡦͰෛ࠴Λ࡞Γ͜·ͳ͍ํΛͱΓ͕ͪ
Slide 7
Slide 7 text
ಉҰਓͷ߹
w ෛ࠴ΛੵΉͱͯ͠ͲΕ͙Β͍ۤ࿑ͦ͠͏͔ɺϏδωεతʹ
ࠓޙͲ͏͍ͨ͠ͷ͔͕ࣗΘ͔͍ͬͯΔͷͰஅ͕ϥΫ
w ۤ࿑͢ΔͷࣗͳͷͰɺͦ͜ΒΜʹର͢Δؾෛ͍͋·
Γͳ͍
Slide 8
Slide 8 text
ͱ͍͑ʜ
w ΓϢʔβʔͷߦಈ͕ࣗͱఆ͠ͳ͍ͷͩͬͨΓ͢Δ
ͷͰɺ༧ఆ֎ͷ༷มߋ͕ൃੜ͢Δ
w 45&&34ͷ߹ɺ࠷ॳγϯϓϧʹճͷจͰͻͱͭͷαΠ
ζ͔͠ങ͑ͳ͔ͬͨ
w ࣗͷΛങ͏ʹࣗͷαΠζ͚ͩങ͑ΕΑ͍ͱࢥͬ
ͨ
w ͚ͩͲఆ֎ʹෳαΠζΛങ͍͍ͨਓ͕ଟ͔ͬͨ
w ͳΔ΄ͲͶ͍ͬͯ͏͜ͱͰ%#ͷߏΛม͑ͯෳαΠζߪೖ
ͷϦϦʔεΛߦͬͨ
Slide 9
Slide 9 text
ͭ·Γʜ
w ߟ͑Δਓͱ࡞Δਓ͕ಉ͡ͰϢʔβʔ͕͍ΔҎ্ͯ͢εϜʔ
ζʹߦ͘Θ͚Ͱͳ͍
w ࣗͻͱΓͩͱͦ͜ΒΜͷ༷มߋͷཧ༝ͱ͔ٕज़తͳΉͣ
͔͠͞Θ͔ΔͷͰೲಘײ͕͋Δ
w ෳਓͷ߹ɺཧ༝͕։ൃʹΘΒ༷ͣมߋͷࢦ͚ࣔͩΘ
Δͱඃऀతͳؾ࣋ͪʹͳΓ͕ͪ
w ͦ͜ΒΜͷίϛϡχέʔγϣϯ͕͏·͍͔͘ͳ͍ͱۭؾΘ
Δ͘ͳΓ͕ͪ
w ͜ͷลΓʹରͯࣗ͠ಛʹ͑Λ͍࣋ͬͯΔΘ͚Ͱͳ͍
͚Ͳɺҙ͓ࣝͯ͘͠ͱΑͦ͞͏
Slide 10
Slide 10 text
3BJMTͷ
w 3BJMT%FWFMPQFST.FFUVQͳͷͰ։ൃଆͷΛ
w ͋·ΓίΞٕज़తͳ͕͋ΔΘ͚Ͱͳ͍ͷͰτϐοΫগ
͠ࢄؾຯʹͳΔ͔
w ಛผͳʹ͔͍͜͠ͱΛ͍ͯ͠ΔΘ͚͡Όͳ͍ͷͰɺ͋Δҙ
ຯۙͳʹͳΔͱࢥ͏
Slide 11
Slide 11 text
։ൃʹ͓͍ͯߟ͍͑ͯͨ͜ͱ
w ࣭ͱεϐʔυͷόϥϯεΛऔΓ͍ͨͱߟ͍͑ͯͨ
w εϐʔυॏࢹ͗ͣ͢͠ɺ ࣗʹͱͬͯ
͋ͨΓ·͑ͷ͜ͱ
͋ͨΓ·͑ʹͪΌΜͱΔ
w ػೳݸผͷઃܭ͋Δఔͬ͘͟ΓͰ0,ɻ࣍ΠδΔػձ͕
͋Εͦͷ࣌ʹ͢
w ٯʹશମͷઃܭํͳΔ͘ߟ͓͖͔͑ͯͨͬͨ
Slide 12
Slide 12 text
σʔλϕʔεઃܭ
w ͪΌΜͱਖ਼نԽͱ֎෦ΩʔΛΔ
w σʔλϕʔεͱσʔλͷෛ࠴ղফ͢Δͷ͕େมͳͷͰ࠷
ݶ͜Ε͙Β͍Δ
w ͍Βͳ͍ςʔϒϧΓ͍ͨ͜ͱͱ߹Θͳ͍ઃܭʹͳͬͨΒ
ͪΌΜͱ͢
w ΞΫηε͕ଟ͘ͳ͚Εมߋʹରͯͦ͜͠·ͰγϏΞʹ
ͳΔ͜ͱͳ͍
w ͦΕΑΓΑ͘Θ͔ΒΜઃܭͷςʔϒϧ͢ํ͕ࠔΔ
Slide 13
Slide 13 text
σʔλϕʔεͷ7JFX
w ਖ਼نԽ͍ͯ͘͠ͱ/ͷղফ+0*/ͷ͕ଟͯ͘3BJMT্ͷίʔ
υͷݟ௨͕͠ΘΔ͘ͳΔ͜ͱ͕͋Δ
w ͦͷͱ͖7JFXΛ༻ҙͯ͠ରॲ͢Δ
w IUUQTHJUIVCDPNUIPVHIUCPUTDFOJD
w 7JFXΛଟஈʹ͢Δͱ͋Δ7JFXͷߏΛม͍͑ͨͱ͖ʹ໘ʹͳ
ΔͷͰҙ
w ࣅͨཧ༝ͰΧϥϜՃ࣌ʹ͜·ΔͷͰ7JFXʹ࠷ݶͷΧϥϜ
Λࢦఆ͢Δ΄͏͕Α͍
w ΞϓϦଆͱ%#ଆʹϩδοΫ͕͔ΕΔͷͪΐͬͱΈͲ͜Ζ
Slide 14
Slide 14 text
ϚΠάϨʔγϣϯ
w εΩʔϚͷมߋͱσʔλͷೖͷཧΛΘ͚ΔΑ͏ʹͨ͠
w σʔλೖIUUQTHJUIVCDPNIBSSZTUFDI
TFFE@NJHSBUJPOͰ
w εΩʔϚͷมߋʹIUUQTHJUIVCDPNBOLBOF
TUSPOH@NJHSBUJPOTΛೖΕͯΈͨ
w ةݥͳ%#มߋʹରͯ͠ܯࠂΛग़͢
w ৭ʑษڧʹͳ͚ͬͨͲɺࠓճෆཁ͔ͩͬͨͳͱࢥ͏
Slide 15
Slide 15 text
αʔϏεϨΠϠ
w αʔϏεϨΠϠѱ͘ͳ͍͕ɺಋೖॳͷαʔϏεϨΠϠʹ
ର͢ΔෆษڧͰඍົͳײ͡ʹ
w "3ͷΠϯελϯεΛෳ͏Α͏ͳॲཧαʔϏεϨΠ
ϠΈ͍ͨʹͯͨ͠
Slide 16
Slide 16 text
ߪೖॲཧ·ΘΓΛαʔϏεΫϥεʹ
w ߪೖॲཧΔ͜ͱ͕ͨ͘͞Μ
w ΫϨΧͷܾࡁॲཧɺจใͷӬଓԽɺϢʔβʔͷϝʔϧ
௨ͳͲͳͲʜ
w ѻ͏Ϟσϧ͕ଟ͍͠ɺΔ͜ͱଟ͍ͷͰɺͦΕΛ·Δͬͱ
αʔϏεΫϥε
w ॳίʔυ͕खଓ͖తʹࣗવͱͳΔͷͰͦΕͦΕͰϝϦο
τ͕͋ͬͨ
w ίʔυΛ࠶ར༻͢Δͱͳͬͨͱ͖ʹ͍·Θ͕͠Ͱ͖ͣʹࠔ
ΔΊʹʜ
Slide 17
Slide 17 text
Ͳ͏͢ΕΑ͔ͬͨͷ͔
w αʔϏεϨΠϠग़དྷΔݶΓബ͘͢Δ
w ͦ͏͢Δͱ3BJMTͷ߹ɺίϯτϩʔϥʔʹॻ͚͍͍ͬ
͍ͯ͏ͷଟʑ͋Δ
w υϝΠϯϞσϧͷઃܭྗΛ͑Δ
Slide 18
Slide 18 text
ϑΥʔϜΫϥε
w ਖ਼نԽ͢Δͱେମʹ͓͍ͯϑΥʔϜͱϞσϧ͕ʹͳΒͳ͍
w ϑΥʔϜ͝ͱʹϑΥʔϜΫϥεΛ࡞Δͷ͕݁ہϥΫ
w ࣮IUUQUFDINFEQFFSDPKQFOUSZ
Λࢀߟʹ͢Εେମ0,
Slide 19
Slide 19 text
όϦσʔγϣϯΛͲ͜Ͱߦ͏͔
w ͋ͱ͔ΒϑΥʔϜΫϥεΛಋೖͨ͠ͷͰॳϞσϧʹόϦ
σʔγϣϯ͕͋ͬͨ
w ϑΥʔϜΫϥεͷόϦσʔγϣϯΛϞσϧͷΠϯελϯ
εʹͯ͠ϞσϧͰߦ͏
Slide 20
Slide 20 text
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
όϦσʔγϣϯΛͲ͜Ͱߦ͏͔
Slide 21
Slide 21 text
ϑΥʔϜΫϥεʹॻ͘ํʹγϑτ
w ਓগͳ͍ͷͰϞσϧݺΜͰόϦσʔγϣϯ͞ΕͣࣄނΔ
ͱ͍͏ͷগͳ͍
w ϑΥʔϜ࣮͢Δͱ͖ʹϑΥʔϜ୯ҐͰόϦσʔγϣϯߟ͑Δํ
͕ͳΜ͔ϥΫ
w ϞσϧͰόϦσʔγϣϯ͢ΔͱࠔΔέʔε͋Δ
w ಛఆΧϥϜଞͷΧϥϜಉ࢜ͷܭࢉʹΑͬͯຒΊΒΕΔ߹
w όϦσʔγϣϯ࣌ʹܭࢉ͢ΔίετΛࢧ͏ඞཁ͕͋Δ
w ·ͨϑΥʔϜͷΛόϦσʔγϣϯ͍ͨ͠ͷͰϑΥʔϜͰͦ
͜Λ͋·Γؾʹͨ͘͠ͳ͍
Slide 22
Slide 22 text
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
Slide 23
Slide 23 text
ϑΥʔϜΫϥεʹॻ͘ํʹγϑτ
w ͱ͍͑ΓϞσϧʹόϦσʔγϣϯ͕ͳ͍ͷʜ
w ͋ͱࣅͨΑ͏ͳϑΥʔϜͰࣅͨΑ͏ͳόϦσʔγϣϯΛॻ͘
͜ͱଟʑ
w όϦσʔγϣϯΛ͍͍ײ͡ʹ·ͱΊͨϞδϡʔϧΛ࡞Δͱ
Α͍ͷ͔ͳʜ
Slide 24
Slide 24 text
·ͱΊ
w ϓϩμΫτϚωʔδϟʔͱ։ൃऀͷҙࢥૄ௨େࣄͩΑ
w ͏ͪͷ߹݉Ͱͦ͜εΩοϓ͚ͨ͠Ͳɺݱ࣮ͦΕΛଓ
͚͍ͯ͘ͷͳ͔ͳ͔͍͠
w 3BJMT։ൃʹ͓͍ͯେ·͔ͳݪଇΛक͍ͬͯ͘ͷ͕جຊ
w ݪଇʹ͍ͭͯษڧ͠Α͏
w ҙਤతʹखΛൈ͘ͱ͔Ͱͳ͍ݶΓɺ্ݶ͕ࣗͷ࣮ྗͰܾ·Δ
w ͱݴ࣮͑Ϩϕϧͩͱܾ·Γख͕ͳ͍͜ͱଟ͍
w ͦͷลͷࢼߦࡨޡڪΕͳ͍