Slide 1

Slide 1 text

UDB@XBJXBJ!ZJNBKP 5$"ͷ 4IBSFE4UBUFͬͯ Ͳ͏͍͏࢓૊ΈʹͳͬͯΜͷʁ Wͷ4IBSFE4UBUF͸Ͳ͏΍ͬͯσʔλڞ༗Λ࣮ݱ͍ͯ͠Δͷ͔

Slide 2

Slide 2 text

@ObservableState struct State { @Shared(.appStorage(“count”)) var count: Int } @ObservableState struct State { @Shared(.inMemory(“text")) var text: String ɹ @Shared(.appStorage(“count”)) var count: Int } 5IF$PNQPTBCMF"SDIJUFDUVSF TIBSFETUBUFCFUB

Slide 3

Slide 3 text

@ObservableState struct State { @Shared(.appStorage(“count”)) var count: Int } @ObservableState struct State { @Shared(.inMemory(“text")) var text: String ɹ @Shared(.appStorage(“count”)) var count: Int } 5IF$PNQPTBCMF"SDIJUFDUVSF TIBSFETUBUFCFUB

Slide 4

Slide 4 text

@ObservableState struct State { @Shared(.appStorage(“count”)) var count: Int } @ObservableState struct State { @Shared(.inMemory(“text")) var text: String ɹ @Shared(.appStorage(“count”)) var count: Int } ˏPropertyWrapper struct Shared { let reference: any Reference public init( _ persistenceKey: some PersistenceKey, … ) { … @Dependency( PersistentReferencesKey.self ) var references … } … 5IF$PNQPTBCMF"SDIJUFDUVSF TIBSFETUBUFCFUB

Slide 5

Slide 5 text

@ObservableState struct State { @Shared(.appStorage(“count”)) var count: Int } @ObservableState struct State { @Shared(.inMemory(“text")) var text: String ɹ @Shared(.appStorage(“count”)) var count: Int } ˏPropertyWrapper struct Shared { let reference: any Reference public init( _ persistenceKey: some PersistenceKey, … ) { … @Dependency( PersistentReferencesKey.self ) var references … } … 5IF$PNQPTBCMF"SDIJUFDUVSF TIBSFETUBUFCFUB

Slide 6

Slide 6 text

@ObservableState struct State { @Shared(.appStorage(“count”)) var count: Int } @ObservableState struct State { @Shared(.inMemory(“text")) var text: String ɹ @Shared(.appStorage(“count”)) var count: Int } "OZ)BTIBCMF 3FGFSFODF JO.FNPSZ lUFYUz BQQ4UPSFHF lDPVOUz ࢀরڞ༗ LockIsolated<[AnyHashable: any Reference]> ˏPropertyWrapper struct Shared { let reference: any Reference public init( _ persistenceKey: some PersistenceKey, … ) { … @Dependency( PersistentReferencesKey.self ) var references … } … 5IF$PNQPTBCMF"SDIJUFDUVSF TIBSFETUBUFCFUB

Slide 7

Slide 7 text

@ObservableState struct State { @Shared(.appStorage(“count”)) var count: Int } @ObservableState struct State { @Shared(.inMemory(“text")) var text: String ɹ @Shared(.appStorage(“count”)) var count: Int } "OZ)BTIBCMF 3FGFSFODF JO.FNPSZ lUFYUz BQQ4UPSFHF lDPVOUz ࢀরڞ༗ LockIsolated<[AnyHashable: any Reference]> ˏPropertyWrapper struct Shared { let reference: any Reference public init( _ persistenceKey: some PersistenceKey, … ) { … @Dependency( PersistentReferencesKey.self ) var references … } … 5IF$PNQPTBCMF"SDIJUFDUVSF TIBSFETUBUFCFUB

Slide 8

Slide 8 text

@ObservableState struct State { @Shared(.appStorage(“count”)) var count: Int } @ObservableState struct State { @Shared(.inMemory(“text")) var text: String ɹ @Shared(.appStorage(“count”)) var count: Int } "OZ)BTIBCMF 3FGFSFODF JO.FNPSZ lUFYUz BQQ4UPSFHF lDPVOUz ࢀরڞ༗ LockIsolated<[AnyHashable: any Reference]> class ValueReference: Reference { var persistenceKey : (any PersistenceKey)? … } 0CTFSWBUJPO QFSDFQUJPO ˏPropertyWrapper struct Shared { let reference: any Reference public init( _ persistenceKey: some PersistenceKey, … ) { … @Dependency( PersistentReferencesKey.self ) var references … } … 5IF$PNQPTBCMF"SDIJUFDUVSF TIBSFETUBUFCFUB

Slide 9

Slide 9 text

@ObservableState struct State { @Shared(.appStorage(“count”)) var count: Int } @ObservableState struct State { @Shared(.inMemory(“text")) var text: String ɹ @Shared(.appStorage(“count”)) var count: Int } "OZ)BTIBCMF 3FGFSFODF JO.FNPSZ lUFYUz BQQ4UPSFHF lDPVOUz ࢀরڞ༗ LockIsolated<[AnyHashable: any Reference]> class ValueReference: Reference { var persistenceKey : (any PersistenceKey)? … } 0CTFSWBUJPO QFSDFQUJPO ˏPropertyWrapper struct Shared { let reference: any Reference public init( _ persistenceKey: some PersistenceKey, … ) { … @Dependency( PersistentReferencesKey.self ) var references … } … 5IF$PNQPTBCMF"SDIJUFDUVSF TIBSFETUBUFCFUB

Slide 10

Slide 10 text

@ObservableState struct State { @Shared(.appStorage(“count”)) var count: Int } @ObservableState struct State { @Shared(.inMemory(“text")) var text: String ɹ @Shared(.appStorage(“count”)) var count: Int } "OZ)BTIBCMF 3FGFSFODF JO.FNPSZ lUFYUz BQQ4UPSFHF lDPVOUz ࢀরڞ༗ LockIsolated<[AnyHashable: any Reference]> class ValueReference: Reference { var persistenceKey : (any PersistenceKey)? … } 0CTFSWBUJPO QFSDFQUJPO ˏPropertyWrapper struct Shared { let reference: any Reference public init( _ persistenceKey: some PersistenceKey, … ) { … @Dependency( PersistentReferencesKey.self ) var references … } … 5IF$PNQPTBCMF"SDIJUFDUVSF TIBSFETUBUFCFUB struct InMemoryKey: PersistenceKey 1FSTJTUFODF,FZ४ڌࡾॐ࢜Λ࿈Ε͖ͯͨΑ struct AppStorageKey: PersistenceKey struct FileStorageKey: PersistenceKey

Slide 11

Slide 11 text

@ObservableState struct State { @Shared(.appStorage(“count”)) var count: Int } @ObservableState struct State { @Shared(.inMemory(“text")) var text: String ɹ @Shared(.appStorage(“count”)) var count: Int } "OZ)BTIBCMF 3FGFSFODF JO.FNPSZ lUFYUz BQQ4UPSFHF lDPVOUz ࢀরڞ༗ LockIsolated<[AnyHashable: any Reference]> class ValueReference: Reference { var persistenceKey : (any PersistenceKey)? … } 0CTFSWBUJPO QFSDFQUJPO ˏPropertyWrapper struct Shared { let reference: any Reference public init( _ persistenceKey: some PersistenceKey, … ) { … @Dependency( PersistentReferencesKey.self ) var references … } … 5IF$PNQPTBCMF"SDIJUFDUVSF TIBSFETUBUFCFUB struct InMemoryKey: PersistenceKey 1FSTJTUFODF,FZ४ڌࡾॐ࢜Λ࿈Ε͖ͯͨΑ struct AppStorageKey: PersistenceKey struct FileStorageKey: PersistenceKey

Slide 12

Slide 12 text

@ObservableState struct State { @Shared(.appStorage(“count”)) var count: Int } @ObservableState struct State { @Shared(.inMemory(“text")) var text: String ɹ @Shared(.appStorage(“count”)) var count: Int } "OZ)BTIBCMF 3FGFSFODF JO.FNPSZ lUFYUz BQQ4UPSFHF lDPVOUz ࢀরڞ༗ LockIsolated<[AnyHashable: any Reference]> class ValueReference: Reference { var persistenceKey : (any PersistenceKey)? … } 0CTFSWBUJPO QFSDFQUJPO ˏPropertyWrapper struct Shared { let reference: any Reference public init( _ persistenceKey: some PersistenceKey, … ) { … @Dependency( PersistentReferencesKey.self ) var references … } … 5IF$PNQPTBCMF"SDIJUFDUVSF TIBSFETUBUFCFUB struct InMemoryKey: PersistenceKey 1FSTJTUFODF,FZ४ڌࡾॐ࢜Λ࿈Ε͖ͯͨΑ struct AppStorageKey: PersistenceKey struct FileStorageKey: PersistenceKey protocol PersistenceKey { func load(…) -> Value? func save(_ value: Value) func subscribe( … ) }

Slide 13

Slide 13 text

ͦͷଞ w TIBSFETUBUFCFUB w ϕʔλ൛ͷϒϥϯνΛʹݟ͚ͨͩͳͷͰมΘΔͱࢥ͍·͢ w TXJGUQFSDFQUJPO൛͚ͩ͋ΔΑ͏ʹݟ͑Δ w $PNCJOF൛͸͋ͱ͔Βʁ w ͦΕͱ΋$PNCJOF$VSSFOU7BMVF3FMBZ͑͋͞Ε͹ରԠ͸΄΅ऴΘΓʁ

Slide 14

Slide 14 text

ࣗݾ঺հZJNBKP w גࣜձࣾΩϡϦΦγςΟιϑτ΢ΣΞ w 5$"ؔ࿈ w 5$"ͰͷJ04ΞϓϦ։ൃʹؔ͢ΔΞυόΠε΋࢓ࣄʹ͍ͯ͠·͢ w &$ͷΞϓϦ w ແਓड෇ͷ໊ࢗͷΞϓϦ w ݸਓ։ൃ5$"࢖ͬͨΞϓϦ w ৆ຯظݶಡΈऔΔΞϓϦ

Slide 15

Slide 15 text

ࣗݾ঺հZJNBKP w גࣜձࣾΩϡϦΦγςΟιϑτ΢ΣΞ w 5$"ؔ࿈ w 5$"ͰͷJ04ΞϓϦ։ൃʹؔ͢ΔΞυόΠε΋࢓ࣄʹ͍ͯ͠·͢ w &$ͷΞϓϦ w ແਓड෇ͷ໊ࢗͷΞϓϦ w ݸਓ։ൃ5$"࢖ͬͨΞϓϦ w ৆ຯظݶಡΈऔΔΞϓϦ Έͳ͞Μ͕ڵຯ͋Γͦ͏ͳ࿩୊ ΞυόΠεͷΑ͋͘Δڞ௨఺΍ "OESPJEΞϓϦ͔͠࡞ͬͨ͜ͱ͕ͳ͍ਓ͕ &$αΠτͷΞϓϦͰ5$"Λ࢖͏࿩ɻ