Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
© DMM © DMM CONFIDENTIAL SwiftUI Performance 不要なViewの再描画と更新を抑える
Slide 2
Slide 2 text
© DMM 自己紹介 • 細田大志 • 2019年 中途入社 • 動画配信開発部 • DMMTVの開発 2
Slide 3
Slide 3 text
© DMM 3 • Viewの再描画と更新の仕組み • Identity • Property • Equatable • Viewの再描画と更新を抑える方法 • デバッグとInstruments アジェンダ
Slide 4
Slide 4 text
© DMM 4 • 再描画 • Viewを0から生成し直し表示する • ViewのIdentityが変化した場合 • 更新 • 必要なViewを更新して表示する • Viewのプロパティが変化した場合 Viewの再描画と更新
Slide 5
Slide 5 text
© DMM Identity SwiftUIはアプリの更新において同じか異なる要素かをIdentityによって認識 します。 SwiftUIには2種類のIdentityがあります。 • Explicit Identity • Structural Identity 5
Slide 6
Slide 6 text
© DMM Explicit Identity 明示的な値によって管理されるIdentity。 6
Slide 7
Slide 7 text
© DMM Structural Identity View構造と型によって管理される 7
Slide 8
Slide 8 text
© DMM Property • @State • @StateObject • @ObservedObject • @Binding • let • など 8
Slide 9
Slide 9 text
© DMM Equatable Viewが同値かによって更新するかを判定 9
Slide 10
Slide 10 text
© DMM 可能な限り分岐を統合する 可能な限りModifierを活用する 10
Slide 11
Slide 11 text
© DMM Viewには必要最低限な値を渡す プロパティが変更されると、View全体が更新される 11
Slide 12
Slide 12 text
© DMM Observation オブジェクトのプロパティをSwiftUIのViewが監視できるようになる。 12
Slide 13
Slide 13 text
© DMM Viewを分割する 複数のPropertyを持つViewのBodyを分割する 13
Slide 14
Slide 14 text
© DMM Viewを比較可能にする 14
Slide 15
Slide 15 text
© DMM ForEach ステーブルなidを使う 15
Slide 16
Slide 16 text
© DMM Debug • Self._printChanges • Viewが再描画または更新されるタイミングと要因を確認することができる • print(type(of: self.body)) • bodyの型情報を確認することができる 16
Slide 17
Slide 17 text
© DMM Instruments • Time Profiler • 実行された関数にかかった時間 • Hangs • 応答していないメインスレッドを検 出し、対応するインターバルをハ ングの可能性があるものとしてラ ベル付けされる • View Body • 作成されたビューの数と作成にか かった時間 17
Slide 18
Slide 18 text
© DMM ご静聴ありがとうございました