Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SwiftUIのライブコーディングす るとxcodeが◯回落ちる

SwiftUIのライブコーディングす るとxcodeが◯回落ちる

SwiftUIが発表されたWWDC2019初期から間もないプレゼンテーション資料。beta版のxcodeで実際に実演したところ表題通りxcodeが途中終了してしまった。

notoroid

July 27, 2019
Tweet

More Decks by notoroid

Other Decks in Programming

Transcript

  1. 4XJGU6*ͷϥΠϒίʔσΟϯά͢
    ΔͱYDPEF͕̋ճམͪΔ
    ͜ΕͬͯτϦϏΞʹͳΓ·ͤΜ͔

    View Slide

  2. ࣗݾ঺հ

    View Slide

  3. ೳొཁ !OPUPSPJE

    w J04ΞϓϦ։ൃऀ
    w ԰߸͍Γ·͢ిࢉاը
    w !OPUPSPJE
    w !JSJNBTV
    w Fεϙʔπ

    View Slide

  4. ୊໨
    w 4XJGU6*ొ৔
    w 4XJGU6*ϥΠϒίʔσΟϯά
    w ·ͱΊ

    View Slide

  5. ࿩͢ൣғ
    w 4XJGU6*5VUPSJBMTΛ࢖ͬͨϥΠϒίʔσΟϯά
    w $SFBUJOHBOE$PNCJOJOH7JFXT
    w IUUQTEFWFMPQFSBQQMFDPNUVUPSJBMTTXJGUVJDSFBUJOHBOE
    DPNCJOJOHWJFXT
    w %SBXJOH1BUITBOE4IBQFT
    w IUUQTEFWFMPQFSBQQMFDPNUVUPSJBMTTXJGUVJESBXJOHQBUIT
    BOETIBQFT

    View Slide

  6. ࿩͞ͳ͍ൣғ
    w ը໘ભҠ
    w σʔλόΠϯσΟϯά
    w طଘ6*ͱͷ૊Έ߹Θͤ
    w Ξχϝʔγϣϯ
    w 04͝ͱ΁ͷ4XJGU6*ͷద༻

    View Slide

  7. 4XJGU6*ొ৔

    View Slide

  8. 88%$͸
    ։ൃऀʹ੝Γ୔ࢁͷ಺༰

    View Slide

  9. ஫໨͸4XJGU6*

    View Slide

  10. 4XJGU6*
    w 4XJGUϕʔεͷ6*࡞੒ϑϨʔϜϫʔΫ
    w %4- ༻్ൣᙝݻ༗ݴޠ
    ͕4XJGUͰهड़Ͱ͖Δ
    w 4XJGUΛ%4-ʹدͤͨ
    w 6*Λߏ੒͢Δجຊఆٛ͸7JFX
    w 7JFXΛએݴత %FDMBSBUJWF
    ʹهड़Ͱ͖؆ܿͳهड़͕Մೳ

    View Slide

  11. 4XJGU6*
    w 4XJGUϕʔεͷ6*࡞੒ϑϨʔϜϫʔΫ
    w %4- ༻్ൣᙝݻ༗ݴޠ
    ͕4XJGUͰهड़Ͱ͖Δ
    w 4XJGUʹ࢓༷Λ௥Ճͯ͠%4-ʹدͤͯ͠·͏
    w 6*Λߏ੒͢Δجຊఆٛ͸7JFX
    w 7JFXΛએݴత %FDMBSBUJWF
    ʹهड़Ͱ͖؆ܿͳهड़͕Մೳ

    View Slide

  12. 4XJGU6*
    w 4XJGUϕʔεͷ6*࡞੒ϑϨʔϜϫʔΫ
    w %4- ༻్ൣᙝݻ༗ݴޠ
    ͕4XJGUͰهड़Ͱ͖Δ
    w 4XJGUʹ࢓༷Λ௥Ճͯ͠%4-ʹدͤͯ͠·͏
    w 6*Λߏ੒͢Δجຊఆٛ͸7JFX
    w 7JFXΛએݴత %FDMBSBUJWF
    ʹهड़Ͱ͖؆ܿͳهड़͕Մೳ
    Կ

    View Slide

  13. એݴత %FDMBSBUJWF

    w ͋Δग़ྗΛಘΔʹ͋ͨͬͯͦΕΛ࡞੒͢Δํ๏Ͱ͸ͳ͘ɺग़ྗͷੑ࣭Λه
    ड़͢Δ͜ͱΛʮએݴܕʯͱশ͢Δ
    w એݴతϓϩάϥϛϯάͷʮએݴతʯͬͯʁ

    w IUUQTTIIBUFOBEJBSZPSHFOUSZ
    w )5.-͸એݴత

    View Slide

  14. "QQMFͱͯ͠͸

    View Slide

  15. એݴతͳهड़ΛՄೳͱ͠
    એݴతͳهड़ʹ׳Ε͍ͯΔ
    ࡞Γख 8FC։ൃऀ
    Λݺͼد͍ͤͨ

    View Slide

  16. એݴతͳख๏Λఏڙ͢Δ͜ͱͰ
    ༷ʑͳ04 J04 NBD04 XBUDI04
    Ͱ
    ಉ͡ख๏Λద༻Ͱ͖ΔΑ͏ʹ͍ͨ͠

    View Slide

  17. "QQMFͷ4XJGU6*ಋೖ
    w એݴతͳهड़ΛՄೳͱ͠એݴతͳهड़ʹ׳Ε͍ͯΔ࡞ΓखΛݺͼد͍ͤͨ
    w એݴతͳख๏Λఏڙ༷͠ʑͳ04Ͱಉ͡ख๏Λద༻Ͱ͖ΔΑ͏ʹ͍ͨ͠
    w *OUFSGBDFCVJMEFSͰͷ6*࡞੒͔Β೥Ҏ্ܦͪٻΊΒΕΔ΋ͷΛఏڙ͠
    ͨ

    View Slide

  18. "QQMFͷ4XJGU6*ಋೖ
    w એݴతͳهड़ΛՄೳͱ͠એݴతͳهड़ʹ׳Ε͍ͯΔ࡞ΓखΛݺͼد͍ͤͨ
    w એݴతͳख๏Λఏڙ༷͠ʑͳ04Ͱಉ͡ख๏Λద༻Ͱ͖ΔΑ͏ʹ͍ͨ͠
    w *OUFSGBDFCVJMEFSͰͷ6*࡞੒͔Β೥Ҏ্ܦͪٻΊΒΕΔ΋ͷΛఏڙ͠
    ͨ
    8FC։ൃऀʹ·Ͱ։ൃऀͷؒޱΛ޿͛Δ

    View Slide

  19. ैདྷͷ6*෦඼ 4UPSZCPBSE YJC

    ΋૊Έ߹ΘͤՄೳ

    View Slide

  20. 04ʹ࠷దԽ͞ΕͨػೳΛ͜Ε·ͰͲ
    ͓ΓΞϓϦʹ૊ΈࠐΉ͜ͱ΋Ͱ͖Δ

    View Slide

  21. એݴతهड़಺ʹෳࡶͳػೳΛఏڙͰ͖Δ
    ͍͏ͱࢥ͍ग़͢

    View Slide

  22. 8FCϒϥ΢βʔ
    'MBTI
    ೥୅લ൒

    View Slide

  23. 4XJGU6*ͱطଘ6*ϑϨʔϜϫʔΫ͸ڞଘ͠
    ͭͭ4XJGU6*ͰϦϓϨʔεͰ͖Δ6*͸
    ؆ܿʹهड़Ͱ͖ΔΑ͏ʹͳΔ
    J04͔Β͸ʜ

    View Slide

  24. 4XJGU6*ϥΠϒίʔσΟϯά

    View Slide

  25. 4XJGU6*͸؆ܿʹ
    هड़Ͱ͖Δͷ͕ڧΈ

    View Slide

  26. ͱ͸͍͑ҙਤͨ͠ϨΠΞ΢τ͕
    ࡞Εͳ͚Ε͹࿩ʹͳΒͳ͍

    View Slide

  27. ࠓճ͸طଘͷ6*Λਅࣅͯ͠ΈΔ

    View Slide

  28. ਅࣅ͢Δର৅͸
    λΠϦϯάϕʔεͷ6*

    View Slide

  29. ਅࣅ͢Δ6*͸

    View Slide

  30. (MPSJPVT#BUUFSZ
    w ୺຤୆·ͰͷόοςϦʔঢ়ଶΛ਺஋ͱഎܠ
    ৭Ͱݟ΍͘͢දࣔ
    w ΫϦʔϯͳΠϯλʔϑΣΠε
    w όοςϦʔঢ়ଶɺॆిঢ়ଶͷΈΛදࣔ
    w όοςϦʔ֬ೝ͍ͨ͠σόΠεΛট଴
    w ୺຤୆·Ͱొ࿥Մೳɻͭͷը໘Ͱ֬ೝͰ
    ͖·͢ɻ

    View Slide

  31. ࣮ࡍͷϨΠΞ΢τΛݟͯΈΔ

    View Slide

  32. View Slide

  33. ηϧ
    4BGF"SFB·Ͱ
    ృΓͭͿ͠

    View Slide

  34. View Slide

  35. όοςϦʔྔ
    ୯Ґ
    ࣌ؒຖάϥϑ
    ॆిঢ়ଶ
    ୺຤໊
    ԁάϥσʔγϣϯ

    View Slide

  36. (MPSJPVT#BUUFSZͷϨΠΞ΢τ
    w ηϧ
    w ηϧຖʹόοςϦʔ৘ใ
    w ηϧͷഎ໘ʹάϥσʔγϣϯ
    w ηϧ͸4BGF"SFBΛग़͍ͯΔ

    View Slide

  37. YDPEFͷ
    ςϯϓϨʔτ͔ΒσβΠϯΛ
    ͚ۙͮͯΈΔ

    View Slide

  38. ϨΪϡϨʔγϣϯ
    w ϑΥϯταΠζ
    w ౓਺ϑΥϯταΠζP⒎TFU
    w ϑΥϯτશମΦϑηοτ
    w άϥσʔγϣϯΧϥʔ
    w $PMPS SFE HSFFO CMVF

    w άϥσʔγϣϯΧϥʔ
    w $PMPS SFE HSFFO CMVF

    w ԁάϥσʔγϣϯ։࢝൒ܘQYɺऴྃ൒ܘQY
    w ϓϩδΣΫτ໊͸.POJUPS
    w ΧελϜ7JFX͸ɺ$POUFOU7JFXɺ.POJUPS7JFXɺ(SBQI7JFXΛ࢖༻

    View Slide

  39. 7JFX

    View Slide

  40. import SwiftUI
    struct ContentView: View {
    var body: some View {
    Text("Hello World")
    }
    }
    #if DEBUG
    struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
    ContentView()
    }
    }
    #endif
    4XJGU6*ͷςϯϓϨʔτίʔυ
    7JFX͸CPEZͰͭͷ7JFXΛ೿ੜ
    ͨ͠એݴΛ౉͢ඞཁ͕͋Δɻ

    View Slide

  41. ૊ΈࠐΈ7JFX೿ੜ
    5FYU
    *NBHF
    -JOFBS(SBEJFOU
    3BEJBM(SBEJFOU
    3FDU"OHMF
    $JSDMF
    &MMJQTF
    (FPNFUSZ3FBEFS
    "OHVMBS(SBEJFOU
    $BQTVMF

    View Slide

  42. ෳ਺ͷ7JFXΛ഑ஔ͢Δ৔߹͸ɺ
    4UBDL )4UBDL 74UBDL ;4UBDL

    View Slide

  43. )4UBDL
    HStack {
    RectAngle()
    .foregroundColor(Color.red)
    RectAngle()
    .foregroundColor(Color.green)
    RectAngle()
    .foregroundColor(Color.blue)
    }



    هड़ॱʹࠨ͔Βӈʹ഑ஔ
    ᶃ ᶄ ᶅ

    View Slide

  44. 74UBDL
    VStack {
    RectAngle()
    .foregroundColor(Color.red)
    RectAngle()
    .foregroundColor(Color.green)
    RectAngle()
    .foregroundColor(Color.blue)
    }



    هड़ॱʹ্͔ΒԼʹ഑ஔ



    View Slide

  45. ;4UBDL
    ZStack {
    RectAngle()
    .foregroundColor(Color.red)
    RectAngle()
    .foregroundColor(Color.green)
    RectAngle()
    .foregroundColor(Color.blue)
    }



    هड़ॱʹԞʹ഑ஔ ᶃ


    View Slide

  46. 4UBDLͷ഑ஔ͸7JFXଆʹαΠζ
    ࢦఆ͕ͳ͍ݶΓ͸౳ഒ഑ஔ

    View Slide

  47. ٧ΊࠐΉ৔߹͸
    4QBDFS
    Λࢦఆ

    View Slide

  48. 7JFXFEHFT*HOPSJOH4BGF"SFB
    Λ࢖
    ͏ͱ4BGF"SFBΛແࢹ͢ΔΑ͏ʹͳΔ

    View Slide

  49. 4UBDL )4UBDL 74UBDL )4UBDL
    Λ
    ࢖Θͳͯ͘΋഑ஔͰ͖Δ

    View Slide

  50. 7JFXʹ഑ஔ

    View Slide

  51. 7JFXʹ഑ஔ

    View Slide

  52. CBDLHSPVOE͸CPEZͷDMJQϑΟϧλʔʹ
    Өڹ͢Δɻ

    View Slide

  53. CBDLHSPVOE͸7JFXDMJQ
    ͷ
    ݁Ռ͕൓ө͞ΕΔ

    View Slide

  54. Rectangle()
    .fill(
    Color.clear
    ).background(
    എܠඳը͢ΔView
    )
    .clipped()

    View Slide

  55. ϥΠϒίʔσΟϯάத

    View Slide

  56. Ϧιʔε
    w ϑΥϯταΠζ
    w ౓਺ϑΥϯταΠζP⒎TFU
    w ϑΥϯτશମΦϑηοτ
    w άϥσʔγϣϯΧϥʔ
    w άϥσʔγϣϯΧϥʔ

    View Slide

  57. RadialGradient(gradient: .init(colors: [Self.gradientStart, Self.gradientEnd]), center: .init(x: 0.5, y:
    0.5), startRadius: 50, endRadius: 150)
    .aspectRatio(contentMode: .fill)
    static let gradientStart = Color(red: 102.0 / 255, green: 196.0 / 255, blue: 66.0 / 255)
    static let gradientEnd = Color(red: 87.0 / 255, green: 161.0 / 255, blue: 58.0 / 255)
    // .previewDevice(PreviewDevice(rawValue: "iPhone 8") )
    .previewDevice(PreviewDevice(rawValue: "iPhone X") )

    View Slide

  58. import SwiftUI
    struct GraphView: View {
    var body: some View {
    HStack(spacing:0) {
    ForEach(0 ..< 12) { item in
    GraphLineView()
    }
    Spacer()
    }
    }
    }
    #if DEBUG
    struct GraphVioew_Previews: PreviewProvider {
    static var previews: some View {
    GraphView()
    // .previewDevice(PreviewDevice(rawValue: "iPhone 8") )
    .previewDevice(PreviewDevice(rawValue: "iPhone X") )
    }
    }
    #endif
    struct GraphLineView: View {
    var body: some View {
    ZStack {
    // Rectangle()
    // .foregroundColor(Color.green)
    ForEach(0 ..< 12 ) { item in
    GeometryReader { geometry in
    Path { path in
    let verticalOffset = 0.5 + (item == 0 ? 0 : (geometry.size.height * 0.2))
    path.move(
    to: CGPoint(
    x: 0.5 + CGFloat(item) * 2.5,
    y: verticalOffset
    )
    )
    path.addLine(
    to: CGPoint(
    x: 0.5 + CGFloat(item) * 2.5,
    y: 0.5 + geometry.size.height
    )
    )
    }
    .stroke(Self.strokeColor, lineWidth: 1)
    }
    }
    }.frame(width:29.5, height:20)
    }
    static let strokeColor = Color(white: 1, opacity: 0.8)
    }

    View Slide

  59. ·ͱΊ
    w 4XJGU6*͸4XJGUͰهड़Ͱ͖Δ%4-Ͱ͋Δ4XJGUιʔείʔυͰ͢
    w ೥ͿΓʹ"QQMF͕ॏ͍ࠊΛ্͛ͯ৽͍͠։ൃऀͷݺͼࠐΈத
    w 4XJGU6*ͷϨΠΞ΢τ͸8FCͷσβΠϯʹ͍͚ۙͲΫη΋͋Γ
    w 4XJGU6*͸ྲྀ͠ࠐΉσʔλιʔε͋Γ͖ͳͷͰϞοΫΞοϓ༻ͷσʔλ͸
    ४උͨ͠΄͏͕͍͍͔΋

    View Slide