Slide 1

Slide 1 text

3FBDUJWF$PDPBͰ࡞Δ շదͳొ࿥ϑΥʔϜ גࣜձࣾ'BCMJD TIPCZ

Slide 2

Slide 2 text

ࣗݾ঺հ

Slide 3

Slide 3 text

ࣗݾ঺հ w TIPCZ w 'BCMJD JOD w J043VCZPO3BJMTը૾ॲཧ w ϝϩϯ೶Ոͷଉࢠ

Slide 4

Slide 4 text

֓ཁ

Slide 5

Slide 5 text

֓ཁ w շదͳొ࿥ϑΥʔϜͱ͸ w ೖྗ஋ͷϦΞϧλΠϜόϦσʔγϣϯ w 3FBDUJWF$PDPBʹΑΔ5FYUมԽͷݕ஌ w TUSVDUʹΑΔΤϥʔͷදݱ w ϑϦϧͰͷվળͷ݁Ռ

Slide 6

Slide 6 text

շదͳొ࿥ϑΥʔϜͱ͸

Slide 7

Slide 7 text

շదͳొ࿥ϑΥʔϜͱ͸ w গͳ͍ೖྗͰࡁΉ w ༣ศ൪߸͔ΒॅॴΛิ׬ w ೖྗܗ͕ࣜ෼͔Δ w 6*1JDLFS7JFX6*%BUF1JDLFS w ,FZCPBSE5ZQF w ೖྗ஋͕ϦΞϧλΠϜͰνΣοΫ͞ΕΔ

Slide 8

Slide 8 text

շదͳొ࿥ϑΥʔϜͱ͸ w গͳ͍ೖྗͰࡁΉ w ༣ศ൪߸͔ΒॅॴΛิ׬ w ೖྗܗ͕ࣜ෼͔Δ w 6*1JDLFS7JFX6*%BUF1JDLFS w ,FZCPBSE5ZQF w ೖྗ஋͕ϦΞϧλΠϜͰνΣοΫ͞ΕΔ

Slide 9

Slide 9 text

5FYU'JFMEͷ ϦΞϧλΠϜόϦσʔγϣϯ

Slide 10

Slide 10 text

5FYU'JFMEͷϦΞϧλΠϜόϦσʔγϣϯ w ঢ়ଶ͸ҎԼͷͭ w ະೖྗʢ1MBDF)PMEFSΛදࣔ͢Δʣ w ೖྗதʢԿ΋දࣔ͠ͳ͍ʣ w 0,ʢ✅Λදࣔʣ w Τϥʔʢ⚠Λදࣔʣ w 5FYUͷมԽͱɺೖྗ׬ྃͰόϦσʔγϣϯ

Slide 11

Slide 11 text

5FYU'JFMEͷϦΞϧλΠϜόϦσʔγϣϯ ະೖྗ ೖྗத Τϥʔ ⚠ 0, ✅ ೖྗ։࢝ 5FYUͷมԽ ೖྗ։࢝ όϦσʔγϣϯ Τϥʔ ਖ਼ৗʹ׬ྃ 5FYUͷมԽ

Slide 12

Slide 12 text

5FYU'JFMEͷϦΞϧλΠϜόϦσʔγϣϯ w ೖྗऴྃˠUFYU'JFME%JE&OE&EJUJOH w 5FYUͷมԽˠ3FBDUJWF$PDPB w UFYU'JFMETIPVME$IBOHF$IBSBDUFST*O3BOHFSFQMB DFNFOU4USJOHͰϋϯυϦϯά͸͠ΜͲ͍

Slide 13

Slide 13 text

3FBDUJWF$PDPBʹΑΔ 5FYUมԽͷݕ஌

Slide 14

Slide 14 text

3FBDUJWF$PDPBʹΑΔ5FYUมԽͷݕ஌ var disposables: [Disposable] = [] textFields.forEach { textField in let disposable = textField.rac_textSignal().toSignalProducer().skip(1).startWithNext { text in do { try self.validate(text: text, textField: textField) } catch let error { // ΤϥʔϋϯυϦϯά } } disposables.append(disposable) }

Slide 15

Slide 15 text

3FBDUJWF$PDPBʹΑΔ5FYUมԽͷݕ஌ var disposables: [Disposable] = [] textFields.forEach { textField in let disposable = textField.rac_textSignal().toSignalProducer().skip(1).startWithNext { text in do { try self.validate(text: text, textField: textField) } catch let error { // ΤϥʔϋϯυϦϯά } } disposables.append(disposable) } ॳճͷTJHOBMΛແࢹ͢Δ͜ͱͰ ະೖྗͱೖྗதΛ۠ผ

Slide 16

Slide 16 text

TUSVDUʹΑΔΤϥʔͷදݱ

Slide 17

Slide 17 text

TUSVDUʹΑΔΤϥʔͷදݱ w &SSPS5ZQF͸1SPUPDPMͳͷͰTUSVDUͰ΋0, w DMBTT΋࢖͑Δ w όϦσʔγϣϯΤϥʔʹ͸TUSVDU͕ศར w ΤϥʔͷछྨΛ۠ผ͢Δඞཁ͕ͳ͍ w Τϥʔϝοηʔδͱ෇Ճ৘ใ͚ͩ

Slide 18

Slide 18 text

TUSVDUʹΑΔΤϥʔͷදݱ struct ValidationError: ErrorType { let message: String let showWhileEditing: Bool } ϝοηʔδͱ ฤूத΋දࣔ͢Δ͔Ͳ͏͔ͷϑϥάͷΈ

Slide 19

Slide 19 text

ϑϦϧͰͷվળͷ݁Ռ

Slide 20

Slide 20 text

Slide 21

Slide 21 text

ϑϦϧͰͷվળͷ݁Ռ w ΞΧ΢ϯτొ࿥཰͕Ξοϓ

Slide 22

Slide 22 text

·ͱΊ

Slide 23

Slide 23 text

·ͱΊ w গͳ͍ೖྗͰࡁΈɺೖྗܗ͕ࣜ෼͔ΓɺϦΞ ϧλΠϜͰνΣοΫ͞ΕΔϑΥʔϜ͸շద w ϦΞϧλΠϜνΣοΫʹ͸5FYUͷมԽͱೖྗ ׬ྃͷλΠϛϯάͰόϦσʔγϣϯ͢Δ w 3FBDUJWF$PDPBΛ࢖͏ͱ5FYUมԽͷݕ஌ָ͕ w όϦσʔγϣϯΤϥʔ͸TUSVDUΛ࢖͏ͱྑ͍ w ϑϦϧͷ৔߹ɺొ࿥ϑΥʔϜվળͰొ࿥཰͕ ্͕ͬͨ