Slide 1

Slide 1 text

SwiftUIってこんなやつ
 Recap of WWDC19
 
 佐藤剛士 2019 年 6 月 13日
 


Slide 2

Slide 2 text

Who am I
 ● Name
 ● 佐藤剛士(さとうたけし) 
 ● Company
 ● Merpay, Inc.(2019/01 ~) 
 ● Role
 ● Software Engineer (iOS) 
 ● Account
 ● Twitter: @hatakenokakashi 
 ● Facebook: 佐藤剛士 
 ● GitHub: SatoTakeshiX 


Slide 3

Slide 3 text

SwftUIとは?


Slide 4

Slide 4 text

SwiftUI
 ● 全く新しいレンダリングシステム
 ● Pure Swift
 ● 宣言的レイアウト
 ● Design Tools on Xcode11
 ● Preview on Xcode11
 ● iOS13 or later


Slide 5

Slide 5 text

https://developer.apple.com/tutorials/swiftui/


Slide 6

Slide 6 text

チュートリアルアプリをみてみよう


Slide 7

Slide 7 text

Use the features of Swift5.1
 ● Opaque Result Type
 ● Implicit return from single-expression functions
 ● Function Builder


Slide 8

Slide 8 text

Opaque Result Type
 
 
 ● 具体的な型を隠蔽したまま実行時のオーバーヘッドを支払わずに済す方法
 ● Swift 5.1 に導入される Opaque Result Type とは何か
 ● some修飾子をつけることでOpaque Result Typeであることを表します。
 
 
struct ContentView: View { var body: some View {// Opaque Result Type! VStack {...} } }


Slide 9

Slide 9 text

Implicit returns from single-expression functions
 ● 今までクロージャーでは1ステートメントならreturnなしで値を返せた
 ● それを関数、コンピューテッドプロパティ、subscriptも認める機能
 var body: some View { VStack {...} // bodyはVStackというインスタンスを返すコンピューテッドプロパティ } // 上記と下記は同じ意味 var body: some View { get { return VStack{...} } }

Slide 10

Slide 10 text

Function Builder
 ● 独自のAttributeを定義できる
 ● SwiftUIではViewBuilderというAttributeを定義している
 @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *) @_functionBuilder public struct ViewBuilder { /// Builds an empty view from an block containing no statements, `{ }`. public static func buildBlock() -> EmptyView /// Passes a single view written as a child view (e..g, `{ Text("Hello") }`) through /// unmodified. public static func buildBlock(_ content: Content) -> Content where Content : View }

Slide 11

Slide 11 text

ViewBuilder
 VStack { MapView() CircleImage() Text("Turtle Rock") } VStack { ViewBuilder.buildBlock( MapView(), CircleImage(), Text("Turtle Rock") ) }

Slide 12

Slide 12 text

まとめ
 ● SwiftUIでView構築が断然楽になる
 ● 豊富なチュートリアルですぐにキャッチアップ可能!
 ● Swift5.1の機能をふんだんに使っている
 ○ Opaque Result Type 
 ○ Implicit returns from single-expression functions 
 ○ ViewBuilder/Function Builder 


Slide 13

Slide 13 text

SwiftUIをはじめよう!