Slide 1

Slide 1 text

Kyome iOSDC Japan 2022 - Unconference 2022/09/12 iOSͷ΢ΟδΣοτͰ΋ೣ૸Β͍ͤͨ

Slide 2

Slide 2 text

iOSDC Japan 2022 - Unconference #iosdc #unconference ࣗݾ঺հ IUUQTLZPNFJP ,ZPNF ,ZPNFTVLF macOS޲͚ͷϢʔςΟϦςΟΞϓϦ։ൃऀʢझຯ݉෭ۀʣ ϝχϡʔόʔৗறܕΞϓϦɺApp Extension ͕ಘҙ෼໺ ීஈ͸αΠϘ΢ζͰ kintoneϞόΠϧ ։ൃ͍ͯ͠·͢ʂ

Slide 3

Slide 3 text

iOSDC Japan 2022 - Unconference #iosdc #unconference What’s RunCat?

Slide 4

Slide 4 text

iOSDC Japan 2022 - Unconference #iosdc #unconference What’s RunCat? RunCat macOS ޲͚ͷϝχϡʔόʔৗறܕΞϓϦ ೣͷ૸ΔεϐʔυͰ CPU ෛՙ͕Θ͔Δ
 ΞΫςΟϏςΟɾΠϯδέʔλʔ

Slide 5

Slide 5 text

iOSDC Japan 2022 - Unconference #iosdc #unconference What’s RunCat? macOS൛ͷRunCat͸ CAKeyframeAnimation Λ࢖ͬͯύϥύϥອը ͷཁྖͰΞχϝʔγϣϯ͍ͯ͠Δʢແݶϧʔϓʣ ఆظతʹCPUෛՙΛऔಘͯ͠ɺͦͷ஋ʹج͍ͮͯΞχϝʔγϣϯͷ speed Λߋ৽͍ͯ͠Δ cat-0 cat-1 cat-2 cat-3 cat-4 Speed

Slide 6

Slide 6 text

iOSDC Japan 2022 - Unconference #iosdc #unconference What’s RunCat? speed Λߋ৽͢ΔࡍʹΞχϝʔγϣϯ͕Ϧηοτ͞ΕΔͷͰɺ
 ରࡦ͠ͳ͍ͱΞχϝʔγϣϯ͕ΨΫΨΫͯ͠͠·͏ ☝︎ ͜Μͳײ͡

Slide 7

Slide 7 text

iOSDC Japan 2022 - Unconference #iosdc #unconference What’s RunCat? speed Λߋ৽͢ΔࡍʹΞχϝʔγϣϯ͕Ϧηοτ͞ΕΔͷͰɺ
 ରࡦ͠ͳ͍ͱΞχϝʔγϣϯ͕ΨΫΨΫͯ͠͠·͏ cat-0 cat-1 cat-2 cat-3 cat-4 Speed มߋ

Slide 8

Slide 8 text

iOSDC Japan 2022 - Unconference #iosdc #unconference What’s RunCat? speed Λߋ৽͢ΔࡍʹΞχϝʔγϣϯ͕Ϧηοτ͞ΕΔͷͰɺ
 ରࡦ͠ͳ͍ͱΞχϝʔγϣϯ͕ΨΫΨΫͯ͠͠·͏ cat-0 cat-1 cat-2 cat-3 cat-4 Speed มߋ ☝︎ ࣍ͷΞχϝʔγϣϯ͸ cat-3 ͔Β
 ࢝Ίͳ͍ͱεϜʔζʹͳΒͳ͍

Slide 9

Slide 9 text

iOSDC Japan 2022 - Unconference #iosdc #unconference What’s RunCat? speed Λߋ৽͢ΔࡍʹΞχϝʔγϣϯ͕Ϧηοτ͞ΕΔͷͰɺ
 ରࡦ͠ͳ͍ͱΞχϝʔγϣϯ͕ΨΫΨΫͯ͠͠·͏ γʔϜϨεʹ੾Γସ͑ΔͨΊɺߋ৽લʹ CALayer ͷ timeO ff set ͱ beginTime Λ੍ޚ్ͯ͠த͔ΒΞχϝʔγϣϯ͕࢝·ΔΑ͏ʹ͢Δ ☝︎ cat-3 ͔Β࢝·Γ cat-2 ͰऴΘΔΞχϝʹ͢Δ cat-3 cat-4 cat-0 cat-1 cat-2

Slide 10

Slide 10 text

iOSDC Japan 2022 - Unconference #iosdc #unconference What’s RunCat? ͜ͷΑ͏ͳεϐʔυ్͕தͰมԽ͢ΔແݶϧʔϓͷίϚૹΓ
 ΞχϝʔγϣϯΛ࣮ݱͰ͖Δ࠷దखஈ͕ CAKeyframeAnimation Core Animation ͍͢͝ʂ

Slide 11

Slide 11 text

iOSDC Japan 2022 - Unconference #iosdc #unconference ؓ࿩ٳ୊

Slide 12

Slide 12 text

iOSDC Japan 2022 - Unconference #iosdc #unconference iOSͰ΋ೣ૸Β͍ͤͨ 2020೥ͷKyomeࢯ

Slide 13

Slide 13 text

iOSDC Japan 2022 - Unconference #iosdc #unconference WidgetKit ग़ͨ͠ͳΜ͔Ͱ͖ͦ͏ 2020೥ͷKyomeࢯ ※ 2020೥͸ iOS 14 ͕ൃද͞Ε WidgetKit ͕ಋೖ͞Ε·ͨ͠ɻ

Slide 14

Slide 14 text

iOSDC Japan 2022 - Unconference #iosdc #unconference vs WidgetKit

Slide 15

Slide 15 text

iOSDC Japan 2022 - Unconference #iosdc #unconference ઈରʹΞχϝʔγϣϯͤͨ͘͞ͳ͍ 
 74 
 Կͱͯ͠΋΢ΟδΣοτͰೣ૸Β͍ͤͨɾ

Slide 16

Slide 16 text

iOSDC Japan 2022 - Unconference #iosdc #unconference 5SZͱΓ͋͑ͣૉ௚ʹ 
 Ξχϝʔγϣϯࢼͯ͠ΈΔ

Slide 17

Slide 17 text

iOSDC Japan 2022 - Unconference #iosdc #unconference Try 1: ͱΓ͋͑ͣૉ௚ʹΞχϝʔγϣϯࢼͯ͠ΈΔ in App struct RotateItemView: View { @State var flag: Bool = false var body: some View { Image(systemName: "paperplane") .resizable() .frame(width: 100, height: 100, alignment: .center) .rotationEffect(Angle(degrees: flag ? 0 : 360)) .animation( Animation.linear(duration: 2) .repeatForever(autoreverses: false), value: flag ) .onAppear { flag.toggle() } } }

Slide 18

Slide 18 text

iOSDC Japan 2022 - Unconference #iosdc #unconference Try 1: ͱΓ͋͑ͣૉ௚ʹΞχϝʔγϣϯࢼͯ͠ΈΔ in Widget struct RotateItemView: View { @State var flag: Bool = false var body: some View { Image(systemName: "paperplane") .resizable() .frame(width: 100, height: 100, alignment: .center) .rotationEffect(Angle(degrees: flag ? 0 : 360)) .animation( Animation.linear(duration: 2) .repeatForever(autoreverses: false), value: flag ) .onAppear { flag.toggle() } } } Ξχϝʔγϣϯ͠ͳ͍ 💦

Slide 19

Slide 19 text

iOSDC Japan 2022 - Unconference #iosdc #unconference 5SZ5JNFSΛ࢖ͬͯίϚૹΓͯ͠ΈΔ

Slide 20

Slide 20 text

iOSDC Japan 2022 - Unconference #iosdc #unconference struct CatTimerView: View { @State var catIndex: Int = 0 let timer = Timer .publish(every: 0.1, on: .main, in: .default) .autoconnect() var body: some View { Image("cat-\(catIndex)") .onReceive(timer) { _ in catIndex = (catIndex + 1) % 5 } .padding() } } Try 2: TimerΛ࢖ͬͯίϚૹΓͯ͠ΈΔ in App

Slide 21

Slide 21 text

iOSDC Japan 2022 - Unconference #iosdc #unconference struct CatTimerView: View { @State var catIndex: Int = 0 let timer = Timer .publish(every: 0.1, on: .main, in: .default) .autoconnect() var body: some View { Image("cat-\(catIndex)") .onReceive(timer) { _ in catIndex = (catIndex + 1) % 5 } .padding() } } Try 2: TimerΛ࢖ͬͯίϚૹΓͯ͠ΈΔ in Widget ΍͸Γಈ͔ͳ͍ 💧

Slide 22

Slide 22 text

iOSDC Japan 2022 - Unconference #iosdc #unconference 5SZͦ͏ͩ6*,JUʹཔΖ͏ʂ

Slide 23

Slide 23 text

iOSDC Japan 2022 - Unconference #iosdc #unconference var animatedCatImage: Image? { if let uiImage = UIImage.animatedImageNamed("cat-", duration: 1) { return Image(uiImage: uiImage) } return nil } Try 3: ͦ͏ͩ UIKit ʹཔΖ͏ʂ in App UIImage.animatedImageNamed(_:duration:) Λ࢖͑͹ɺ
 ࿈൪ʹͳ͍ͬͯΔϑΝΠϧ໊ͷը૾ΛΞχϝʔγϣϯԽ
 ͞ΕͨҰͭͷ UIImageʹͰ͖Δ͕… UIImageView ͩͱಈ͚͘Ͳ
 SwiftUIͷImageʹೖΕΔͱಈ͔ͳ͍

Slide 24

Slide 24 text

iOSDC Japan 2022 - Unconference #iosdc #unconference 5SZ6*7JFX3FQSFTFOUBCMFͰͲ͏ͩʂ

Slide 25

Slide 25 text

iOSDC Japan 2022 - Unconference #iosdc #unconference struct CatRepView: UIViewRepresentable { typealias UIViewType = UIImageView let uiImage: UIImage? init() { uiImage = UIImage.animatedImageNamed("cat-", duration: 1) } func makeUIView(context: Context) -> UIImageView { let imageView = UIImageView(image: uiImage) imageView.contentMode = .scaleAspectFit return imageView } func updateUIView(_ uiView: UIImageView, context: Context) {} } Try 4: UIViewRepresentable ͰͲ͏ͩʂ ౰࣌ͷදࣔΛ࠶ݱͨ͠΋ͷ ❗ ͔ͯɺφχίϨ!! UIKit ༝དྷͷ View ͸΢ΟδΣοτͷதͰ͸ແޮ

Slide 26

Slide 26 text

iOSDC Japan 2022 - Unconference #iosdc #unconference 5SZ(*'Λ௚઀ಡΈࠐΜͰΈΔ

Slide 27

Slide 27 text

iOSDC Japan 2022 - Unconference #iosdc #unconference var catGIFImage: Image? { if let asset = NSDataAsset(name: "runcat-gif"), let uiImage = UIImage(data: asset.data) { return Image(uiImage: uiImage) } return nil } Try 5: GIFΛ௚઀ಡΈࠐΜͰΈΔ in App ͦ΋ͦ΋΢ΟδΣοτ͡Όͳͯ͘΋ಈ͔ͳ͍

Slide 28

Slide 28 text

iOSDC Japan 2022 - Unconference #iosdc #unconference ͦͯ͠ࢸͬͨKyomeࢯͷ݁࿦

Slide 29

Slide 29 text

iOSDC Japan 2022 - Unconference #iosdc #unconference

Slide 30

Slide 30 text

iOSDC Japan 2022 - Unconference #iosdc #unconference

Slide 31

Slide 31 text

iOSDC Japan 2022 - Unconference #iosdc #unconference ࣌͸ྲྀΕ̎̌̎̎೥݄̒

Slide 32

Slide 32 text

iOSDC Japan 2022 - Unconference #iosdc #unconference WWDC 2022 ʹͯ Live Activities ൃද

Slide 33

Slide 33 text

iOSDC Japan 2022 - Unconference #iosdc #unconference Live Activities ref: AppleɺiOS 16Ͱಋೖ͞ΕΔڞ༗ͱίϛϡχέʔγϣϯͷͨΊͷ৽͍͠ํ๏Λൃද - Apple (೔ຊ) https://www.apple.com/jp/newsroom/2022/06/apple-unveils-new-ways-to-share-and-communicate-in-ios-16/

Slide 34

Slide 34 text

iOSDC Japan 2022 - Unconference #iosdc #unconference Live Activities ref: Keynote (ASL) - WWDC22 - Videos - Apple Developer. https://developer.apple.com/videos/play/wwdc2022/111/

Slide 35

Slide 35 text

iOSDC Japan 2022 - Unconference #iosdc #unconference ࠓΞχϝʔγϣϯͯ͠ͳ͔͔ͬͨ ⁉︎ 2022೥ͷKyomeࢯ ⁉

Slide 36

Slide 36 text

iOSDC Japan 2022 - Unconference #iosdc #unconference Live Activities ref: Keynote (ASL) - WWDC22 - Videos - Apple Developer. https://developer.apple.com/videos/play/wwdc2022/111/

Slide 37

Slide 37 text

iOSDC Japan 2022 - Unconference #iosdc #unconference 5SZ-JWF"DUJWJUJFTΛ࢖ͬͯΈΔ

Slide 38

Slide 38 text

iOSDC Japan 2022 - Unconference #iosdc #unconference Try 6: Live Activities Λ࢖ͬͯΈΔ Live Activities ͸ ActivityKit Framework Λ࢖࣮ͬͯ૷͢Δ ActivityKit ͸ Xcode 14 beta 4~6 Ͱ࢖͑Δ Xcode 14 RC ʹ͸ೖ͍ͬͯͳ͍ ૣ଎ࢼ͍ͯ͠Δਓͷهࣄ΍GitHubͷιʔε*͕͋ΔͷͰ࣮૷͸ ͦΜͳʹ೉͘͠ͳ͍ * Create Live Activities With ActivityKit on iOS 16 | by Batikan Sosun | Aug, 2022 | Better Programming
 https://betterprogramming.pub/create-live-activities-with-activitykit-on-ios-16-beta-4766a347035b

Slide 39

Slide 39 text

iOSDC Japan 2022 - Unconference #iosdc #unconference Try 6: Live Activities Λ࢖ͬͯΈΔ ࢼͯ͠Θ͔ͬͨ͜ͱ Live Activities ͸جຊతʹ͸΢ΟδΣοτͱҰॹ
 ϩοΫεΫϦʔϯʹදࣔͰ͖Δ΢ΟδΣοτͱ͍͏ײ͡ ΍͸ΓΞχϝʔγϣϯ͸Ͱ͖ͳ͍😫 ं͕ಈ͍͍ͯΔΑ͏ʹݟ͑ͨͷ͸ɺSliderͷϊϒͷը૾Λม͍͚͑ͯͨͩ
 ߋ৽࣌ʹϊϒͷҠಈΞχϝʔγϣϯ͕࣮ߦ͞ΕΔ λΠϚʔ͸ Text(date: Date, style: Text.DateStyle) Λ࢖͑͹࣮૷Ͱ͖Δ ͔͠΋ɺiOS 14͔Β͜Ε͸͋ͬͨʢ஌Βͳ͔ͬͨ..ʣ

Slide 40

Slide 40 text

iOSDC Japan 2022 - Unconference #iosdc #unconference ͦͯ͠ࢸͬͨKyomeࢯͷ݁࿦վΊ

Slide 41

Slide 41 text

iOSDC Japan 2022 - Unconference #iosdc #unconference

Slide 42

Slide 42 text

iOSDC Japan 2022 - Unconference #iosdc #unconference

Slide 43

Slide 43 text

iOSDC Japan 2022 - Unconference #iosdc #unconference ͔͠͠Kyomeࢯʹిྲྀ૸Δʔʔʂ

Slide 44

Slide 44 text

iOSDC Japan 2022 - Unconference #iosdc #unconference ॴḨɺRunCat ͸̑ຕͷ੩ࢭըΛ 
 ίϚૹΓ͍ͯ͠Δ͚ͩ… ͳΒ͹

Slide 45

Slide 45 text

iOSDC Japan 2022 - Unconference #iosdc #unconference 5SZλΠϚʔ͕ಈ͔ͤΔͳΒೣϑΥϯτ 
 Ͱࠩ͠ସ͑Ε͹͍͍͡Όͳ͍

Slide 46

Slide 46 text

iOSDC Japan 2022 - Unconference #iosdc #unconference Try 7: λΠϚʔ͕ಈ͔ͤΔͳΒೣϑΥϯτͰࠩ͠ସ͑Ε͹͍͍͡Όͳ͍ λΠϚʔΛදࣔͨ͠΢ΟδΣοτ ೣϑΥϯτ

Slide 47

Slide 47 text

iOSDC Japan 2022 - Unconference #iosdc #unconference Calligraphr ͱ͍͏ϑΥϯτΛࣗ࡞Ͱ͖Δ
 αʔϏεΛ࢖ͬͯೣϑΥϯτΛ࡞੒ ૸Δೣ͸̑ϑϨʔϜͳͷͰɺ
 0~4ͱ5~9ͷ̎प෼ࢦఆ͢Δ ग़དྷ্͕ͬͨOpenTypeϑΥϯτΛ
 ϓϩδΣΫτʹऔΓࠐΉ Try 7: λΠϚʔ͕ಈ͔ͤΔͳΒೣϑΥϯτͰࠩ͠ସ͑Ε͹͍͍͡Όͳ͍ ref: Calligraphr. https://www.calligraphr.com/en/webapp/app_home/?/

Slide 48

Slide 48 text

iOSDC Japan 2022 - Unconference #iosdc #unconference struct ContentView: View { var body: some View { Text(Date(), style: .timer) .font(.custom("Runningcat-Regular", size: 150)) } } in App ͱΓ͋͑ͣී௨ͷSwiftUI AppͳΒػೳͨ͠ʂ ͳΜ͔ΧϫΠΠ Try 7: λΠϚʔ͕ಈ͔ͤΔͳΒೣϑΥϯτͰࠩ͠ସ͑Ε͹͍͍͡Όͳ͍ ❗

Slide 49

Slide 49 text

iOSDC Japan 2022 - Unconference #iosdc #unconference ͚ͩ͘͜͜Γൈ͖͍ͨ Try 7: λΠϚʔ͕ಈ͔ͤΔͳΒೣϑΥϯτͰࠩ͠ସ͑Ε͹͍͍͡Όͳ͍

Slide 50

Slide 50 text

iOSDC Japan 2022 - Unconference #iosdc #unconference struct ContentView: View { var body: some View { Text(Date(), style: .timer) .lineLimit(1) .font(.custom("Runningcat-Regular", size: 200)) .fixedSize(horizontal: true, vertical: false) .frame(width: 120, alignment: .trailing) .clipped() } } in App Try 7: λΠϚʔ͕ಈ͔ͤΔͳΒೣϑΥϯτͰࠩ͠ସ͑Ε͹͍͍͡Όͳ͍ .lineLimit(1) ͱ . fi xedSize() ͰվߦΛڐ͞ͳ͍Α͏ʹ͢Δ .frame(width: 120, alignment: .trailing) Ͱ෯ΛೣҰඖ෼ʹ ͭͭ͠ɺTextΛӈدͤʹ͢Δ .clipped() Ͱ༨෼ͳೣΛফ͢

Slide 51

Slide 51 text

iOSDC Japan 2022 - Unconference #iosdc #unconference struct ContentView: View { var body: some View { Text(Date(), style: .timer) .lineLimit(1) .font(.custom("Runningcat-Regular", size: 200)) .fixedSize(horizontal: true, vertical: false) .frame(width: 120, alignment: .trailing) .clipped() } } in Widget Try 7: λΠϚʔ͕ಈ͔ͤΔͳΒೣϑΥϯτͰࠩ͠ସ͑Ε͹͍͍͡Όͳ͍ ΢ΟδΣοτͩͱ Text(Date(), style: .timer) ͱ . fi xedSize() ͷ૬ੑ͕ѱ͍Β͘͠ɺText͕ফ͑ͯ͠·͏ ͱʃ͓ʃ͠ʃͯʃͨʃΑʃ͓ʃ͓ʃ͓ʃʂ 💢

Slide 52

Slide 52 text

iOSDC Japan 2022 - Unconference #iosdc #unconference ࢼߦࡨޡͨ݁͠Ռ

Slide 53

Slide 53 text

iOSDC Japan 2022 - Unconference #iosdc #unconference ͍ͭʹ΢ΟδΣοτͰೣಈ͖·ͨ͠ʂʂ Try 7: λΠϚʔ͕ಈ͔ͤΔͳΒೣϑΥϯτͰࠩ͠ସ͑Ε͹͍͍͡Όͳ͍ ΍Γ·ͨ͠🎉 ༏উ🏆 👑

Slide 54

Slide 54 text

iOSDC Japan 2022 - Unconference #iosdc #unconference in Widget Try 7: λΠϚʔ͕ಈ͔ͤΔͳΒೣϑΥϯτͰࠩ͠ସ͑Ε͹͍͍͡Όͳ͍ . fi xedSize() ͸ Group ͰแΜͰ͔Β࢖͑͹༗ޮ .clipped() ΋͞Βʹ Group ͰแΜͰ͔Β࢖͑͹༗ޮ var body: some View { Group { Group { Text(Date(), style: .timer) .lineLimit(1) .truncationMode(.head) .font(.custom("Runningcat-Regular", size: 120)) .frame(width: 200) } .fixedSize() } .frame(width: 90, alignment: .trailing) .clipped() }

Slide 55

Slide 55 text

iOSDC Japan 2022 - Unconference #iosdc #unconference var body: some View { Group { Group { Text(Date(), style: .timer) .lineLimit(1) .truncationMode(.head) .font(.custom("Runningcat-Regular", size: 120)) .frame(width: 200) } .fixedSize() } .frame(width: 90, alignment: .trailing) .clipped() } in Widget Try 7: λΠϚʔ͕ಈ͔ͤΔͳΒೣϑΥϯτͰࠩ͠ସ͑Ε͹͍͍͡Όͳ͍ .truncationMode(.head) Ͱ෯͕଍Γͳ͍ͱ͖ઌ಄͕
 ʮ…ʯͰলུ͞ΕΔΑ͏ʹ͓ͯ͘͜͠ͱ͕ॏཁ লུͭͭ͠෯Λݻఆͤ͞ΔͨΊʹɺframe(width: 200) Ͱ
 ೋจࣈ෼ͷ෯Λࢦఆ͢Δ

Slide 56

Slide 56 text

iOSDC Japan 2022 - Unconference #iosdc #unconference var body: some View { Group { Group { Text(Date(), style: .timer) .lineLimit(1) .truncationMode(.head) .font(.custom("Runningcat-Regular", size: 120)) .frame(width: 200) } .fixedSize() } .frame(width: 90, alignment: .trailing) .clipped() } in Widget Try 7: λΠϚʔ͕ಈ͔ͤΔͳΒೣϑΥϯτͰࠩ͠ସ͑Ε͹͍͍͡Όͳ͍ .clipped() ͢Δલʹ .frame(width: 90, alignment: .trailing)
 Ͱද͍ࣔͤͨ͞ೣҰඖ෼ͷ෯Λ֬อ͢Δ

Slide 57

Slide 57 text

iOSDC Japan 2022 - Unconference #iosdc #unconference RunCatͱͯ͠ͷ՝୊

Slide 58

Slide 58 text

iOSDC Japan 2022 - Unconference #iosdc #unconference RunCatͱͯ͠ͷ՝୊ ࢓૊Έ্ɺίϚૹΓͷִؒ͸̍ඵͰݻఆ Կ͔ͷঢ়ଶʹԠͯ͡εϐʔυΛม͑Δͱ͍͏͜ͱ͸Ͱ͖ͳ͍

Slide 59

Slide 59 text

iOSDC Japan 2022 - Unconference #iosdc #unconference RunCatͱͯ͠ͷ՝୊ ࢓૊Έ্ɺίϚૹΓͷִؒ͸̍ඵͰݻఆ Կ͔ͷঢ়ଶʹԠͯ͡εϐʔυΛม͑Δͱ͍͏͜ͱ͸Ͱ͖ͳ͍ ͔ͯ͜Ε͡ΌΞχϝʔγϣϯ
 ͱ͸ݴ͑ͳ͘ͳ͍ʁ

Slide 60

Slide 60 text

iOSDC Japan 2022 - Unconference #iosdc #unconference RunCatͱͯ͠ͷ՝୊ ࢓૊Έ্ɺίϚૹΓͷִؒ͸̍ඵͰݻఆ Կ͔ͷঢ়ଶʹԠͯ͡εϐʔυΛม͑Δͱ͍͏͜ͱ͸Ͱ͖ͳ͍ ͔ͯ͜Ε͡ΌΞχϝʔγϣϯ
 ͱ͸ݴ͑ͳ͘ͳ͍ʁ ͏ͬͤ͐ʂ 💢

Slide 61

Slide 61 text

iOSDC Japan 2022 - Unconference #iosdc #unconference RunCatͱͯ͠ͷ՝୊ ࢓૊Έ্ɺίϚૹΓͷִؒ͸̍ඵͰݻఆ Կ͔ͷঢ়ଶʹԠͯ͡εϐʔυΛม͑Δͱ͍͏͜ͱ͸Ͱ͖ͳ͍ ঢ়ଶʹԠͯ͡ೣҎ֎ͷϥϯφʔʹ੾Γସ͑Δ ૸͍ͬͯΔίϚΞχϝ͚ͩͰͳ͘า͍͍ͯΔίϚΞχϝ΋༻ҙ͢Δ

Slide 62

Slide 62 text

iOSDC Japan 2022 - Unconference #iosdc #unconference iOSͷ΢ΟδΣοτͰ΋ೣ૸Β͍ͤͨ Thank you! ઓ͍͸·ͩଓ͘…