Slide 1

Slide 1 text

ϑϩϯτΤϯυ όϦσʔγϣϯ Seiya Izumi (@sy_izumi)

Slide 2

Slide 2 text

ϑϩϯτΤϯυͰόϦσʔγϣ ϯ͠Α͏ʂ

Slide 3

Slide 3 text

Vue.jsΛ࢖͍ͬͯΔͷͰ vue-validator࢖͏Αʂ (Vue.js༻ͷศརͳϑΥʔϜόϦσʔγϣϯɾϞδϡʔϧ)

Slide 4

Slide 4 text

aaaa ʢ͜Μͳײ͡ʹ͔͚Δʂʣ

Slide 5

Slide 5 text

Θʙ͍

Slide 6

Slide 6 text

ͦΕͰ͍͍ͷ͔

Slide 7

Slide 7 text

όϦσʔγϣϯͱ͍͏੹຿ • ΞϓϦέʔγϣϯʹ͓͍ͯɺৗʹόϦσʔγϣ ϯ͕ϏϡʔϨΠϠͷ੹຿ͳͷ͔ͱ͍͏͜ͱΛ ߟ͑Δ • ΞϓϦέʔγϣϯΛෳ਺ͷϨΠϠʹ෼͚ʢϨ ΠϠʔυɾΞʔΩςΫνϟʣɺͦͷதͰద੾ ͳϨΠϠʹ੹຿Λ࣋ͨͤΔ

Slide 8

Slide 8 text

ϨΠϠʔυɾΞʔΩςΫνϟ https://dzone.com/articles/layered-architecture-is-good ʢ஫: υϝΠϯ͸લఏͱͯ͠ΠϯϑϥɾϨΠϠ΍ͦͷଞԿʹ΋ґଘ͠ͳ͍ʣ

Slide 9

Slide 9 text

ϞσϧΛҙࣝ͢Δ • ϑϩϯτΤϯυɾΞϓϦέʔγϣϯͰ΋ʮϞ σϧʯΛݟ͚ͭΔɻ • View/ViewModelʹϩδοΫ͕ภΓ͕ͪʹͳ Δͷ͸੹຿ΛϏϡʔίϯϙʔωϯτத৺ʹߟ ͍͑ͯΔՄೳੑ͕ߴ͍ • ͋͘·Ͱ V=Component(State(Model))

Slide 10

Slide 10 text

υϝΠϯͱόϦσʔγϣϯ Ex)ʮબ୒Ͱ͖Δಉ͡঎඼͸3ͭ·Ͱʯ
 Ex)ʮ૯ֹ͕3000ԁҎ্ʹͳΔΑ͏બ୒ඞਢʯ • ΞϓϦέʔγϣϯͷϏδωεݻ༗ͷࣄ৘ʹΑͬ ͯੜ·ΕΔόϦσʔγϣϯɾϩδοΫ͸υϝΠ ϯͷ੹຿ • Ϗδωεݻ༗ͷϩδοΫ͕Ϗϡʔʹ͋Δ͜ͱʹ Αͬͯ੹຿෼ׂ͕ഁ୼͠΍͘͢ͳΔ

Slide 11

Slide 11 text

Ͱ΋ࣗ෼ͰόϦσʔγϣϯ ࣮૷͢Δͷ͸େม

Slide 12

Slide 12 text

ͦ͜Ͱʂ

Slide 13

Slide 13 text

validatable-record Immutable#Record + validate.js = validatable-record

Slide 14

Slide 14 text

Immutable#Record const Man = new Record({ name: null, age: null }); const man = new Man({ name: "Justine", age: 10 }); man.get("name") // "Justine" man.get("age") // 10 man.age = 20 // Here raises an error Ϟσϧߏ଄Λ࡞ΔͷʹΑ͘࢖ΘΕΔImmutable#Record

Slide 15

Slide 15 text

validatable-record const hello = 100 console.log("hello world"); • const ValidatableMan = ValidatableRecord({ name: null, age: null }, { name: { presence: true }, age: { presence: { message: "is invalid" } } }); ValidatableRecordΛImmutable#Recordͷ୅ΘΓʹ࢖༻

Slide 16

Slide 16 text

class Man extends ValidatableMan { ... } const man = new Man({ name: "Michael", age: "55" }); man.validate() // == true man.get("name") // "Michael" man.get("age") // 55 validatable-record validateϝιου͕ϝϯόͱͯ͠࢖͑ΔΑ͏ʹͳΔɻ

Slide 17

Slide 17 text

class Man extends ValidatableMan { ... } const agelessMan = new Man({ name: "Michael", }); agelessMan.validate() // == false agelessMan.getErrors() // == [ "Age is invalid" ] validatable-record getErrorsΛ࢖͏͜ͱͰόϦσʔγϣϯΤϥʔΛऔಘͰ͖Δ

Slide 18

Slide 18 text

ϞσϧͰͷόϦσʔγϣϯ͕ ָʹͳΔ͔΋ʢʁʣ

Slide 19

Slide 19 text

͕͔ͩ͠͠ • ͔ͳΒͣ͠΋ϏϡʔϨΠϠͰͷόϦσʔγϣ ϯʹѱͰ͸ͳ͍ɻ • ͲͷϨΠϠ͕Կͷ੹຿Λ୲͏͔ͱ͍͏໰୊͸ νʔϜຖͷϓϥΫςΟεΛ࡞Δͷ͕࠷΋ྑ͍ • validatable-record͸ͻͱͭͷΞϓϩʔν☝

Slide 20

Slide 20 text

Happy Hacking!