본문 바로가기
생각정리

결국 문제는 선택과 집중..

by iOS_woo 2023. 3. 15.

요즘 들어 고민이 많아졌다.

앞으로의 선택과 집중에 대한 것.. 

 

요즘 나는 뭘 했을까?

업비트에서 웹소켓 API를 활용해 실시간 데이터를 화면에 뿌려주는 것을 구현 성공했다. 

이 과정에서 메인쓰레드에서 너무 많은 작업을 해서 버벅였던 문제를 해결했다. 
또한 백그라운드에서 포어그라운드, 포어그라운드에서 백그라운드로 움직일 때 소켓의 연결/닫기를 호출하여 컨트롤 하는 것도 구현했다. 

데이터가 갱신되면 번쩍거리면서 보여준다.

결과적으로 1초에 몇번이고 웹소켓을 통해 끊임없이 데이터를 받아오고 가공하고 저장하고 화면에 업데이트하는 작업이 발생하지만 전혀 버벅임 없이 부드러운 앱이 되었다. 

 

Swift Concurrency를 통한 동시적 프로그래밍에 대한 개념도 어제, 오늘 학습하게 되어서 공부해서 코드에 적용해 볼 부분이 많다. 

요즘 계속 갖게 되는 고민은.. 앞으로도 블록와이드에 SwiftUI를 통한 개발을 계속 진행하는 것이 과연 맞는지에 대한 생각이다.
SwiftUI로는 많은 작업들을 해왔고, 시간의 문제이지 못 만들 화면은 없다고 생각한다. 


업비트에서 웹소켓으로 데이터를 받아서 기존의 코인겍코에서 받아오던 리스트를 대체할 수 있는 다른 리스트를 만들었다. 
그 결과 여러 화면과 뷰모델 등을 거의 새롭게 작성하는 수준으로 재작업해야 한다. 
시간이 걸릴 뿐 이미 해봤던 것이라 100% 확률로 해낼 것이다. 

그런데.. 과연 그 시간들이 의미가 있는 시간일까 고민이 된다. 

만약 블록와이드 앱을 UIKit과 RxSwift로 만들었다면 어땠을까?
SwiftUI에 자신이 있는 만큼 UIKit과 Rx에 자신이 있었다면 어땠을까?
더 많은 기업에서 면접을 볼 수 있는 기회가 있지 않았을까 싶은 생각이 든다. 

그래서 지금 출시한 블록와이드에 SwiftUI로 기능을 많이 추가해서 좋은 앱이 된다고 했을 때의 장단점을 생각해보고 있고, 
앞으로 어떤 것에 집중을 해야할지 살피고 있다. 

 

앞으로 기술적으로 조금더 도전해볼 부분은 조금더 발전된 동시성 프로그래밍과 CRUD를 통한 REST API의 다양한 메서드 경험, 알림, 위치서비스, 결제 구현, TDD, AB 테스트 등등 .. 유저 인터페이스 외적인 도전을 생각해보면 이렇게 나열이 된다. 

 

이런 공부를 하며 축적된 경험들이 SwiftUI, Combine으로 쌓이는 것이 유리할까, UIKit + RxSwift로 쌓이는 것이 유리할까?


그래서 요즘 드는 생각은 블록와이드를  UIKit + RxSwift 기반으로 처음부터 다시 만들어보면 어떨까 싶다. 


업비트 RestAPI와 웹소켓으로 처음부터 다시 만들어보고, 앱의 완성도가 높아진다면 출시하고,

혹은 완성도를 아주 높게 가져가지 않고 다양한 기술적 도전들을 소규모 프로젝트로 진행해 깃허브에 올려보는 것도 고민 중이다. 
지금까지는 RestAPI의  GET 메서드만 사용해보았는데, 나머지 메서드들도 경험을 해봐야 한다. 
인스타그램 클론을 해볼까.. 업비트에 매수/매도 주문을 시도해볼까? 

UIKit과 SwiftUI는 사실 유저 인터페이스를 어떻게 그릴 것인지에 대한 문제라서, 그 외에 네트워크 통신이나 코어 데이터, 동시성 프로그래밍, 데이터 바인딩 등은 지금 내가 쌓은 경험과 다를게 없지 않을까 예상을 해본다. 
RxSwift와 Combine도 유사한 개념이라서 생각보다 어렵지 않을 수도 있겠다 싶다. 

결국 선택과 집중의 문제.. 2보 전진을 위해 SwiftUI로 블록와이드를 멋지게 만들고 싶다는 생각을 잠시 내려두고 UIKit을 공부해야하는 시점이 바로 지금이 아닐까 싶다.

원래는 바이낸스 API로도 작업해서 업비트와 바이낸스를 동시에 볼 수 있도록 하고 싶었다. 
김프도 계산하고, 펀딩비도 보여주고, 호가창도 보여주고, 시간별 차트도 트레이딩뷰가 아닌 직접 그린 라인차트를 사용하고 싶었다. 
위젯도 만들고, 알림 서비스도 구현해보고, 매수/매도 등도 시도해보고.. 


그런데 여기서 중요한건.. 그 모든 구현이 UIKit으로 구현되어야 취업시장에서 의미있는 작업들이 된다는 것.. 
지금 당장 구현하고 앱을 업데이트하고 싶은데 욕심을 내려놓기가 참 어렵긴하다. 

댓글