UIKit + SwiftUI
iOS 및 Apple 플랫폼에서 사용자 인터페이스를 구축하기 위한 프레임워크
전체적인 구조 및 뷰의 이동 등에는 UIKit을 적용했습니다.
MusicKit 및 SwiftUI에 간편히 구현되어 있는 애니메이션을 사용하는 경우에 SwiftUI를 사용함으로써 생산성을 높였습니다.
Combine
Apple에서 제공하는 반응형 프로그래밍을 위한 First Party 프레임워크
UIKit과 SwiftUI를 혼합하여 사용하면서 자연스레 @Published와 같은 프로퍼티 래퍼를 사용하면서 Combine을 적용하게 되었습니다. 데이터 변화에 따른 UI를 업데이트 하거나 DB의 값을 구독하여 값이 변할 때마다 그에 해당하는 작업을 처리해주기 위해 사용하게 되었습니다.
Swift Concurrency
Apple에서 제공하는 비동기 코드 작업 처리 방식
단순화된 비동기 코드의 작성이 가능하고, throw와 같은 에러에 대한 처리를 간단히 처리할 수 있다는 장점이 있습니다. 또한 Swift Concurrency가 주류가 되어가고 있기 때문에 학습하면서 구현해보기 위해 사용하게 되었습니다.
AVAudioPlayer
iOS 및 macOS에서 오디오 재생을 처리하기 위한 Apple의 AVFoundation 프레임워크에 포함된 클래스
문제로 출제할 노래를 play하고 전달받은 녹음 파일을 재생하기 위해 AVAudioPlayer를 사용하게 되었습니다. 출력되는 정보를 커스텀할 수 있고 출력되는 dB을 이용해 UI로 파형을 그릴 수도 있습니다.
AVAudioRecorder