오늘은 Clean Architecture 에 대해서 알아보는 시간을 가져보자! 개발을 진행하면서 조금 더 효율적이고 협업 시 원활한 협업을 위해 아키텍처 디자인 패턴을 좀 신경써서 만들고 있는데 이 와중에 조금 더 나아가서 Clean Architecture에 대한 내용을 적용하며 더욱 효율적인 코드 구현의 필요성을 느끼게 되었다. 앞으로 조금 더 신경써서 구현하기 위해 오늘은 Clean Architecture에 대해서 알아보자! Clean Architecture란 무엇인가!Clean Architecture는 소프트웨어 개발에 사용되는 디자인 패턴 중 하나이다 소프트웨어의 유지보수성과 확장성을 극대화하기 위해 설계되었다. 핵심은 애플리케이션의 비즈니스 로직을 외부의 변화에 민감한 요소들로 부터 분리하는 것..
오늘은 런닝앱을 만들고 있는 부분에 대한 고민과 과정에 대한 기록을 하려고 한다! 현재 런닝앱을 만들고 있는데 내가 뛴 기록을 공유하고 기록을 차곡차곡 쌓아나갈 수 있는 앱을 만들어 보려고한다. 현재 런닝을 기록하는 부분은 데이터를 저장하는 로직을 제외하고 거의 구현이 완료되었고 현재 주, 월 별로 저장된 기록을 확인하는 Record를 구현하고 있는 중이다.먼저 런닝을 기록하는 부분을 살펴보면struct RunningSession { let id: UUID let date: Date let distance: BehaviorRelay let duration: BehaviorRelay let locations: BehaviorRelay init(id: UUID = UU..
오늘은 이전에 알아봤던 Driver와 또 다른 특징을 가지고 있는 Relay에 대해서 알아보려고 한다 :) 런닝 앱을 구현하면서 이해하고 있는데 생각보다 유용하게 사용하고 있어 따로 정리를 해보도록 하자! Relay란 무엇일까.Relay는 상태 관리 및 이벤트를 전달하는데 특화되어 있는 Observable이라고 생각하는게 조금 이해하는게 쉽다. 대신 일반적인 Observable과 달리 종료되지 않고 에러를 방출하지 않는다는 중요한 특징이 있다. RxRelay에서 제공하는 기능이지만 RxCocoa를 임포트해 사용할 수 있다. 그래서 일반적으로 Observable을 사용해 onNext를 사용하는 방식이 아닌, accept를 통해 Dispose되기 전까지 동작해 UI에 사용된다고 이해하면 된다! 이 Relay..
RxSwift를 활용해 런닝 정보를 실시간으로 받아 기록을 측정할 수 있고 그 기록을 공유할 수 있는 앱을 만들어보고 있다 🙂 그 과정에서 Driver라는 오퍼레이터를 사용하게 되는데 오늘은 이 Driver에 대해서 알아보려고 한다! Driver는 UI에 특화된 Observable로 메인스케줄러에서 사용되며 UI와 관련된 데이터 스트림을 처리하는데 사용되는 특수한 형태의 Observable이다. 주로 UI바인딩에 사용되고 UI 업데이트를 안전하게 처리하는데 중요한 역할을 담당하고 있다. 그 중 Observable이 있는데 Driver를 사용하는 이유는 뭘까 바로바로 Observable 특성을 그대로 가져오면서도 몇가지 추가적인 기능을 제공하기 때문이다. 몇가지 추가기능에 대해서 살펴보면Main Thre..
오늘은 한번 정리하고 싶었던 주제인 프로토콜 지향 프로그래밍에 대해서 정리하는 시간을 가져보자 🙂 프로토콜지향 프로그래밍(Protocol-Oriented-Programming, POP)란 Swift 언어에서 중요한 패러다임 중 하나로, 객체 지향 프로그래밍과 함께 사용할 수 있지만 보다 유연하고 모듈화된 코드를 작성할 수 있게 해준다. 프로토콜 지향 프로그래밍에서는 코드 재사용성을 극대화하고, 다형성을 달성하기 위해 프로토콜을 활용한다고 이해하면 된다! 먼저 기본인 프로토콜에 대해서 알아보자프로토콜은 특정 작업이나 속성에 대한 인터페이스를 정의해두는 꼭 지켜야 하는 규칙이라고 이해하면 된다. 클래스, 구조체, 열거형 등 프로토콜을 채택하면 해당 프로토콜에서 정의한 메서드나 속성을 반드시 구현해야 한다...
오늘은 면접에서 GCD, DispatchQueue에 대한 질문이 들어왔지만 명확하게 답을 하지 못한 아쉬움에 나름 알고 있었다고 생각했던 GCD, DispatchQueue에 대한 정리를 자세하게 정리하고 나도 다시 공부하는 시간을 가져보려고 한다. 지금까지 그냥 내가 생각했던 내용은 GCD, DispatchQueue는 그냥 비슷한.. 동기, 비동기 처리를 지정해 사용할 수 있는 정도로 이해하고 넘어갔다. 지금까지는 개념만 이해하고 넘어가 구현 해보는 것에 집중했다면 이제 하나하나 정말 자세하게 알아보려고 한다. 현직자 분들과 얘기를 나눌수록 아 정말 내가 겉핥기식으로 공부하고 있었구나.. 하나를 가지고 생각하기 시작하면 끝도 없고 이 내용들을 알고 있어야 내가 구현하고자 하는 방식에 최적의 선택을 할 수..