tomáš kohout: jak zrychlit ios vývoj pomocí swift playgoundů
TRANSCRIPT
![Page 1: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/1.jpg)
![Page 2: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/2.jpg)
TOMÁŠ KOHOUTiOS Developer, Ackee
![Page 3: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/3.jpg)
Speeding up iOS development using Swift Playground
![Page 4: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/4.jpg)
Swift is great but …
![Page 5: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/5.jpg)
Migrations
the ABI is not stable
migrate with every version of
swift
large projects = days to weeks
for migration (2.3 to 3)
hopefully less breaking changes in future
![Page 6: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/6.jpg)
Xcode
code completion sucks
refactoring non-existent
no plugins anymore
crashes
…
we can use emoticons in code
![Page 7: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/7.jpg)
Build times
small application = 2 - 5 mins
large application (>2000 files) =
40 mins
incremental builds does not
always work
![Page 8: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/8.jpg)
Feedback loop
1. Denial
2. Anger
3. Bargaining
4. Depression
5. Acceptance
RealityIdeal
1. Write code
2. Build
3. See result
![Page 9: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/9.jpg)
Build times
Build time: 68 s
Build time: 27 s
![Page 10: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/10.jpg)
Build time analyzerhttps://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode
![Page 11: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/11.jpg)
Code Injection
inject code in runtime
no need to rebuild the application
hard to setup
xcode plugin
https://github.com/johnno1962/injectionforxcode
![Page 12: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/12.jpg)
Code Injection II
separate application
since iOS 10 - simulator only
easier to setup
still unreliable
http://johnholdsworth.com/injection.html
![Page 13: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/13.jpg)
Swift playgrounds
test sample code
educational tool
prototype animations
![Page 14: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/14.jpg)
Playground live view
![Page 15: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/15.jpg)
Playground live view
since xcode 7.3
interactive
can display viewcontroller
![Page 16: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/16.jpg)
Swift playgrounds
![Page 17: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/17.jpg)
Swift playgrounds
isolate screens in playground pages
prototype much faster
mock state easily
![Page 18: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/18.jpg)
Demohttps://github.com/AckeeCZ/ios-playgrounds-example
![Page 19: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/19.jpg)
Kickstarter application
open sourced iOS application
26 playground pages
large code base
playgrounds starts in 10 - 20s
https://github.com/kickstarter/ios-oss
![Page 20: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/20.jpg)
TDD
1. add a test
2. run the test to see it fail
3. make change to pass the test
4. run the test again until it passes
5. repeat
![Page 21: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/21.jpg)
TDD in playground
you can also run tests in playground!
quick feedback
test in isolation
copy to your suite later
![Page 22: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/22.jpg)
Demohttps://github.com/sshrpe/TDDSwiftPlayground
![Page 23: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/23.jpg)
Limitations
only latest swift
debugging
no image literals
xcode support
![Page 24: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/24.jpg)
Xcode support
Xcode 7.3 💜
Xcode 8.0 - 8.2.1 🔥
Xcode 8.3 💜
Xcode 9 ❔
![Page 25: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/25.jpg)
Summary
long build times are bad
be aware of the compiler
code injection
isolate screens in playground pages
![Page 26: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů](https://reader031.vdocuments.mx/reader031/viewer/2022021422/58ee48a11a28ab86538b458b/html5/thumbnails/26.jpg)
WWW.MDEVTALK.CZ
mdevtalk