SwiftUI로 만든 나만의 커피 기록 앱
요즘 매일 커피를 내려 마시면서, 원두와 브루잉 레시피를 조금씩 조정하고 있다. 어떨 땐 맛이 괜찮고, 또 어떨 땐 기대한 맛이 나지 않는다. 어떤 맛이 났었는지, 어떤 경험을 했는지를 자꾸 까먹는 게 아쉬워서 이런 레시피나 느꼈던 맛을 기록할 수 있는 앱이 당연히 있을 줄 알았는데, 막상 찾아보니 의외로 없었다.
그래서 내가 필요한 기능들을 가진 앱을 직접 구현해서 사용해보기로 했다.
필요했던 기능
- 브루잉 기록
- 원두 이름, 물 온도, 원두량, 추출 시간, 맛에 대한 느낌 등을 한 번에 정리할 수 있다.
- 추출 타이머
- 단계별로 몇 초에 몇 g의 물을 붓는지 미리 설계하고, 실제 추출할 때 그 흐름대로 타이머가 안내해준다.
- 레시피 설계 및 저장
- 자주 쓰는 브루잉 레시피는 따로 저장해두고 타이머에서 바로 불러올 수 있다.
- 기록 리스트 & 디테일 뷰
- 날짜별로 기록을 모아서 보고, 필요하면 다시 참고할 수 있다.
기본적으로 레시피와 맛을 기록할 수 있도록 하고, 레시피를 저장하고 불러와서 적용할 수 있는 타이머 기능을 구현하고자 했다.
부가적으로 지금까지 개인적인 프로젝트들은 모두 UIKit으로 작업을 했었는데 이번에 만드는 앱은 공부도 할겸 SwiftUI로만 구현해보려고 했다.
구현한 화면
기록했던 브루잉 레시피를 FileManager를 통해서 기기에 저장할 수 있도록 했고, 저장한 레시피를 리스트 형식으로 보거나, 상세화면에서 볼 수 있도록 했다.
새로운 브루잉 경험을 기록하는 화면에서는 기기에 있는 이미지를 불러올 수 있고, Stepper를 통해 수치 입력도 간편하게 할 수 있도록 했다. 컵노트(플레이버 노트)는 유저가 쉼표(,)로 구분해서 입력하면, 자동으로 개별 항목으로 저장되도록 구현했다.
처음에는 단순히 기록용 앱을 만들 생각이었지만, 메모 앱에 레시피를 적어두고 타이머를 따로 보면서 사용하는 게 불편하다는 점을 떠올리게 됐다. 그래서 단순한 타이머가 아니라, 유저가 저장한 레시피대로 동작하는 타이머를 구현하게 되었다.
타이머는 Timer.TimerPublisher를 통해 구현했고, 각 스텝 타이밍을 감지해서 현재 단계와 다음 단계가 하이라이트되도록 만들었다.
후기
간단해 보이는 앱이었지만, SwiftUI를 거의 안 써봐서 조금 시간이 걸리기도 했고 새로운 기술과 ChatGPT의 조합을 처음 시도해봤는데, 학습과 동시에 새로운 기술을 적용하는 데 아주 좋은 방식이라는 걸 느꼈다.
(이런식으로 단순히 코드만 제시하는게 아니고 설명을 해달라고 명령을 넣어두고 개발했다.)
앱을 다 만들고 나서 써보니까 나름 실생활에서 쓸만한 것 같아서 코드 정리와 UI 다듬기 정도만 조금 더 하면, 앱스토어에 올려볼까 한다.
그 이후에는 기록을 기기가 아니라 iCloud나 서버에 저장할 수 있도록 하면 좋을 것 같고, 아주 애용하고 있는 언스페셜티의 분쇄도 가이드와도 연동이 되면 더더 좋을 것 같다.
앱을 만들면서 배운 SwiftUI, 그리고 매일 쓰고 싶은 앱을 직접 만드는 경험이 꽤 즐거웠다. 오랜만에 회사일이나 공부를 위한 개발이 아니라서 더욱 재밌었다.
댓글 남기기