SwiftUI + Combine을 이용하여 Fleek Copy app 만들기(1)

요즘 운동에 재미가 들려서 본격적으로 하고 있습니다.

운동도 알아보니 엄청나게 많은 프로그램과 엄청나게 많은 운동방법들이 있더군요.

유튜브를 통해서 운동을 배우다보니 운동 프로그램에 관심이 가게 되었습니다.

유명 운동 유튜버가 공개하는 프로그램도 있고, 해외에서 이미 유명한 프로그램 등등..

많은 프로그램들이 있었고, 주 4일정도 하루 운동시간 1시간 30분 미만으로 할 수 있는 프로그램들을 찾아다니다보니, 가장 중요한 것이 중량과 횟수 등 운동기록이라는 사실을 알게 되었습니다.

초반에는 엑셀을 통해서 매번 파일을 수정하는 방식을 썼었는데요.

너무 번거롭고 폰으로 수시로 바꾸자니 여간 귀찮은 일이 아니더라구요.

이런 부분을 좀 더 편리하게 이용할 수 있는 앱이 있을까 찾아보다가 정말 정말 강추하는 앱을 발견하였습니다.

앱 이름은 Fleek 입니다.


스크린샷 2023-03-17 오후 9.48.37.png


이 앱을 사용하는 이유는 다음과 같습니다.

  • 운동의 종류가 많고, 움직이는 gif로 운동자세, 운동부위등 운동별로 자세히 나옵니다.
  • 무료로 이용해도 개인적인 커스텀 운동프로그램을 4개 생성할 수 있습니다.
    • 주4일 운동하는 저에게는 너무나 안성맞춤이었죠.
  • 운동별 무게, 횟수 설정은 물론, 저번 운동과 비교한 총 운동강도도 표시되고, 휴식시간설정도 가능해서 운동 후 세트별로 완료표시를 하면 설정한 휴게시간 이후에 운동시작시간을 알려줍니다.
  • 켈린더를 통해 운동한 날과 운동을 어떤걸 했는지, 이력관리가 잘 됩니다.
  • 프로그램 완료 시 하루의 운동을 매우 간결하고 아름답게 요약해줍니다.

기타 많은 장점이 있는데, 무려 무료입니다.

inApp구매로 추가적인 기능을 사용할 수 있으나, 아직까지는 유료결제를 하지 않아도 불편함 없이 사용하고 있습니다.


광고는 절대 아니구요, 저 혼자만 알기 아까울정도로 너무나 사용성과 기능이 좋은 앱이라 단순히 넘어가긴 아쉬워서 최대한 간략히 남겨보았습니다.

운동 프로그램 관리용 앱을 많이 사용해봤지만, 이것만큼 편리하고 오래사용한 앱이 없습니다.

공부 겸 개인프로젝트를 진행하고 있었지만 뚜렷한 앱 카테고리를 정하지 못한채 간단한 예제구현 정도로만 끝난 프로젝트들이 쌓여가는 상황에서, 갑자기 해당 앱을 Copy한 앱을 만들어보고 싶다는 생각을 하게 되었습니다.

모든 기능을 포함하지는 않고, 실제로 내가 사용할 수 있을 정도로 UI 와 기능을 제 나름대로 설계하여 만들어보자는 계획을 세웠습니다.

원래 swiftUI를 공부하려고 할 당시에, 이미 해당 앱의 main UI는 swiftUI로 어느정도 만들어 두었었고, 요새 핫한? TCA(The Composable Architecture) 를 이용하여 화면전환정도는 만들어보았으나, 진행된지가 오래되었기도 했고, TCA를 사용하지 않고, 좀더 Core하게 Combine도 사용하고 경험해보고 싶어서 SwiftUI + Combine 조합으로 진행해보려고 합니다.

- Task

진행순서는 아래와 같이 진행될 예정이며, 80% 이상 변동될 가능성이 있습니다.

  1. Intro 화면 만들기
  2. MainTabView 만들기
  3. 각 Tabbar 버튼 별 View 만들기
  4. Combine을 통한 NetworkLayer 생성 및 운동자세 및 종류 API 통신붙히기
    1. openAPI 혹은 fitness관련 무료 API 탐색 예정(
  5. 운동 카테고리별 List 출력하기
  6. Combine을 통하여 각종 UserInteraction에 반응하는 Event Handling 하기
    1. 프로그램 추가 기능 추가 (운동 카테고리별 List 를 이용하여 하나의 루틴을 생성하기)
    2. Combine을 통한 운동 상세 셋트수, 무게, 타이머 구현
    3. 각 운동데이터 CoreData를 이용하여 저장
    4. Calendar 추가하여 운동일지 연동
  7. 운동 완료 후 그날의 루틴 요약화면 만들기
  8. Firebase 연동하여 유저 가입 및 로그인, 유저별 데이터 및 운동 데이터 저장 및 동기화

여기에 추가적으로 있었으면 좋겠다 혹은 추가해보고 싶은 기능들이 생기면 좀 더 추가해볼 예정입니다.

앱 소개와 Intro 까지 글을 작성하려고 했지만, Task 별로 챕터씩 나누어 진행하는것이 좋을 것 같아서 오늘의 글은 여기서 마칩니다.

부디 이 시리즈가 끝까지 진행되기를 바라는 마음으로 마칩니다..