Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SwiftUIのライブコーディングす るとxcodeが◯回落ちる
Search
notoroid
July 27, 2019
Programming
490
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SwiftUIのライブコーディングす るとxcodeが◯回落ちる
SwiftUIが発表されたWWDC2019初期から間もないプレゼンテーション資料。beta版のxcodeで実際に実演したところ表題通りxcodeが途中終了してしまった。
notoroid
July 27, 2019
More Decks by notoroid
See All by notoroid
ServerSideSwiftAndContainerMachine - アプリ実装そのままクラウド
notoroid
0
43
Testflight - iOS27 でのAppleIntelligenceの強化
notoroid
0
54
New_features_in_Xcode26.3_to_Xcode26.4.pdf
notoroid
0
100
iOS26 オーディオ録音新機能 - iOS26 AVInputPickerInteraction
notoroid
0
150
Info.plist - after Xcode26.
notoroid
0
92
GeometryReader - SwiftUI
notoroid
0
120
iOS 26 SDKの新機能 (liquid抜き) - iOS26orLaterUpdateAndSceneForUIKit
notoroid
0
260
UIテスト自動化サポート- Testbed for XCUIAutomation practice
notoroid
0
260
UIViewController - Interactive PopGesture
notoroid
0
120
Other Decks in Programming
See All in Programming
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
600
ALB ログから Trace を気合で繋げる技術
fohte
7
840
Oxlintはいいぞ(続)
yug1224
1
510
[PyCon KR 2026] More Variants, More Diversity for AI Accelerators
achimnol
0
130
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
870
FDEとは、何者なのか?
masapyon1212
0
110
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
500
週末にAI-DLCを本気で回したら$1,600溶けた
hbashimizu
0
110
信頼性の目標を誰も求めてない
shubox
0
470
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
280
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
2
920
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
130
Featured
See All Featured
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
410
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
How GitHub (no longer) Works
holman
316
150k
Chasing Engaging Ingredients in Design
codingconduct
0
290
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
How to make the Groovebox
asonas
2
2.4k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
510
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
590
Transcript
4XJGU6*ͷϥΠϒίʔσΟϯά͢ ΔͱYDPEF͕̋ճམͪΔ ͜ΕͬͯτϦϏΞʹͳΓ·ͤΜ͔
ࣗݾհ
ೳొཁ !OPUPSPJE w J04ΞϓϦ։ൃऀ w ߸͍Γ·͢ిࢉاը w !OPUPSPJE w !JSJNBTV
w Fεϙʔπ
w 4XJGU6*ొ w 4XJGU6*ϥΠϒίʔσΟϯά w ·ͱΊ
͢ൣғ w 4XJGU6*5VUPSJBMTΛͬͨϥΠϒίʔσΟϯά w $SFBUJOHBOE$PNCJOJOH7JFXT w IUUQTEFWFMPQFSBQQMFDPNUVUPSJBMTTXJGUVJDSFBUJOHBOE DPNCJOJOHWJFXT w %SBXJOH1BUITBOE4IBQFT
w IUUQTEFWFMPQFSBQQMFDPNUVUPSJBMTTXJGUVJESBXJOHQBUIT BOETIBQFT
͞ͳ͍ൣғ w ը໘ભҠ w σʔλόΠϯσΟϯά w طଘ6*ͱͷΈ߹Θͤ w Ξχϝʔγϣϯ w
04͝ͱͷ4XJGU6*ͷద༻
4XJGU6*ొ
88%$ ։ൃऀʹΓࢁͷ༰
4XJGU6*
4XJGU6* w 4XJGUϕʔεͷ6*࡞ϑϨʔϜϫʔΫ w %4- ༻్ൣᙝݻ༗ݴޠ ͕4XJGUͰهड़Ͱ͖Δ w 4XJGUΛ%4-ʹدͤͨ w
6*Λߏ͢Δجຊఆٛ7JFX w 7JFXΛએݴత %FDMBSBUJWF ʹهड़Ͱ͖؆ܿͳهड़͕Մೳ
4XJGU6* w 4XJGUϕʔεͷ6*࡞ϑϨʔϜϫʔΫ w %4- ༻్ൣᙝݻ༗ݴޠ ͕4XJGUͰهड़Ͱ͖Δ w 4XJGUʹ༷ΛՃͯ͠%4-ʹدͤͯ͠·͏ w
6*Λߏ͢Δجຊఆٛ7JFX w 7JFXΛએݴత %FDMBSBUJWF ʹهड़Ͱ͖؆ܿͳهड़͕Մೳ
4XJGU6* w 4XJGUϕʔεͷ6*࡞ϑϨʔϜϫʔΫ w %4- ༻్ൣᙝݻ༗ݴޠ ͕4XJGUͰهड़Ͱ͖Δ w 4XJGUʹ༷ΛՃͯ͠%4-ʹدͤͯ͠·͏ w
6*Λߏ͢Δجຊఆٛ7JFX w 7JFXΛએݴత %FDMBSBUJWF ʹهड़Ͱ͖؆ܿͳهड़͕Մೳ Կ
એݴత %FDMBSBUJWF w ͋Δग़ྗΛಘΔʹ͋ͨͬͯͦΕΛ࡞͢Δํ๏Ͱͳ͘ɺग़ྗͷੑ࣭Λه ड़͢Δ͜ͱΛʮએݴܕʯͱশ͢Δ w એݴతϓϩάϥϛϯάͷʮએݴతʯͬͯʁ w
IUUQTTIIBUFOBEJBSZPSHFOUSZ w )5.-એݴత
"QQMFͱͯ͠
એݴతͳهड़ΛՄೳͱ͠ એݴతͳهड़ʹ׳Ε͍ͯΔ ࡞Γख 8FC։ൃऀ Λݺͼد͍ͤͨ
એݴతͳख๏Λఏڙ͢Δ͜ͱͰ ༷ʑͳ04 J04 NBD04 XBUDI04 Ͱ ಉ͡ख๏Λద༻Ͱ͖ΔΑ͏ʹ͍ͨ͠
"QQMFͷ4XJGU6*ಋೖ w એݴతͳهड़ΛՄೳͱ͠એݴతͳهड़ʹ׳Ε͍ͯΔ࡞ΓखΛݺͼد͍ͤͨ w એݴతͳख๏Λఏڙ༷͠ʑͳ04Ͱಉ͡ख๏Λద༻Ͱ͖ΔΑ͏ʹ͍ͨ͠ w *OUFSGBDFCVJMEFSͰͷ6*࡞͔ΒҎ্ܦͪٻΊΒΕΔͷΛఏڙ͠ ͨ
"QQMFͷ4XJGU6*ಋೖ w એݴతͳهड़ΛՄೳͱ͠એݴతͳهड़ʹ׳Ε͍ͯΔ࡞ΓखΛݺͼد͍ͤͨ w એݴతͳख๏Λఏڙ༷͠ʑͳ04Ͱಉ͡ख๏Λద༻Ͱ͖ΔΑ͏ʹ͍ͨ͠ w *OUFSGBDFCVJMEFSͰͷ6*࡞͔ΒҎ্ܦͪٻΊΒΕΔͷΛఏڙ͠ ͨ 8FC։ൃऀʹ·Ͱ։ൃऀͷؒޱΛ͛Δ
ैདྷͷ6*෦ 4UPSZCPBSE YJC Έ߹ΘͤՄೳ
04ʹ࠷దԽ͞ΕͨػೳΛ͜Ε·ͰͲ ͓ΓΞϓϦʹΈࠐΉ͜ͱͰ͖Δ
એݴతهड़ʹෳࡶͳػೳΛఏڙͰ͖Δ ͍͏ͱࢥ͍ग़͢
8FCϒϥβʔ 'MBTI લ
4XJGU6*ͱطଘ6*ϑϨʔϜϫʔΫڞଘ͠ ͭͭ4XJGU6*ͰϦϓϨʔεͰ͖Δ6* ؆ܿʹهड़Ͱ͖ΔΑ͏ʹͳΔ J04͔Βʜ
4XJGU6*ϥΠϒίʔσΟϯά
4XJGU6*؆ܿʹ هड़Ͱ͖Δͷ͕ڧΈ
ͱ͍͑ҙਤͨ͠ϨΠΞτ͕ ࡞Εͳ͚ΕʹͳΒͳ͍
ࠓճطଘͷ6*Λਅࣅͯ͠ΈΔ
ਅࣅ͢Δର λΠϦϯάϕʔεͷ6*
ਅࣅ͢Δ6*
(MPSJPVT#BUUFSZ w ·ͰͷόοςϦʔঢ়ଶΛͱഎܠ ৭Ͱݟ͘͢දࣔ w ΫϦʔϯͳΠϯλʔϑΣΠε w όοςϦʔঢ়ଶɺॆిঢ়ଶͷΈΛදࣔ w όοςϦʔ֬ೝ͍ͨ͠σόΠεΛট
w ·ͰొՄೳɻͭͷը໘Ͱ֬ೝͰ ͖·͢ɻ
࣮ࡍͷϨΠΞτΛݟͯΈΔ
None
ηϧ 4BGF"SFB·Ͱ ృΓͭͿ͠
None
όοςϦʔྔ ୯Ґ ࣌ؒຖάϥϑ ॆిঢ়ଶ ໊ ԁάϥσʔγϣϯ
(MPSJPVT#BUUFSZͷϨΠΞτ w ηϧ w ηϧຖʹόοςϦʔใ w ηϧͷഎ໘ʹάϥσʔγϣϯ w ηϧ4BGF"SFBΛग़͍ͯΔ
YDPEFͷ ςϯϓϨʔτ͔ΒσβΠϯΛ ͚ۙͮͯΈΔ
ϨΪϡϨʔγϣϯ 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Λ༻
7JFX
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*ͷςϯϓϨʔτίʔυ 7JFXCPEZͰͭͷ7JFXΛੜ ͨ͠એݴΛ͢ඞཁ͕͋Δɻ
ΈࠐΈ7JFXੜ 5FYU *NBHF -JOFBS(SBEJFOU 3BEJBM(SBEJFOU 3FDU"OHMF $JSDMF &MMJQTF (FPNFUSZ3FBEFS "OHVMBS(SBEJFOU
$BQTVMF
ෳͷ7JFXΛஔ͢Δ߹ɺ 4UBDL )4UBDL 74UBDL ;4UBDL
)4UBDL HStack { RectAngle() .foregroundColor(Color.red) RectAngle() .foregroundColor(Color.green) RectAngle() .foregroundColor(Color.blue) }
ᶃ ᶄ ᶅ هड़ॱʹࠨ͔Βӈʹஔ ᶃ ᶄ ᶅ
74UBDL VStack { RectAngle() .foregroundColor(Color.red) RectAngle() .foregroundColor(Color.green) RectAngle() .foregroundColor(Color.blue) }
ᶃ ᶄ ᶅ هड़ॱʹ্͔ΒԼʹஔ ᶃ ᶄ ᶅ
;4UBDL ZStack { RectAngle() .foregroundColor(Color.red) RectAngle() .foregroundColor(Color.green) RectAngle() .foregroundColor(Color.blue) }
ᶃ ᶄ ᶅ هड़ॱʹԞʹஔ ᶃ ᶄ ᶅ
4UBDLͷஔ7JFXଆʹαΠζ ࢦఆ͕ͳ͍ݶΓഒஔ
٧ΊࠐΉ߹ 4QBDFS Λࢦఆ
7JFXFEHFT*HOPSJOH4BGF"SFB Λ ͏ͱ4BGF"SFBΛແࢹ͢ΔΑ͏ʹͳΔ
4UBDL )4UBDL 74UBDL )4UBDL Λ Θͳͯ͘ஔͰ͖Δ
7JFXʹஔ
7JFXʹஔ
CBDLHSPVOECPEZͷDMJQϑΟϧλʔʹ Өڹ͢Δɻ
CBDLHSPVOE7JFXDMJQ ͷ ݁Ռ͕ө͞ΕΔ
Rectangle() .fill( Color.clear ).background( എܠඳը͢ΔView ) .clipped()
ϥΠϒίʔσΟϯάத
Ϧιʔε w ϑΥϯταΠζ w ϑΥϯταΠζP⒎TFU w ϑΥϯτશମΦϑηοτ w άϥσʔγϣϯΧϥʔ
w άϥσʔγϣϯΧϥʔ
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") )
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) }
·ͱΊ w 4XJGU6*4XJGUͰهड़Ͱ͖Δ%4-Ͱ͋Δ4XJGUιʔείʔυͰ͢ w ͿΓʹ"QQMF͕ॏ͍ࠊΛ্͛ͯ৽͍͠։ൃऀͷݺͼࠐΈத w 4XJGU6*ͷϨΠΞτ8FCͷσβΠϯʹ͍͚ۙͲΫη͋Γ w 4XJGU6*ྲྀ͠ࠐΉσʔλιʔε͋Γ͖ͳͷͰϞοΫΞοϓ༻ͷσʔλ ४උͨ͠΄͏͕͍͍͔