Slide 1

Slide 1 text

3ZPZB*UP !SZJUUP %BUB&TTFOUJBMTJO4XJGU6* ू·Ε4XJGU޷͖ʂ4XJGUѪ޷ձεϐϯΦϑ88%$ηογϣϯཁ໿ձ!ΦϯϥΠϯ

Slide 2

Slide 2 text

ࣗݾ঺հ ҏ౻྇໵ !SZJUUP ձ௡େֶֶ෦೥ੜ Χϐόϥ͕޷͖

Slide 3

Slide 3 text

ηογϣϯͷ಺༰ w 4XJGU6*Ͱͷσʔλϑϩʔ w ΞϓϦͷσʔλϞσϧઃܭ w ࣮ࡍʹΞϓϦʹऔΓೖΕΔࡍͷςΫχοΫ

Slide 4

Slide 4 text

ηογϣϯͷ಺༰ w 4XJGU6*Ͱͷσʔλϑϩʔ w ΞϓϦͷσʔλϞσϧઃܭ w ࣮ࡍʹΞϓϦʹऔΓೖΕΔࡍͷςΫχοΫ

Slide 5

Slide 5 text

4XJGU6*Ͱͷσʔλϑϩʔ ϏϡʔΛ࡞Δ࣌ʹߟ͍͑ͨ̏ͭͷ࣭໰ w ࡞੒͢ΔϏϡʔͰඞཁͳσʔλ͸Կ͔ʁ w ࡞੒͢ΔϏϡʔͰ͸σʔλΛͲͷΑ͏ʹૢ࡞͢Δ͔ʁ w σʔλ͸Ͳ͔͜ΒདྷΔʢ౉͞ΕΔʣͷ͔ʁ

Slide 6

Slide 6 text

4XJGU6*Ͱͷσʔλϑϩʔ ϏϡʔΛ࡞Δ࣌ʹߟ͍͑ͨ̏ͭͷ࣭໰ w ࡞੒͢ΔϏϡʔͰඞཁͳσʔλ͸Կ͔ʁ CPPLͱ͍͏#PPLܕͷ஋ QSPHSFTTͱ͍͏%PVCMFܕͷ஋ ͦΕͧΕ͕͋Ε͹ϏϡʔΛදࣔͰ͖ͦ͏ɻ w ࡞੒͢ΔϏϡʔͰ͸σʔλΛͲͷΑ͏ʹૢ࡞͢Δ ͔ʁ ಛʹͳͦ͞͏ w σʔλ͸Ͳ͔͜ΒདྷΔʢ౉͞ΕΔʣͷ͔ʁ ͜ͷϏϡʔΛ࢖͏ϏϡʔͰ౉͞ΕΔ͜ͱʹͳΓͦ͏ɻ struct BookCard : View { let book: Book let progress: Double var body: some View { HStack { Cover(book.coverName) VStack(alignment: .leading) { TitleText(book.title) AuthorText(book.author) } Spacer() RingProgressView(value: progress) } } }

Slide 7

Slide 7 text

4XJGU6*Ͱͷσʔλϑϩʔ ϏϡʔΛ࡞Δ࣌ʹߟ͍͑ͨ̏ͭͷ࣭໰ w ࡞੒͢ΔϏϡʔͰඞཁͳσʔλ͸Կ͔ʁ CPPLͱ͍͏#PPLܕͷ஋ QSPHSFTTͱ͍͏%PVCMFܕͷ஋ ͦΕͧΕ͕͋Ε͹ϏϡʔΛදࣔͰ͖ͦ͏ɻ w ࡞੒͢ΔϏϡʔͰ͸σʔλΛͲͷΑ͏ʹૢ࡞͢ Δ͔ʁ ಛʹͳͦ͞͏ w σʔλ͸Ͳ͔͜ΒདྷΔʢ౉͞ΕΔʣͷ͔ʁ ͜ͷϏϡʔΛ࢖͏ϏϡʔͰ౉͞ΕΔ͜ͱʹͳΓͦ͏ɻ struct BookCard : View { let book: Book let progress: Double var body: some View { HStack { Cover(book.coverName) VStack(alignment: .leading) { TitleText(book.title) AuthorText(book.author) } Spacer() RingProgressView(value: progress) } } } l4PVSDFPG5SVUIzͱ͍͏ݴ༿Ͱηογϣϯ಺Ͱ͸ѻΘΕΔ

Slide 8

Slide 8 text

4XJGU6*Ͱͷσʔλϑϩʔ ϏϡʔͰͷσʔλอ࣋ɺͦΕͧΕͲΜͳ࣌ʹ࢖͏ʁ ϓϩύςΟϏϡʔʹΑͬͯมߋ͞Εͳ͍σʔλ !4UBUFϏϡʔʹΑͬͯอ࣋͞ΕΔҰ࣌తͳσʔλΛѻ͏ !#JOEJOHଞͷϏϡʔʹΑͬͯอ࣋͞Ε͍ͯΔσʔλΛมߋ͍ͨ͠৔߹

Slide 9

Slide 9 text

ηογϣϯͷ಺༰ w 4XJGU6*Ͱͷσʔλϑϩʔ w ΞϓϦͷσʔλϞσϧઃܭ w ࣮ࡍʹΞϓϦʹऔΓೖΕΔࡍͷςΫχοΫ

Slide 10

Slide 10 text

ΞϓϦͷσʔλϞσϧઃܭ σʔλϞσϧఆٛ w 0CTFSWBCMF0CKFDUΛ࢖͏ w !1VCMJTIFEΛ࢖͏ w ̎ͭ໨ͷ࣭໰ ࡞੒͢ΔϏϡʔͰ͸σʔλΛͲͷΑ͏ʹૢ࡞͢ Δ͔ʁ ʹ౴͑Δͷ͸༰қ class CurrentlyReading: ObservableObject { let book: Book @Published var progress = ReadingProgress() @Published var isFinished = false var currentProgress: Double { isFinished ? 1.0 : progress.progress } }

Slide 11

Slide 11 text

ΞϓϦͷσʔλϞσϧઃܭ ϏϡʔͰ࡞ͬͨϞσϧΛ࢖͏ w ଞͷ̎ͭͷ࣭໰ʹ͍ͭͯ͸ʁ w ࡞੒͢ΔϏϡʔͰඞཁͳσʔλ͸Կ͔ʁ w ࡞੒͢ΔϏϡʔͰ͸σʔλΛͲͷΑ͏ʹૢ࡞͢Δ͔ʁ w σʔλ͸Ͳ͔͜ΒདྷΔʢ౉͞ΕΔʣͷ͔ʁ

Slide 12

Slide 12 text

ΞϓϦͷσʔλϞσϧઃܭ ϏϡʔͰ࡞ͬͨϞσϧΛ࢖͏ w ѻ͏ͨΊͷ1SPQFSUZ8SBQQFS͕̏ͭ w !0CTFSWFE0CKFDU w !&OWJSPONFOU0CKFDU w !4UBUF0CKFDU /FX

Slide 13

Slide 13 text

ΞϓϦͷσʔλϞσϧઃܭ ϏϡʔͰ࡞ͬͨϞσϧΛ࢖͏ !0CTFSWFE0CKFDU σʔλͷґଘؔ܎Λ࡞Δ !&OWJSPONFOU0CKFDU Ϗϡʔ֊૚ؒͷ0CTFSWBCMF0CKFDUͷѻ͍Λศརʹ͢Δ !4UBUF0CKFDU /FX 0CTFSWBCMF0CKFDUΛϏϡʔͷϥΠϑαΠΫϧʹ݁ͼ͚ͭΔ

Slide 14

Slide 14 text

ηογϣϯͷ಺༰ w 4XJGU6*Ͱͷσʔλϑϩʔ w ΞϓϦͷσʔλϞσϧઃܭ w ࣮ࡍʹΞϓϦʹऔΓೖΕΔࡍͷςΫχοΫ

Slide 15

Slide 15 text

࣮ࡍʹΞϓϦʹऔΓೖΕΔࡍͷςΫχοΫ ໰୊ w ࢠͷϏϡʔͰϞσϧΛϓϩύςΟͰ ͍࣋ͬͯͯɺͦ͜ͰॳظԽ͍ͯ͠Δ ৔߹ w 3FBEJOH-JTU7JFXFS͕ࡍϨϯμϦϯά͞ ΕΔͨͼʹϞσϧͷΠϯελϯε͕ੜ੒ ͞Εͯ͠·͏ struct ReadingListViewer: View { var body: some View { NavigationView { ReadingList() Placeholder() } } } struct ReadingList: View { @ObservedObject var store = ReadingListStore() var body: some View { // ... } }

Slide 16

Slide 16 text

࣮ࡍʹΞϓϦʹऔΓೖΕΔࡍͷςΫχοΫ ղܾࡦ w !4UBUF0CKFDUΛ୅ΘΓʹ࢖͏͜ͱ Ͱղܾ͕Ͱ͖ΔʢΒ͍͠ʣ w !4UBUF0CKFDUΛ࢖༻͢Δͱ4XJGU6*͕ ద੾ͳλΠϛϯάͰΠϯελϯεԽΛ͠ ͯ͘ΕΔͱͷ͜ͱ struct ReadingListViewer: View { var body: some View { NavigationView { ReadingList() Placeholder() } } } struct ReadingList: View { @StateObject var store = ReadingListStore() var body: some View { // ... } }

Slide 17

Slide 17 text

࣮ࡍʹΞϓϦʹऔΓೖΕΔࡍͷςΫχοΫ ୭͕σʔλΛ࣋ͭͷ͔ w ڞ௨ͷ૆ઌʹ࣋ͭ w !4UBUF0CKFDUΛ࢖ͬͯͦͷϏϡʔࣗ਎͕࣋ͭ w ΞϓϦ಺ͷάϩʔόϧͳσʔλͱͯ࣋ͭ͠ w "QQΛܧঝͨ͠Ϗϡʔʹ!4UBUFͳͲΛར༻ͯ͠એݴͯ͋͛͠Δ

Slide 18

Slide 18 text

࣮ࡍʹΞϓϦʹऔΓೖΕΔࡍͷςΫχοΫ σʔλͷӬଓԽ w 4DFOF4UPSBHF w 4XJGU6*͕؅ཧ͍ͯ͠ΔϏϡʔͰ͔͠࢖͑ͳ͍ w ߲໨ͷબ୒ঢ়ଶͳͲΛอଘ w "QQ4UPSBHF w 6TFS%FGBVMUΛ࢖༻ͨ͠άϩʔόϧετϨʔδ w ઃఆͳͲͷখ͞ͳσʔλΛอଘ

Slide 19

Slide 19 text

͓·͚ ৽͘͠௥Ճ͞ΕͨΠϕϯτιʔε w PO$IBOHF w PO0QFO63- w PO$POUJOVF6TFS"DUJWJUZ