저에게 누군가가 인생에 있어서 가장 설레던 순간을 말해보세요! 라고 한다면
치타핏이라는 어플을 만든거에요! 라고 대답할 수 있을 정도로
작년 연말, 너무 값지고 설레는 경험을 할 수 있었는데요.
기획부터 디자인, 개발, 출시까지 전부 제 손을 거친 앱이어서 그런지 더 뿌듯함이 느껴졌습니다.
그리고 그 과정을 공유해보고 싶어서 이렇게 글을 쓰게 되었습니다.
치타핏 - 다이어트 다이어리
치타핏이 체중 관리를 도와드릴게요:) 매일 식단 기록과 운동 기록으로 내가 원하는 몸을 만들어 보아요! 그리고 하루하루 변화하는 나를 지켜보세요! 칼로리 계산 - 개인별 목표 칼로리 계산
apps.apple.com

우선 저의 소중한 치타핏을 구경해주세요 ❣
이제 개발일기를 시작해보겠습니다!
기획
치타핏은 오늘 하루의 식단과 운동을 기록해서 체중 관리를 도와주는 앱이에요.
Q: 도대체 치타핏은 어떻게 탄생하게 되었나요!?
A: 코로나 세상이 오면서 제 주변에 정말 많은 친구들이 운동에 관심을 가지고 열심히 몸매를 관리하더라구요.
그리고 그 멋쟁이 친구들을 바라보던 저...
나도 그거 하고싶다...!! 나도 운동하는 자기관리 멋쟁이가 되고싶다...!!!!
어렵기만 하던 살빼기를 쭉쭉 해내는 친구들에게 도대체 너! 비결이 뭐냐!! 하고 물어보았습니다.
정답은 칼로리 계산!
친구들의 대답은 기초 대사량(BMR)보다 적게 먹으면 된다! 였습니다.
아침, 점심, 저녁으로 뭘 먹었는지 기록하고 운동도 어느정도 했는지 기록하더라구요.
그 비결을 듣고 우리와 하루종일 함께 하는 핸드폰으로
식단과 운동한 내용을 기록하면 더 좋지않을까?하는 생각이 들어서 치타핏을 기획하게 되었습니다.
칼로리 계산이 궁금하신 분들을 위해 정리했습니다.
기초 대사량(BMR)을 구하는 공식은 다음과 같습니다. (Mifflin-St Jeor 방정식을 활용했습니다)
남자 - 10 x weight (kg) + 6.25 x height (cm) – 5 x age (y) + 5
여자 - 10 x weight (kg) + 6.25 x height (cm) – 5 x age (y) – 161
활동량 표
BMR aka Bedridden (안움직임) | BMR x 1 | |
Sedentary (아주 적은 활동) | BMR x 1.2 | |
Lightly Active (가벼운 활동) | BMR x 1.375 | |
Moderately Active (보통의 활동) | BMR x 1.55 | |
Very Active (적극적인 활동) | BMR x 1.725 | |
Extremely Active (매우 적극적인 활동: 운동선수) | BMR x 1.9 |
구한 BMR에 활동량이 어느정도 되는지에 따라서 값을 곱해주면! 하루의 목표 칼로리가 나오는 거지요!
이 목표칼로리보다 적게 먹는다면? 체중이 줄어들거에요.
목표칼로리보다 많이 먹는다면? 체중이 늘어날거에요!
목표칼로리 범위 내로 먹는다면? 체중이 유지될거에요!

이제 이런 기록들을 할 수 있는 앱을 생각해봐야겠지요?
아무래도 혼자 기획하고 개발을 하는거다보니 정리가 필요해서
주요 기능들이 잘 담길 수 있도록 화면 구상을 해보고
아이패드로 슥삭슥삭 와이어프레임을 그려보았어요.
그리고 디자인은 많은 분들이 알고계실 핀터레스트를 많이 참고했답니다😊
개발
1. 공수산정
개발을 하기전에 개발이 필요한 기능을 정리하고 각 기능들이 어느정도 시간이 걸릴지를 계획했습니다.
이 과정이 정말 중요하다고 생각했어요!
왜냐하면 저는 2주안에 앱을 출시하겠다! 라는 목표가 있었고,
시간은 한정적인 자원이고 항상 모자르기 때문이에요🥺

저는 공수를 산정할 때 하루에 6시간 코딩하는 걸로 계획을 세웠습니다.
예상치못한 이슈가 발생해도 +2시간 정도 추가되면 8시간이면 충분하겠지! 라고 생각했거든요... ㅎ
하지만.... 계획은 항상 그럴듯하고.... +2시간이 아니라 x2가 되더라구요? ㅎㅎ
하지만 개발이 오래 걸린 부분이 어딘지 체크하고 왜 오래걸렸는지도 작성했습니다.
저의 개발 습관을 알기 위해서요!
2. 기술 스택
- Snapkit, Storyboard
스냅킷과 스토리보드를 사용해서 UI 작업을 했습니다.
저는 이때까지만 해도 스토리보드를 매우 사랑했기 때문에 스토리보드를 많이 썼는데
유지보수를 해야하는 지금 시점에서는 코드로 작성한 부분이 훨씬 좋더라구요....
다음 앱을 만든다면 디자인이 바뀔 가능성이 있는 화면은 코드베이스, xib를 사용해서 개발을 해야겠다! 라고 생각하고 있답니다.
아니면 SwiftUI를 얼른 배우는걸로!ㅎ
- Realm
치타핏은 저혼자 개발했기 때문에 서버가 없고 아이폰 자체에 데이터를 저장해야 했습니다.
Realm이 많은 데이터를 처리하는데에 속도가 빠르다고 하더라구요! 그래서 Realm을 사용했습니다!
- NSLocalizedString과 Enum을 통한 다국어(영어, 한국어, 일본어) 처리 구조화
전세계인을 끌어당길거야..!라는 야심찬 꿈을 가지고 있던 저는 한국어뿐만 아니라 영어, 일본어도 지원하기로 했습니다.
그래서 NSLocalizedString을 사용해서 다국어 처리를 해줬어요!
그리고 String 그 자체를 쓰는 것에 알레르기가 있는 저는 Enum으로 구조화를 해주었습니다.
카카오의 세미나를 참고했습니다.
https://kakaoentertainment-tech.tistory.com/34?category=524890
[if(kakao) 2020] 유연한 해외 현지화를 위한 iOS 앱 구성
안녕하세요😀 Tech. Recruiter 카일라입니다. 카카오와 카카오 공동체에서 2018년부터 매년 선보이고 있는 if(kakao)에서 카카오엔터테인먼트가 선보였던 기술 세션들을 소개하고 있습니다. ✔️ 카카
kakaoentertainment-tech.tistory.com
- Crashlytics를 통한 실시간 오류 탐지
제가 알지 못하는 부분에서 에러가 나는 걸 빠르게 확인하기 위해 Crashlytics를 활용했습니다.
그밖에도 사용자에게 특정 메세지를 띄워주기 위해 Toast,
키보드가 화면을 가리는 문제를 해결하기 위해 IQKeyboardManager 등등을 활용했습니다.
출시
2주동안 밤낮으로 코딩을 한 결과! 치타핏을 완성할 수 있었어요.
몰입의 즐거움이란 이런걸까요?ㅎ
힘들기도 했지만 시간이 지난 지금은 그 때가 참 빛나던 순간인 것 같습니다✨
앱을 출시하기 위해선
애플 개발자 계정뿐만 아니라 앱아이콘도 만들고, 앱스토어에 들어갈 스크린샷도 준비해야합니다.

짜잔~~
치타핏이 처음 세상에 나오던 순간..!! 너무 기쁜 순간이어서 캡처를 해뒀습니다ㅎ
타이밍이 좋았는지 심사를 넣자마자 거의 바로 통과가 되고 출시가 되었어요.
제 손으로 만든 제품이 세상에 나온다는게 얼마나 큰 기쁨인지 알게되는 순간이었어요.
후기
위에서 계속 반복하고 있듯이 치타핏이라는 앱을 혼자 개발해본 경험이 저에게 굉장한 뿌듯함과 자신감을 주었어요.
개발을 배우시는 분들! 자기만의 서비스를 만들어 보는 걸 강!추! 드립니다.
실사용자들에게 앱에 대한 피드백을 받을 수 있었는데요. 불편한 부분들, 에러가 나는 부분들 다양한 의견이 있었습니다.
뿌듯함뿐만 아니라 사용자는 이렇게 생각할 수 있구나. 사용자 입장에서 더 세심하게 개발해야겠다.
라는 마음가짐과, 제가 만든 제품에 대한 책임감도 느낄 수 있었습니다.
그리고 시간이 좀 지난 지금!
시간상 넣지 못했던 기능들을 차차 넣고 자잘한 벌레들을 잡기 위해 xcode를 다시 켠 순간....!

이때는 개발 꼬꼬마 시절이었기 때문에 아키텍처니 뭐니 이런 것은 고려하지 못했고
오직 보여지는 화면에 대한 완성도에만 신경을 썼었는데요
개발자는 사용자 뿐만 아니라 내 코드를 읽을 같이 일하는 동료도 고객이라는 점을 이제는 너무 잘 알고 있습니다!
지금의 저는 클린-하고 확장성있는 프로젝트로 다시 리팩토링을 하고 있답니다... 하하
앞으로 리팩토링을 하는 과정도 차차 써보도록 하겠습니다.
다음에 또 만나요 >D<!