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
TCA with UIKit [TCAでわいわいLT会]
Search
tatsubee
March 18, 2024
1
770
TCA with UIKit [TCAでわいわいLT会]
tatsubee
March 18, 2024
Tweet
Share
More Decks by tatsubee
See All by tatsubee
pixivのリアーキテクチャにおける The Composable Architecter活用
shoryuyamamoto
0
67
pixivアプリは変化する
shoryuyamamoto
0
170
マルチウィンドウでアプリケーションの表現を拡張する
shoryuyamamoto
1
110
【After iOSDC LT Night〜ピクシブ×日経×タイミー〜】実装!Interactive Widgets
shoryuyamamoto
0
13
SwiftPM マルチモジュール構成への第一歩
shoryuyamamoto
0
1.8k
Dart Macrosに願いを [YOUTRUST x ゆめみ Flutter LT会@渋谷 #4]
shoryuyamamoto
0
620
riverpodを理解したい
shoryuyamamoto
0
84
pixiv-iosを破壊したい #pixivmeetup
shoryuyamamoto
0
1.3k
キャッチアップ!The Composable Architecture
shoryuyamamoto
1
350
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
296
20k
RailsConf 2023
tenderlove
29
870
Building Flexible Design Systems
yeseniaperezcruz
327
38k
How STYLIGHT went responsive
nonsquared
95
5.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
41
2.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.2k
Statistics for Hackers
jakevdp
796
220k
GraphQLの誤解/rethinking-graphql
sonatard
66
9.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Building Adaptive Systems
keathley
38
2.2k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.1k
Transcript
Presented by 辰べえ 2024.03.18 Presented by 辰べえ TCA with UIKit
辰べえ iOSエンジニア 辰べえ iOSエンジニア 2 自己紹介 • 23新卒 • 福岡生まれ
福岡育ち 東京在住 • 最近やっていること ◦ お絵描き ◦ テニス ◦ iOS
UIKitでTCAを使うことを考える 3
UIKitでTCAを使うことを考える • 「TCAはSwiftUIで使うもの」という印象がある 4
UIKitでTCAを使うことを考える • 「TCAはSwiftUIで使うもの」という印象がある • しかし新規のプロダクトをSwiftUIで実装するならともかく、 以前からあるプロダクトでUIKit→SwiftUIの移行を今すぐに行うことは 容易ではない 5
UIKitでTCAを使うことを考える • 「TCAはSwiftUIで使うもの」という印象がある • しかし新規のプロダクトをSwiftUIで実装するならともかく、 以前からあるプロダクトでUIKit→SwiftUIの移行を今すぐに行うことは 容易ではない • じゃあUIKitではTCAはどのように使えるんだろう? 6
UIKitでTCAを使うことを考える • 「TCAはSwiftUIで使うもの」という印象がある • しかし新規のプロダクトをSwiftUIで実装するならともかく、 以前からあるプロダクトでUIKit→SwiftUIの移行を今すぐに行うことは 容易ではない • じゃあUIKitではTCAはどのように使えるんだろう? •
後世、UIKitからSwiftUIに移行することを前提として、あらかじめTCA を導入することも一つの手では? 7
UIKitにおけるTCAの基本的な実装 8
9 Reducerの実装
10 Storeの保持
11 Actionの実行
12 State変更時
注意点 13
14 状態の変化によって まとめて実行される
15 ←重い処理
16 処理の単位で分割! ←重い処理
UIKitからSwiftUIへの移行 17
UIKitからSwiftUIへの移行 18 UIKitからSwiftUIへの移行が簡単にできるか?
UIKitからSwiftUIへの移行 19 UIKitからSwiftUIへの移行が簡単にできるか? →場合による
UIKitからSwiftUIへの移行 20 ユーザーが実行するアクションが単純な場合: 移行は比較的簡単
UIKitからSwiftUIへの移行 21 アクションが複雑な場合: SwiftUI側に機能が足りていない場合がある
まとめ 22 • UIKitにTCAを採用することができるか? ◦ ◎ ◦ そもそもUIKitでも使いやすいよう作られている • 後々、UIKitからSwiftUIに移行しやすいか?
◦ ◦ ◦ 単純な機能(Tap等)であればReducerはそのまま移行できる ◦ 複雑な機能(Drag&Drop等)だと、ロジックの改修を必要とする場合がある ▪ とはいえ、Reducerの形は大きく変わらないので改修も難しくない(かも)
ご清聴 ありがとうございました! 23