Slide 1

Slide 1 text

Presented by 辰べえ 2024.03.18 Presented by 辰べえ TCA with UIKit

Slide 2

Slide 2 text

辰べえ iOSエンジニア 辰べえ iOSエンジニア 2 自己紹介 ● 23新卒 ● 福岡生まれ 福岡育ち 東京在住 ● 最近やっていること ○ お絵描き ○ テニス ○ iOS

Slide 3

Slide 3 text

UIKitでTCAを使うことを考える 3

Slide 4

Slide 4 text

UIKitでTCAを使うことを考える ● 「TCAはSwiftUIで使うもの」という印象がある 4

Slide 5

Slide 5 text

UIKitでTCAを使うことを考える ● 「TCAはSwiftUIで使うもの」という印象がある ● しかし新規のプロダクトをSwiftUIで実装するならともかく、 以前からあるプロダクトでUIKit→SwiftUIの移行を今すぐに行うことは 容易ではない 5

Slide 6

Slide 6 text

UIKitでTCAを使うことを考える ● 「TCAはSwiftUIで使うもの」という印象がある ● しかし新規のプロダクトをSwiftUIで実装するならともかく、 以前からあるプロダクトでUIKit→SwiftUIの移行を今すぐに行うことは 容易ではない ● じゃあUIKitではTCAはどのように使えるんだろう? 6

Slide 7

Slide 7 text

UIKitでTCAを使うことを考える ● 「TCAはSwiftUIで使うもの」という印象がある ● しかし新規のプロダクトをSwiftUIで実装するならともかく、 以前からあるプロダクトでUIKit→SwiftUIの移行を今すぐに行うことは 容易ではない ● じゃあUIKitではTCAはどのように使えるんだろう? ● 後世、UIKitからSwiftUIに移行することを前提として、あらかじめTCA を導入することも一つの手では? 7

Slide 8

Slide 8 text

UIKitにおけるTCAの基本的な実装 8

Slide 9

Slide 9 text

9 Reducerの実装

Slide 10

Slide 10 text

10 Storeの保持

Slide 11

Slide 11 text

11 Actionの実行

Slide 12

Slide 12 text

12 State変更時

Slide 13

Slide 13 text

注意点 13

Slide 14

Slide 14 text

14 状態の変化によって まとめて実行される

Slide 15

Slide 15 text

15 ←重い処理

Slide 16

Slide 16 text

16 処理の単位で分割! ←重い処理

Slide 17

Slide 17 text

UIKitからSwiftUIへの移行 17

Slide 18

Slide 18 text

UIKitからSwiftUIへの移行 18 UIKitからSwiftUIへの移行が簡単にできるか?

Slide 19

Slide 19 text

UIKitからSwiftUIへの移行 19 UIKitからSwiftUIへの移行が簡単にできるか? →場合による

Slide 20

Slide 20 text

UIKitからSwiftUIへの移行 20 ユーザーが実行するアクションが単純な場合: 移行は比較的簡単

Slide 21

Slide 21 text

UIKitからSwiftUIへの移行 21 アクションが複雑な場合: SwiftUI側に機能が足りていない場合がある

Slide 22

Slide 22 text

まとめ 22 ● UIKitにTCAを採用することができるか? ○ ◎ ○ そもそもUIKitでも使いやすいよう作られている ● 後々、UIKitからSwiftUIに移行しやすいか? ○ ○ ○ 単純な機能(Tap等)であればReducerはそのまま移行できる ○ 複雑な機能(Drag&Drop等)だと、ロジックの改修を必要とする場合がある ■ とはいえ、Reducerの形は大きく変わらないので改修も難しくない(かも)

Slide 23

Slide 23 text

ご清聴 ありがとうございました! 23