본문 바로가기
프로젝트

[개인출시앱] 모닝글로리 회고

by dsungc 2024. 10. 7.

⭐️  프로젝트 소개

- 아침형 인간이 되고픈, 부지런한 삶을 살아가고 싶은 사람들을 위한 미라클 모닝을 위한 앱

개발기간: 2024.09.12 ~ 2024.09.27( 2, 버전 1.0 기준)

⭐️  기획 단계

🤔 주제 선정

이번 프로젝트의 주제는 모닝글로리라는 이름의 미라클 모닝 가이드 입니다.  앱의 아이디어는  생활 패턴과 루틴에서 출발했습니다. 최근 들어, 저는 아침에 일찍 일어나 하루를 시작하는 습관이 생산성과 삶의 질에 얼마나  영향을 미치는지 체감하게 되었습니다.

 

하지만  좋은 습관을 매일 꾸준히 유지하는 것은 생각보다 쉽지 않았습니다. 특히, 명확한 가이드와 목표 없이 혼자서 실천하려다 보니 중간에 포기하기 쉽다는 점을 깨달았습니다. 그래서  앱이 단순한 알람  이상의 역할을 하도록 만들고 싶었습니다.

 

이를 해결하기 위해 미션 방식을 도입하여 매일 작은 목표를 설정하고 이를 완수하며 성취감을 느낄 수 있도록 앱을 설계하고자 했습니다.

또한, 개인화된 루틴 설정 기능을 통해 사용자가 자신의 라이프스타일에 맞는 아침 루틴을 만들  있도록 하고 싶었습니다.

 

단순히 루틴을 설정하고 실행하는 것에 그치지 않고, 통계 기능을 통해 사용자가 자신의 성취율과 진행 상황을 한눈에 확인할 수 있도록 구현하고자 했습니다. 이를 통해 사용자는 자신의 노력과 결과를 명확히 볼 수 있으며, 부족한 부분은 개선하고 성공한 부분은 자부심을 느낄 수 있도록 유도할 계획입니다.

 

 

⭐️  개발 중 고민

🤔 고민했던 지점

 

RealmRepository 활용법

2024.09.25 - [Swfit] - [iOS] About Realm

이전 발행글에 리팩토링한 내용을 수정해두었습니다!

 

-> 현재는 학습을 위해 Core Data로 바꾼 상태입니다!!

Core Data글

 

이미지의 저장 용량을 줄일 수 있을지?

 

이미지 파일 관리는 앱 개발에서 데이터 최적화와 사용자 경험(UX) 간의 균형을 맞추는 중요한 과제였습니다.

특히, 게시글 이미지와 썸네일 이미지를 관리하는 방식에서 최적의 저장 방식을 고민하며 아래와 같은 결론을 도출했습니다.

 

1. 게시글 이미지: 화질 우선

 

게시글 이미지는 사용자들이 상세하게 확인해야 하는 중요한 요소이므로 고해상도를 유지하는 것이 가장 중요하다고 판단했습니다.

이를 위해 이미지를 pngData로 압축하여 저장하는 방식을 선택했습니다. pngData는 상대적으로 용량이 크지만, 무손실 압축 포맷이기 때문에 이미지의 품질을 최대한 보존할 수 있었습니다.

결과적으로, 용량을 적절히 줄이면서도 이미지 화질을 유지하는 데 성공했습니다.

 

2. 썸네일 이미지: 효율성 우선

썸네일 이미지는 크기가 작고 간단히 미리보기를 제공하는 용도이기 때문에, 파일 용량과 화질 사이에서 적절한 균형을 찾는 것이 중요했습니다. 썸네일 이미지를 dataType으로 전환하여 비교한 결과, pngData는 약 31KB, jpegData는 약 22KB로 저장되었습니다.

하지만 이 차이는 실제 사용자 경험에 크게 영향을 미치지 않는 수준이었고, 오히려 화질이 더 선명한 pngData 형식으로 저장하는 것이 적합하다고 판단했습니다. 이를 통해 썸네일의 시각적 품질을 유지하면서도 효율적인 용량 관리가 가능했습니다.

 

 

⭐️ 위젯 업데이트 ⭐️

위젯

 

1. 위젯에서 통계 정보를 시각화

 

앱 내에서 제공되는 통계 그래프를 위젯에서도 동일하게 구현하여 사용자들이 앱을 실행하지 않고도 주요 데이터를 확인할 수 있도록 설계했습니다.

 

앱 내 통계 그래프와 동일한 디자인과 데이터를 위젯에 적용함으로써, 일관된 사용자 경험(UX)을 유지

특히, Small, Medium, Large 세 가지 크기의 위젯을 지원하여 사용자 개개인의 기기와 사용 패턴에 맞는 유연한 선택

 

이를 통해 앱의 데이터를 더욱 효과적으로 전달하고, 사용자들이 필요한 정보를 손쉽게 확인 있도록 개선했습니다.

 

2. 실시간 데이터 동기화를 위한 구조 설계

 

위젯이 항상 최신 정보를 반영할 수 있도록 실시간 데이터 동기화를 구현하는 데 중점을 두었습니다.

이를 위해 WidgetKit과 App Groups를 활용하여 앱과 위젯 간의 데이터 동기화 구조를 설계했습니다.

 

App Groups를 이용한 데이터 공유

 App Groups를 사용하여 앱과 위젯 간에 데이터를 공유할 수 있는 공통 저장소를 생성

 UserDefaults(suiteName:)를 활용해 데이터를 저장하고, 앱과 위젯 모두 동일한 데이터를 실시간으로 참조할 수 있도록 구현

 

WidgetCenter.reloadTimelines()를 활용한 데이터 갱신

 데이터가 변경될 때마다 WidgetCenter.reloadTimelines()를 호출하여 위젯 타임라인을 강제로 업데이트하여 항상 최신 상태 업데이트 유지

 

Timeline 정책 기반 데이터 업데이트

 WidgetKit의 Timeline 정책을 활용하여 데이터를 정기적으로 업데이트

실시간성이 중요한 데이터는 즉시 갱신하고, 상대적으로 자주 변경되는 데이터는 주기적으로 갱신하는 방식으로 성능을 최적화

 

 

⭐️  프로젝트 종료 후...

 

막상 배포를 해보니, 생각치도 못한 수정이 필요한 부분이 많았습니다. 사용자 피드백과 실제 사용성을 점검하며 발견된 개선점들이 있었는데요, 이러한 과정이야말로 개발의 중요한 일부라는 것을 다시 한번 느끼게 되었습니다.

 

 

1. 이미지 비율 수정 ⭐️해결

포스트 이미지가 예상하지 못한 비율로 표시되는 문제

 

2. 프로필 수정 기능 추가 ⭐️해결

현재 프로필 생성 기능은 있지만 수정이 불가능한 상태

사용자 경험을 고려해 닉네임, 프로필 사진 등 사용자 정보를 손쉽게 변경할 수 있도록 프로필 수정 기능을 추가 예정

 

3. 미션 등록 화면 스크롤 버그 ⭐️해결

미션 등록 화면에서 특정 상황에서 스크롤이 원활히 동작하지 않는 버그가 발생

특히, 긴 텍스트 입력이나 화면 크기가 작은 기기에서 문제가 두드러지며, 이를 해결하기 위한 레이아웃 재구성 필요

 

4. 위젯 기능 추가 ⭐️해결

사용자 피드백 중 많은 분들이 앱을 열지 않아도 미션 상태나 성취율을 빠르게 확인할 수 있는 위젯 기능 요청

홈 화면에서 당일 미션 요약이나 성취율을 확인할 수 있는 위젯을 추가

 

5. 미션 개수 및 시간대 커스텀 ⭐️해결

현재 고정된 미션 개수와 시간대 설정으로 인해 일부 사용자들이 원하는 대로 루틴을 설정 불가

이를 개선하여 사용자가 미션 개수와 실행 시간대를 자유롭게 조정할 수 있도록 커스텀 옵션을 제공 예정

 

 

이 외에도 앱 배포 후 지속적으로 수집된 사용자 피드백과 데이터를 기반으로, 사용자 경험(UX)을 개선하고 기능을 확장할 계획입니다.

사용자와의 소통을 통해 실질적으로 도움이 되는 앱으로 발전시키고자 하며, 꾸준히 업데이트를 진행하면서 앱의 완성도를 높여보고자 합니다!!

 

이후에도 업데이트 될 때마다 블로그에 내용을 추가해보도록 하겠습니다!

 

.

.

.

+

 

앱을 삭제 했다가 다시 깔았을 경우에 기존의 데이터가 다 날라가는 게 좀 아쉬운 것 같습니다...

이를 해결하려면 혹시 CloudKit..?