UIKit으로 SNS를 만들어보는 프로젝트를 하던 중, 출시되어도 유지가 어려울 것 같은 앱을 만드는데 너무 많은 시간이 들어가고 있음에 회의를 느꼈다.
그렇게 시작하게된 실제로 사람들에게 도움이 될 수 있는 도구를 출시해보는 프로젝트, 미니체결 어플을 만들어보게 되었다.
이번에는 만드는 과정을 일일히 기록하지 않고 구현하는데 최대한 집중했다.
그래서 이렇게 따로 과정을 기록해보고자 한다.

미니체결을 구현하기 위해 도전하고 해결해야할 기술적 과제는 꽤 많았다.
1. API 요청 제한과 속도 문제
바이낸스의 수백개의 코인을 받아오기 위해서는 코인의 갯수만큼 API 요청을 해야한다.
업비트의 경우에는 한번에 전체 코인의 정보를 받아올 수 있는 API를 지원했지만, 바이낸스는 300개의 코인을 받아오려면 300번을 요청해야 했다.
요청 한번의 경우에는 인지하지 못할만큼의 빠른 속도로 데이터를 받아올 수 있지만, 요청이 100개를 넘어가면 버그인 것처럼 시간이 오래 걸리기 시작한다.
이를 위해서 스위프트 컨커런시에서 제공하는 TaskGroup을 활용해서 데이터를 10개씩 병렬로 가져오는 함수를 작성했다.
버그인 것처럼 오래걸리던 작업을 매우 빠르게 개선할 수 있었다.
2. 모든 코드를 다음 프로젝트에서도 재사용 가능하게 작성하기
이번 미니체결 프로젝트를 하면서 느꼈던 것이 첫번째 앱보다 두번째 앱을 만드는데 시간이 단축된다는 것이다.
그러나 시간을 단축하려면 재사용 가능한 코드가 있어야 한다.
이를 위해서 최대한 화면과 기능, 네트워크 요청 함수들을 분리해서 작성하는데 노력했다.
바이낸스 API 요청 함수들은 다음 프로젝트에서는 그저 복사/붙여넣기만 하면 사용할 수 있게 작성했다.
3. NotificationCenter 활용하기
로그인이 완료되어서 화면을 전환해야 하거나, 유저가 어떤 작업을 했을 시 앱 전역에 시그널을 줄 수 있는 방법은 꽤나 많다.
싱글턴과 RxSwift 활용, 딜리게이트 패턴 등.. 이번에는 NotificationCenter를 활용해서 단순한 시그널들을 처리하였다.
이런 기본적인 기능을 활용해서 처리하면 다른 개발자도 알아보기 편하고, 개발하는 과정 자체도 좋은 것 같다.
4. 웹소켓으로 받아오는 실시간 데이터 필터링해서 UITableView에 뿌려주기
SwiftUI에서는 꽤나 쉽게 구현할 수 있었던 기능이었는데, UITableView에서 구현하는 것은 꽤나 도전과제였다.
RxSwift로 실시간으로 쏟아지는 데이터를 어떠한 배열에 넣어주는 작업을 해봤는데, 데이터 레이싱 문제가 발생해서 Combine으로 대체하였다. Combine에서는 관련 문제가 없었기 때문.
5. UIKit 익숙해지기
UIKit을 학습하고 익숙해지는 것도 매우 중요한 과제였다.
컬렉션뷰 등으로 복잡한 UI가 아닌 UITableView를 활용해서 간단한 UI를 만드는 것이었지만, 실시간으로 여러 변화를 주는 것들에서 꽤 많은 공부를 할 수 있었다.
우선 생각나는 중요한 공부내용 혹은 도전과제들을 나열해보았다.
적지 못한 것이 있다면 추후 또다른 글로 정리해보겠다.
꽤나 좋은 경험이었고, 사람들에게 유용한 도구를 출시한 것에 큰 의미를 둔다!
깃허브:https://github.com/mwoo-git/BinanceTradeHistrory
GitHub - mwoo-git/BinanceTradeHistrory: 바이낸스의 체결 내역을 필터링할 수 있는 앱입니다. (UIKit, RxSwift)
바이낸스의 체결 내역을 필터링할 수 있는 앱입니다. (UIKit, RxSwift). Contribute to mwoo-git/BinanceTradeHistrory development by creating an account on GitHub.
github.com
'Project > UIKit 미니체결' 카테고리의 다른 글
iOS 앱스토어 거절 사유: Guideline 2.1 - Performance - App Completeness (0) | 2023.07.01 |
---|
댓글