아직은 개린이

[App 제작] 오늘의 성취도 본문

Project

[App 제작] 오늘의 성취도

jiyeonlab 2020. 2. 20. 18:57

App 소개

 

‎오늘의 성취도

‎오늘의 성취도를 색으로 기록하다 당신의 오늘 하루 성취도를 보기 쉽게 기록해보세요! 매일 성취도 값에 따른 색을 하나 정하고, 간단한 메모를 작성할 수 있습니다:) === 주요 기능 [메인 화면] - 캘린더에 각 날짜별 성취도를 색으로 확인할 수 있습니다. - 우측 상단의 + 버튼을 통해 오늘의 성취도를 추가, 수정할 수 있습니다. - 하단에는 월별 성취도 데이터와 메모를 볼 수 있는 섹션이 있습니다. - 캘린더에서 날짜를 선택하면 그 날의 메모가 나타

apps.apple.com

사용한 기술 및 라이브러리

  • FSCalendar
  • RealmSwift
  • Localizing

사용한 아키텍쳐

  • MVC
  • Notification, Delegate, Singleton

개발 기간

  • 기획부터 앱스토어에 올리기까지 17일 소요
  • 버그 수정 후, 현재 1.3 버전까지 업데이트 -> Localizing 추가 (2020.03.06)

버전 기록

 

jiyeonlab/AchievementTracker

매일의 성취도를 기록하기 위한 앱 제작. Contribute to jiyeonlab/AchievementTracker development by creating an account on GitHub.

github.com

구조

프로젝트 구조

기능 소개

  • 오른쪽 상단의 + 버튼을 눌러, 오늘 날짜의 성취도와 메모를 기록할 수 있습니다.

 

  • 자신의 성취도 정도를 5가지 중에 선택할 수 있습니다. (Github의 contribution 색을 가져왔습니다.)

  • 간단한 메모를 작성할 수 있습니다.

 

  • 화면 하단에서 현재 보고 있는 달의 성취도 그래프를 확인할 수 있습니다.

 

  • 캘린더에서 특정 날짜를 선택하면, 그 날의 메모 내용을 볼 수 있습니다.

  • 오늘이 아니거나 기존에 저장한 정보를 바꾸고 싶다면, 메모뷰의 오른쪽 상단의 버튼을 클릭합니다.

 

  • 캘린더는 스와이프를 통해 움직일 수도 있고, 월 부분을 탭하여 특정 월로 이동할 수도 있습니다.

 

어려웠던점

  • 캘린더 오픈소스인 FSCalendar를 커스터마이징하는 과정
  • Realm DB에 저장하기 위한 데이터 모델을 구성하는 것
  • 기획 단계에서 구성했던 UI나 기능 flow가 개발을 진행하면서 계속해서 바뀌는 것

새롭게 터득한 것

  • Realm이란 무엇인가
  • xib 파일을 이용한 Custom Cell 만들기
  • Notification, Delegate Pattern을 언제, 어떻게 적용하면 좋은지 판단할 수 있게 됨
  • Custom Picker View 만들기
  • 커스텀 폰트 적용법
  • AppDelegate, SceneDelgate의 역할
  • 앱 배포 및 업데이트 하는 법
  • DateFormatter, Calender, Date 등의 쓰임법을 자유자재로 활용하기
  • git을 이용한 코드 관리 습관화
  • 코드 리팩토링하는 과정을 통해서 다음에 코드를 짤 때는 처음부터 구조를 잘 짜야할 것 같다는 배움을 얻음.
  • 앱 Localize 적용하기. (2020.03.05 추가)
  • Trello를 이용한 개발 일정 관리법

아쉬운점

  • Swift 고급 문법을 이곳저곳에 써보자고 결심했는데, 어느 순간 기능 구현에만 급급해서 연습하고 싶었던 프로그래밍 방법들을 적용하지 못한 것 같다. 또한, 테스트 코드 작성에 대해서도 뒤늦게 공부하게 되어서, 정작 앱 개발에서 적용을 못한 점이 아쉽다. (MVC 패턴에서 MVP 패턴으로 바꿔보는 연습을 하면서, 해봐야할 것 같다!)
  • 첫 배포때까지만해도 오늘 날짜에 해당하는 데이터만 추가, 수정이 가능했다. 하지만 막상 앱을 올리고, 내가 며칠 사용하다보니 오늘 날짜만 추가, 수정할 수 있는 점이 굉장히 불편했다. (밤 12시가 되기 전에 꼭 기록을 해야하고.. 혹여나 못하고 날짜가 넘어가면 그 날짜는 영원히 색을 채우지 못한다...). 그래서 메모 섹션의 오른쪽 상단에 버튼을 추가하여, 캘린더에서 선택한 날짜에 데이터를 추가할 수 있도록 했는데, 방식이나 화면 구성이 맘에 들지 않는다. 하지만, 아예 방식을 바꾸려면 많은 것이 바뀌어야할 것 같아서 일단 이 상태로 유지하고 있다. (2번째 업데이트에서 기능 추가)
  • 성취도 입력화면에서 사용자에게 5가지의 색과 %를 매칭하여 보여주는 부분이 직관적이지 못한 것 같아서 아쉬움이 있다. 이건 하나의 색을 기준으로 slider를 두어서 사용자가 지정한 색의 그라데이션으로 성취도를 입력할 수 있게 바꾸거나 사용자가 %를 입력하면 알아서 색을 매칭해주는 방식으로 바꾸는 것이 좋을 것 같다.
  • 서버를 붙인다던지, 여러 커스텀 설정이 가능하다던지.. 좀 더 확장성 있는 앱을 만들면 좋을 것 같다. (뭔가 첫 앱을 예쁘게 만들고 싶다는 생각에 기술적인 부분보다 시각적인 부분에 더 집중했던 점도 있는 것 같아서 아쉬움이 있다..)

계획

  • UserNotifications 기능 추가 예정!
  • 성취도 색의 기본값을 바꿀 수 있는 기능 추가 예정!

'Project' 카테고리의 다른 글

[App 제작] Ribrary  (1) 2020.03.31
[부스트코스] 영화 정보 앱  (0) 2020.02.13
[부스트코스] 앨범 앱  (1) 2020.02.12
[부스트코스] 날씨 정보 앱  (0) 2020.02.12
[부스트코스] 회원가입 화면 구현  (2) 2020.02.12