Let'Swift 2019 참석 후기 - 1
올해도 돌아온 Let'Swift 에 참석하였습니다. 이번 컨퍼런스도 참 유익한 내용이 많았습니다. 아직 발표 자료들이 홈페이지에 모두 오픈되지 않았지만, 세션을 들으면서 정리한 내용을 공유해 봅니다.
- 개인적인 의견도 중간중간 포함되어 있으니 참고 부탁드립니다.
- 발표자료와 예제는 Let'Swift 홈페이지의 Program 섹션에서 공개되고 있습니다.
Animations
iPhone OS 3.0 부터 존재하던 CADisplayLink 라는 기능을 이제서야 알게 되었습니다. 이 기능은 각 기기의 화면 주사율에 맞춰 특정 코드를 실행시켜 주는 타이머로 기존에 사용하던 UIView.animate() 보다 더 구체적인 작업을 할 수 있도록 해줍니다.
네트워크 호출의 Response Time 차이로 렌더링이 순차적으로 진행되지 않을 경우 UX에 문제가 생길 수 있습니다. (ex. 시선 분산으로 인한 퍼널 이탈, 터치 오동작)
순차적인 렌더링을 보장하기 위해 야놀자에서는 In-House 라이브러리를 만들어 사용한다고 합니다. 유사한 오픈소스 라이브러리가 있는지 찾아봐야 할 것 같습니다.
Combine + SwiftUI
RxSwift 와 매우 유사한 기능을 가진 프레임워크를 애플에서 직접 만든 것이 Combine 이라고 이해하였습니다. 하지만 조금씩 다른 부분은 있었습니다. 기존에 애플이 제공하던 비동기 인터페이스들(Delegation, KVO, NotificationCenter, etc..)이 많은데 대체 할 수 있을까 하는 생각도 처음에는 들었는데, 세션이 끝날때쯤에는 언젠가 대체되겠구나 라는 생각을 하게 되었습니다.
Combine + SwiftUI 을 RxSwift + UIKit 과 비교해 보면 다음과 같은 장단점을 확인 할 수 있습니다.
- Pros: 코드의 양이 줄어듬. 성능이 좋아짐. 용량이 많이 줄어듬 (코드의 양이 줄어드는건 SwiftUI 의 역할이 크다고 생각하지만..)
- Cons: iOS 13 이상에서만 사용할 수 있음
두 기술을 비교해 봤을 때 들었던 생각은 언젠가는 저 쪽으로 넘어가야 하지 않을까? 였습니다. 안 넘어가면 뒤쳐질 것 같은 느낌적 느낌. 요즘 구직 시장에서도 RxSwift 를 사용할 수 있는 사람을 더 요구하는 것처럼 말이죠.
Architecture - RIBs
카카오뱅크에서는 많은 아키텍처(MVC, MVVM, ReactorKit, VIPER, …)들을 거치면서 불만족하는 점들이 하나씩 있었는데, 현재는 RIBs를 도입하는 중이라고 합니다.
RIBs는 Viewless Architecture으로 뷰에 종속되지 않는 많은 비즈니스 로직을 분리할 수 있어 도입하게 되었다고 합니다. 적용할 때는 신규 기능과 비즈니스 로직들을 RIB로 변경하고 프로젝트를 기능별로 쪼개서 별도로 패키징하였다고 합니다.
RIBs의 장점은 아래와 같습니다.
- (강제) 프로토콜 지향 프로그래밍
- 표준화된 틀이 존재하고, 테스트 코드를 작성하기가 쉬움
- 복잡한 로직 흐름을 모듈화
물론 단점도 있었는데요
- 파일이 많이 생성됨
- 프로토콜 지향 프로그래밍을 굳이 해야 하는가에 대한 의문
세션을 들으면서 가장 머릿속에 남았던 내용은 "프로젝트를 기능별로 쪼개서 별도로 패키징 하는 것"이 많은 이점이 있는 것으로 보여 적용해보고 싶다는 생각이 들었습니다.
글이 너무 길어지는 것 같아 다음 글에서 나머지 세션에 대한 내용들을 적어보도록 하겠습니다.