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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
tatsubee
March 18, 2024
1
1.4k
TCA with UIKit [TCAでわいわいLT会]
tatsubee
March 18, 2024
Tweet
Share
More Decks by tatsubee
See All by tatsubee
マルチウィンドウ実践ガイド
shoryuyamamoto
0
220
Create Spatial Photo with ImagePresentationComponent
shoryuyamamoto
0
82
pixivのリアーキテクチャにおける The Composable Architecter活用
shoryuyamamoto
0
170
pixivアプリは変化する
shoryuyamamoto
0
1k
マルチウィンドウでアプリケーションの表現を拡張する
shoryuyamamoto
1
340
【After iOSDC LT Night〜ピクシブ×日経×タイミー〜】実装!Interactive Widgets
shoryuyamamoto
0
58
SwiftPM マルチモジュール構成への第一歩
shoryuyamamoto
0
3.1k
Dart Macrosに願いを [YOUTRUST x ゆめみ Flutter LT会@渋谷 #4]
shoryuyamamoto
0
850
riverpodを理解したい
shoryuyamamoto
0
160
Featured
See All Featured
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
Facilitating Awesome Meetings
lara
57
6.7k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
First, design no harm
axbom
PRO
2
1.1k
Done Done
chrislema
186
16k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
110
We Have a Design System, Now What?
morganepeng
54
8k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
75
How to Think Like a Performance Engineer
csswizardry
28
2.4k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
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