Slide 1

Slide 1 text

Codable͜ͱ͸͡Ί by. 2017/6/16 Otemachi.swift #01 1

Slide 2

Slide 2 text

takasek iOS Developer ϑϦʔϥϯε(΄΅FiNC) @takasek OSS ActionClosurable Notifwift౳ 2

Slide 3

Slide 3 text

Codable introduced in WWDC2017 https://developer.apple.com/videos/play/wwdc2017/212/ 3

Slide 4

Slide 4 text

Codable͸ϞςϞς ֤ॴWWDCৼΓฦΓձͰɺ୞ࠓ3೔࿈ଓͷϐοΫΞοϓه࿥थཱத 6/14 AKIBA.swift / by fromkkɹ6/15 eureka Meetup / by Muukii ɹ!ͬ͘͟Γ֓ཁ௫ΊΔࢿྉɹɹ!DecodingErrorʹ͍ͭͯৄ͍͠ 4

Slide 5

Slide 5 text

վ୊ Codable͸Πέϝϯ by. 2017/6/16 Otemachi.swift #01 5

Slide 6

Slide 6 text

6

Slide 7

Slide 7 text

Codable ͷΠέϝϯϙΠϯτ 4 جຊతʹ࢖͍ํ͸ ܕʹ Codable Λ͚ͭΔ͚ͩʂ 4 ͚ͩͲCustomizable 4 ͲΜͳEncoder/Decoderʹରͯ͠΋ (JSON, Plist, ·ͩݟ͵something...)࠶ར༻Մೳ 7

Slide 8

Slide 8 text

ʲ༨ஊʳ Decoderͱ͍͑͹ ࣗ࡞ CSVDecoder ͷ࡞ྫ QiitaͰެ։ͯ͠·͢! 8

Slide 9

Slide 9 text

Ͳ͏customizableͳͷ͔ جຊɺίϯύΠϥ͕ܕͷϝϯόΛࣗಈੜ੒ ※protocol extensionΛར༻ͯ͠Δ = ࣮૷্ॻ͖Մೳ Ωʔ໊ΛΧελϜ͍ͨ͠ʂ ! CodingKeyΛࣗલ࣮૷ σίʔυϩδοΫΛΧελϜ͍ͨ͠ʂ ! initΛࣗલ࣮૷ 9

Slide 10

Slide 10 text

10

Slide 11

Slide 11 text

11

Slide 12

Slide 12 text

طଘͷSwiftͷ࢓૊ΈΛ ׆༻ͯ͠·͢Ͷʂ ͘ʙʙʙʙʙͬʂ Πέϝϯʂ! 12

Slide 13

Slide 13 text

·ͩ·ͩ͋Γ·͢ CodableͷΠέϝϯϙΠϯτ 13

Slide 14

Slide 14 text

͍͍ͩͨͷܕ͸Codable ͔ͩΒɺCodableͳܕͷू߹Ͱ͋Δ Ϣʔβʔఆٛܕ΋αΫοͱCodableΕΔ 14

Slide 15

Slide 15 text

classͷܧঝ΋ߟྀࡁ superdecoder ͰsuperclassΛσίʔυ 15

Slide 16

Slide 16 text

Date, Data ʹ͍ͭͯɺಈతʹ Encoding StrategiesΛܾΊΒΕΔ ʢ͜Ε͸JSONEncoder/Decoderͷ࿩͚ͩͲʣ 16

Slide 17

Slide 17 text

Codable Philosophy͸௒Πέϝϯ 4 Error handling built-in 4 ૊Έࠐ·ΕͨΤϥʔ੍ޚ 4 Encapsulate encoding details 4 ΤϯίʔσΟϯάͷৄࡉΛΧϓηϧԽ 4 Abstract format from type 4 ந৅Խ͞ΕͨϑΥʔϚοτ 17

Slide 18

Slide 18 text

Codable Philosophy͸௒Πέϝϯ 4 Error handling built-in 4 ૊Έࠐ·ΕͨΤϥʔ੍ޚ 4 Encapsulate encoding details 4 ΤϯίʔσΟϯάͷৄࡉΛΧϓηϧԽ 4 Abstract format from type 4 ந৅Խ͞ΕͨϑΥʔϚοτ 18

Slide 19

Slide 19 text

Error handling built-in ᶃ ৄࡉͳΤϥʔͰσίʔυ/Τϯίʔυͷࣦഊ Λڭ͑ͯ͘ΕΔ AppleͷϓϨθϯλʔ ʮ༧ظ͠ͳ͍input͸ɺAPIมߋͳͲͰ࣌ʹΑͬͯى͜ Γ͏ΔɻͳͷͰFatalErrorʹ͸͠ͳ͍͜ͱʹܾΊͨʯ Τϥʔͷৄࡉ͸ࡢ೔ͷMuukii͞Μͷࢿྉࢀর https://speakerdeck.com/muukii0803/ decodable-pairs-taiwan 19

Slide 20

Slide 20 text

Error handling built-in ᶄ SwiftͷܕγεςϜͰ͸දݱ͖͠Εͳ͍ υϝΠϯݻ༗ͷόϦσʔγϣϯΛ ΠχγϟϥΠζ࣌ʹ࣮ߦՄೳ 20

Slide 21

Slide 21 text

σίʔυͷϑΣʔζ 1. σίʔυ 4 όΠτσʔλ 4 ߏ଄Λ࣋ͭόΠτσʔλ (JSON౳) 4 ܕ෇͚͞Εͨσʔλ(Swift ͷܕ) 2. όϦσʔγϣϯ 4 Domain-specific validation 4 Graph-level validation 21

Slide 22

Slide 22 text

22

Slide 23

Slide 23 text

URLͷscheme͕ https Ͱ͋Δ͜ͱΛ ܕͱͯ͠ڧ੍Ͱ͖ͨʂ 23

Slide 24

Slide 24 text

Codable Philosophy 4 Error handling built-in 4 ૊Έࠐ·ΕͨΤϥʔ੍ޚ 4 Encapsulate encoding details 4 ΤϯίʔσΟϯάͷৄࡉΛΧϓηϧԽ 4 Abstract format from type 4 ந৅Խ͞ΕͨϑΥʔϚοτ 24

Slide 25

Slide 25 text

Protocol Orientedͳઃܭ͕Πέϝϯ 25

Slide 26

Slide 26 text

ͦΜͳϓϩτίϧઃܭͷΠέϝϯͬ΀Γ ΋ͬͱৄ͘͠ޠΓ͍ͨΜͰ͕͢… !" …·ͨผͷػձʹʂ 26