Slide 1

Slide 1 text

ͻΊ͠ʢ"LJNV)JSBJʣ -*/&גࣜձࣾ େن໛ΞϓϦʹ͓͍ͯσόΠε্ͷ ϢʔβσʔλΛ҆શʹ҉߸Խ͢Δ !J04%$ 1

Slide 2

Slide 2 text

͸͡Ίʹ w Ϣʔβͷσʔλอޢʹର͢Δػӡ͕·͢·͢ߴ·ΔதɺσόΠεʹอଘ͞ΕͨϢʔ βͷσʔλΛ҉߸Խ͢Δ͜ͱ͸ॏཁͰ͋Δɻ w J04ͷσʔλӬଓԽखஈͷ͏ͪɺ6TFS%FGBVMUTͱ$PSF%BUB͸σόΠε্ͷσ ʔλͷ҉߸Խ͕ߦΘΕ͍ͯͳ͍ɻͦ͜Ͱ-*/&"QQͰ͸ɺ͜ΕΒͷετϨʔδʹ อଘ͞ΕͨσʔλΛಠࣗʹ҉߸Խ͢Δ͜ͱʹͳͬͨɻ w $PSF%BUBͷ҉߸Խʹ͍ͭͯ͸ɺӈͷ23ίʔυ͔Β -*/&%FWFMPQFS%BZͷൃදΛࢀর͞Ε͍ͨɻ w σʔλͷ҉߸Խʹ͋ͨͬͯ͸ɺ҉߸ԽͷಋೖʹΑͬͯϢʔβͷσʔλ͕ࣦΘΕΔࣄ ଶ͕ൃੜ͠ͳ͍Α͏ʹ͠ͳ͚Ε͹ͳΒͳ͍ɻ w ͦ͜ͰຊൃදͰ͸ɺσόΠε্ͷϢʔβσʔλʹ҉߸ԽΛ҆શʹಋೖ͢Δํ๏Λɺ 6TFS%FGBVMUTͷ҉߸ԽͷࣄྫΛ΋ͱʹઆ໌͢Δɻ 2

Slide 3

Slide 3 text

6TFS%FGBVMUTͷ҉߸Խख๏ ܰྔͳσʔλΛอଘ͢Δ,FZWBMVFετΞʹ͓͍ͯɺ҉߸Խ͕ඞཁͳ৔߹͸ ,FZDIBJOΛར༻͢Δͷ͕࠷ળखͰ͋ΔɻΑͬͯɺ6TFS%FGBVMUTͷσʔλΛ҉߸ Խ͢Δ࠷΋ख͔ܰͭ৴པͰ͖Δํ๏͸ɺ6TFS%FGBVMUTͷσʔλΛશͯ,FZDIBJO ʹҠߦ͢Δ͜ͱͰ͋Δɻ ͔͠͠ͳ͕Β,FZDIBJOͰ6TFS%FGBVMUTΛ୅༻͢ΔͱɺҎԼͷ໰୊͕ଘࡏ͢Δɻ w ΞϓϦΛ࡟আ͢Δͱ6TFS%FGBVMUTͷσʔλ͸࡟আ͞ΕΔ͕ɺ,FZDIBJOͷ σʔλ͸࢒Δɻ w ,FZDIBJO͔Βͷ஋ͷಡΈऔΓ͸6TFS%FGBVMUT͔Βͷ஋ͷಡΈऔΓʹൺ΂ഒ Ҏ্஗͍͜ͱ͕͋ΓɺύϑΥʔϚϯε΁ͷӨڹ͕ݒ೦͞ΕΔɻ Ҏ্ͷഎܠ͔Β6TFS%FGBVMUTͷ҉߸ԽΛߦ͏ʹ͋ͨͬͯɺ-*/&ΞϓϦͰ͸શͯͷ σʔλΛ,FZDIBJOʹҠ͢ͷͰ͸ͳ͘ɺσʔλࣗମ͸6TFS%FGBVMUTʹอଘ͠ͳ ͕Β҉߸ԽΛߦ͏͜ͱͱͨ͠ɻ 3

Slide 4

Slide 4 text

6TFS%FGBVMUT҉߸Խͷجຊํ਑ 4 ,FZDIBJO 6TFS%FGBVMUT $SZQUP,JU $SZQUP,JU ᶃ҉߸ݤΛऔಘ ᶄ҉߸Խ͞Εͨ ஋Λऔಘ ᶅ6TFS%FGBVMUTͷ஋Λ ,FZDIBJOͷݤͰ෮߸ͯ͠ར༻ ஋Λ6TFS%FGBVMUT͔ΒಡΈऔΔͱ͖ ஋Λ6TFS%FGBVMUTʹॻ͖ࠐΉͱ͖ ᶃ҉߸ݤΛऔಘ ᶅ҉߸Խ͞Εͨ ஋Λ֨ೲ ᶄ6TFS%FBGVMUTʹॻ͖ࠐΉ஋Λ ,FZDIBJOͷݤͰ҉߸Խ w $SZQUP,JUʹΑͬͯ஋Λ҉߸Խͯ͠6TFS%FGBVMUTʹอଘ͢Δɻ w ҉߸ݤ͸,FZDIBJOʹอଘ͢Δɻ w 6TFS%FGBVMUT΁ͷΞΫηε͸ɺ ӈͷΑ͏ʹQSPQFSUZXSBQQFSΛ༻͍ͯߦ͏ɻ @UserDefault(key: "MyValue") static var myValue: String? print(myValue) myValue = "iOSDC 2023" "QQ "QQ

Slide 5

Slide 5 text

҉߸Խͷಋೖʹ͓͚Δݒ೦ࣄ߲ ҉߸ԽͷಋೖʹΑͬͯ6TFS%FGBVMUT͕ར༻ෆೳʹͳΔ͜ͱ͸ආ͚ͳ͚Ε͹ͳΒͳ͍ɻ ্هͷߏ੒Ͱ6TFS%FGBVMUT͕ར༻ෆೳʹͳΔέʔεͱͯ͠ɺҎԼ͕ߟ͑ΒΕΔɻ ,FZDIBJO͔Β҉߸ݤͷऔಘʹࣦഊ͢ΔέʔεʢಡΈऔΓɺॻ͖ࠐΈखॱͷᶃʣ $SZQUP,JUΛ༻͍ͨ஋ͷ҉߸Խʹࣦഊ͢Δέʔεʢॻ͖ࠐΈखॱͷᶄʣ $SZQUP,JUΛ༻͍ͨ஋ͷ෮߸ʹࣦഊ͢ΔέʔεʢಡΈऔΓखॱͷᶅʣ ຊ൪؀ڥԼͰ࣮ࡍʹ͜ΕΒͷΤϥʔ͕ൃੜ͢Δ͜ͱ͕ͳ͍͔Λ֬ೝ͢Δඞཁ͕͋Δɻ ͦ͜Ͱɺฏจ6TFS%FGBVMUTΛআڈ͢Δલʹ҉߸6TFS%FGBVMUT͕ৗʹػೳ͢Δ͔ຊ൪ ؀ڥͰݕূ͢Δ͜ͱʹͨ͠ɻ 5

Slide 6

Slide 6 text

Ҡߦɾݕূ༻ͷߏ੒ʢσʔλͷಡΈऔΓʣ 6 ,FZDIBJO ҉߸6TFS%FGBVMUT $SZQUP,JU ᶃ҉߸ݤΛऔಘ ᶄ҉߸Խ͞Εͨ஋Λ औಘ ᶅऔಘ͞Εͨ҉߸஋ͷෳ߸ΛࢼΈΔ ஋Λ6TFS%FGBVMUT͔ΒಡΈऔΔͱ͖ ฏจ6TFS%FGBVMUT ᶆฏจͷ஋Λऔಘ͢Δ ᶇฏจͷ஋Λ҉߸Խͯ֨͠ೲ w ฏจ6TFS%FGBVMUTͱ҉߸6TFS%FGBVMUTΛซ༻͢Δɻ w σʔλͷಡΈऔΓ࣌͸ɺ·ͣ҉߸6TFS%FGBVMUT͔Β஋ΛऔΓग़͢ʢਤதᶃᶅʣɻ w ҉߸6TFS%FGBVMUT͔Β஋ͷऔΓग़͠ʹࣦഊͨ࣌͠͸ɺ ฏจ6TFS%FGBVMUT͔Β஋Λऔಘ͢Δʢਤதᶆʣɻ w ҰؾʹσʔλΛ҉߸6TFS%FGBVMUTʹҠߦ͢ΔͷͰ͸ͳ͘ɺฏจ6TFS%FGBVMUT͔Β ஋͕औಘ͞Εͨࡍʹ҉߸6TFS%FGBVMUTʹ஋Λෳ੡͢Δʢਤதᶇʣɻ "QQ

Slide 7

Slide 7 text

Ҡߦɾݕূ༻ͷߏ੒ʢσʔλͷॻ͖ࠐΈʣ 7 ,FZDIBJO ҉߸6TFS%FGBVMUT $SZQUP,JU ᶃ҉߸ݤΛऔಘ ᶄॻ͖ࠐΉ஋Λ ,FZDIBJOͷݤͰ҉߸Խ ฏจ6TFS%FGBVMUT ᶆฏจͷ஋Λอଘ͢Δ ᶅ҉߸Խ͞Εͨ஋Λอଘ͢Δ w ৗʹɺฏจ6TFS%FGBVMUTͱ҉߸6TFS%FGBVMUT྆ํʹ৽͍͠஋Λॻ͖ࠐΉɻ ஋Λ6TFS%FGBVMUTʹॻ͖ࠐΉͱ͖ "QQ

Slide 8

Slide 8 text

σʔλܕͷઃܭ /// ฏจUserDefaultsʹͦͷ··อଘͰ͖ΔܕΛද͢ϓϩτίϧ public protocol UserDefaultRawType {} /// `Data` ܕͱ૬ޓม׵͢ΔͨΊͷϓϩτίϧɻ஋Λ҉߸Խ͢ΔͨΊʹඞཁɻ public protocol DataConvertible { init?(data: Data) var data: Data { get } } /// ฏจUserDefaults͓Αͼ҉߸UserDefaultsʹ஋ΛอଘͰ͖ΔܕΛද͢ϓϩτίϧ public protocol UserDefaultConvertible: DataConvertible { /// ฏจUserDefaultsʹ஋Λอଘ͢Δࡍʹ༻͍Δܕ associatedtype UserDefaultValue: UserDefaultRawType init?(userDefaultValue: UserDefaultValue) var userDefaultValue: UserDefaultValue? { get } } ஋Λ҉߸Խ͢Δࡍʹɺ$SZQUP,JUʹ౉͢஋͸%BUBܕͰͳ͚Ε͹ͳΒͳ͍ɻ ฏจ6TFS%FGBVMUT͓Αͼ҉߸6TFS%FGBVMUTʹ஋ͷอଘ͕ՄೳͳܕΛදͨ͢Ίʹɺ ԼهͷΑ͏ͳܕΛઃܭͨ͠ɻ6TFS%FGBVMUTʹ஋Λอଘ͢ΔͨΊʹ͸ɺ஋ͷܕ͕ UserDefaultConvertibleʹ४ڌ͢Δ͜ͱ͕ඞཁͰ͋Δɻ 8

Slide 9

Slide 9 text

6TFS%FGBVMUT҉߸Խͷಋೖखॱ ͜͜·Ͱʹड़΂ͨߏ੒Λ༻͍ͯɺ-*/&"QQͰ͸࣍ͷΑ͏ʹ6TFS%FGBVMUTͷ҉߸ԽΛ ಋೖ͍ͯ͠Δɻ ฏจ6TFS%FGBVMUTΛซ༻ͨ͠҉߸6TFS%FGBVMUTͷద༻Λ։࢝͢Δɻ ҉߸6TFS%FGBVMUTͷಡΈॻ͖Ͱൃੜͨ͠ΤϥʔΛऩूɺ෼ੳ͠ɺ໰୊Λղܾ͢Δɻ ίʔυʹ͓͍ͯΞϓϦதͷ6TFS%FGBVMUT΁ͷΞΫηε͕શͯ҉߸6TFS%FGBVMUTΛ ܦ༝͢ΔΑ͏ʹͳͬͨ͜ͱΛ֬ೝ͢Δɻ ฏจ6TFS%FGBVMUTͷ஋Λશͯ҉߸6TFS%FGBVMUTʹෳ੡͠ɺฏจ6TFS%FGBVMUTΛ ࡟আ͢Δɻ 9

Slide 10

Slide 10 text

·ͱΊ w Ϣʔβσʔλͷอޢͷॏཁੑͷߴ·Δதɺ6TFS%FGBVMUTΛ͸͡Ίͱ͢Δ୺຤্ͷ σʔλετΞΛ҉߸Խ͢Δ͜ͱ͸ॏཁͰ͋ΔɻͦͷҰํͰɺ҉߸Խͷಋೖաఔʹ ͓͍ͯϢʔβσʔλ͕ࣦΘΕΔࣄଶΛىͯ͜͠͸ͳΒͳ͍ɻ w ҉߸ԽʹΑͬͯ໰୊͕Ҿ͖ى͜͞Εͳ͍͜ͱΛ֬ೝ͢ΔͨΊʹɺ࣮ࡍʹ҉߸ԽΛಋ ೖ͠ɺ҉߸Խ͞ΕͨετΞʹ͓͍ͯϢʔβσʔλ͕ར༻ෆೳʹͳΔঢ়گ͕ͳ͍͜ͱ Λຊ൪؀ڥʹ͓͍ͯ֬ೝ͢Δඞཁ͕͋Δɻ w ͦ͜ͰɺฏจετΞͱ҉߸Խ͞ΕͨετΞΛซ༻͠ɺ҉߸ετΞͷՄ༻ੑΛݕূ͢ Δɻ҉߸ετΞͷݕূத͸ɺฏจετΞͱ҉߸ετΞ྆ํʹॻ͖ࠐΈΛߦ͏ɻ ಡΈࠐΈ͸҉߸ετΞΛओͱͯ͠༻͍Δɻ w ҉߸ετΞͷՄ༻ੑΛे෼ʹݕূͨ͠ͷͪʹฏจετΞΛআڈ͢Δ͜ͱͰɺ҆શʹ ୺຤্ͷετΞͷ҉߸ԽΛ࣮ݱͰ͖Δɻ 10