본문 바로가기

iOS 개발

iOS 출시 프로젝트 회고

주인장은 살아 있었습니다 그렇습니다 열심히 하겠읍니다,,,🥹

 

먼저 저는 작심이라는 앱을 앱 스토어에 등록을 하게 되었고 이 과정을 회고해보도록 하려 합니다

 

소감을 짧게 이야기해보자면 정말 2~3주 정도 되는 시간동안 새벽 4시까지 열심히 했고 후회는 없지만 아쉬움은 많은 프로젝트 입니다

 

작심

프로젝트 기간 : 2022-09-13 ~ 2022-09-29 

업데이트 기간 : 2022-10-04 ~

앱 설명서: https://meadow-caravan-6e7.notion.site/2785239c2c024d09aca36f8513648485

앱 스토어 주소: https://apps.apple.com/kr/developer/jaehoon-seo/id1645004524

 

‎App Store에서 제공하는 JaeHoon Seo의 앱

‎작심 - 건강한 습관, 챌린지 관리 등 JaeHoon Seo의 앱을 다운로드하세요.

apps.apple.com

이제 회고를 시작해보겠습니다!

1.  초기 목표

초기 목표는 제가 처음 앱을 기획, 디자인, 개발을 해보는 상황이어서 기획 단계부터 약간 삐그덕 거렸습니다. 

주제는 제가 꾸준히 하는 것을 잘 못하다 보니(블로그 작성 처럼,,) 이런 부분을 앱을 이용해서 꾸준히 실천할 수 있는 방법이 무엇이 있을까?! 라고 고민을 했고, 내가 블로그 찍은 것을 사진 찍어서 인증을 해보면 어떨까! 작심 삼일이 아니라 작심 한 달, 일 년이 될 수 있도록 도와줄 수 있는 앱을 만들어보자!의 취지에서 시작했습니다. ㅎㅎㅎ

 

주제를 정하고 나서는 디테일하게 기획을 하기 시작했습니다. 이 부분에서 조금 아쉬웠던 부분이 기능을 먼저 정해야 할 지 UI를 먼저 정해야 할 지 정답은 없지만 이런 사소한 부분에서 고민을 많이 했습니다.

 

일단 손으로 먼저 정리를 해서 기능과 디자인을 초안을 먼저 잡고, 이후 Figma로 구체화를 시켰습니다.

작심 기획

자세히 보면 원래는 탭바로 주된 화면을 옮기려고 했었으나 이 계획은 멘토님들 피드백으로 바로 수정에 들어가게 됐습니다.. ㅎㅎㅎㅎ

 

그리고 개발 공수산정!! ⭐️ 

사실 이 부분은 약간 저에게는 뜬 구름 잡는?! 그런 느낌이었으나 지금 다시 생각해보면 몇 시간 안에 이 기능을 끝내야지! 이렇게 자신에게 족쇄를 부여하는 것이 아닌 기능 별로 세분화하고, (추후에 깃 커밋과도 연관) 완성된 부분과 미완성된 부분을 직접 확인하는 기획에는 절대 빠져서는 안되는 부분이라고 프로젝트가 끝나갈 때 쯤 느꼈습니다.. ㅜㅜ 저는 첫 Iteration에 UI에 관련된 부분을 다 완성해보자! 라고 생각을 해서 무턱대고 공수산정을 했다가 완전히 다 꼬여버렸다는 슬픈 이야기 

 

아무튼 초기 목표 -> 사용자가 목표하고자 하는 습관을 구체화하고, 사진을 찍어서 인증하는 기능을 앱에 담게 됐습니다 ㅎㅎㅎㅎ 야호!

 

2.  실제 어떤 일 들이 일어났는지 (현실)

현실은 정말 대학교 졸업 프로젝트보다 엄청 험난했습니다. 그래도 Figma를 이용한 와이어 프레임이 없었다면 앱을 출시 못 했을 듯한 ㅜㅜ

먼저 Realm 저의 최종 Realm 구조를 한 번 보겠습니다!

작심 Realm 구조

초기에는 realm에 Image를 리사이징해서 담으려 했는데 사진이 계속 Realm에 쌓여가면 용량에 무리가 있을 수 있어서 device의 documentary에 저장하는 방식으로 전환했습니다. 

 

그리고 멘토님의 피드백을 받으면서 이전에는 작심 기간동안 모든 날짜에 인증 사진을 올려야 작심한 일을 성공하는 상대적으로 빡빡한 앱으로 개발하기 보다는 사용자에게 최소 성공 기준(인증 횟수)을 정하게 해서 작심을 성공하는 성취감을 주는 것으로 방향을 바꾸게 되다보니 Realm에 success와 isSuccess가 추가됐습니다!

 

만약 이런 변경이 앱을 출시하고 나왔으면 realm migration을 해주는 귀찮고 복잡한 과정을 겪게 됐을 것..🥲

이 부분에서 기획, realm 데이터 스키마를 설계하는 부분도 엄청 중요하다는 것을 느꼈고 이후 정말 울고싶을 정도로 무서운 일이 있었는데 그것은 이따 서술하겠습니다..!

 

- 오픈 소스 라이브러리 (FSCalendar, Floaty)

오픈 소스 라이브러리 중에서 FsCalendar는 사용해 보았으나 Floaty는 처음 사용해봤습니다. fscalendar를 사용하면서 swipe 제스처로 달력을 월, 주로 보여주는 기능을 넣으려고 했는데 오픈소스 라이브러리를 사용하게 된다면, 내장된 기능을 외우기보다, 공식문서, 예제 파일을 보면서 직접 해보면서 기능을 익혀가는게 중요하다고 배웠습니다.

앞으로 오픈소스 라이브러리를 사용하는 부분에서는 공수시간을 +해서 예시를 직접 경험해보기!!!

 

작심 FSCalendar

 

- push 화면전환에서 잔상이 남는 문제

이 부분은 처음에는 어떻게 수정해야될 지 몰라서 화면 전환 방법을 modal로 present 해 주었다가 이후 팀 빌딩에서 문제점에 대해서 물어보니 제가 화면전환이 되는 다음 화면의 backgroundColor를 .clear로 주어서 이전화면의 잔상이 남는 현상이 있었습니다.

3. 계획과 실제 결과의 차이 (배운 점 들)

먼저 위에서 말했던 것 처럼 기존에는 Tabbar를 이용해서 화면 전환을 하려했습니다. 그러나...! 

멘토님의 피드백 중에서 무언가를 작성하고 화면은 Tabbar에 들어가는 구조가 흔하지 않은 구조라는 피드백을 받았고, 사실 다양한 앱을 접하지 않아서 같은 유형(Todo, Memo)의 앱 들을 정말 많이 다운받아서 사용해보고 구조를 파악하려 했습니다. 이 점에서 앱을 만들기 전에 다양한 앱을 사용해보고 UI/UX적인 측면을 절대 무시할 수 없구나..! 사용자의 편의 뿐만 아니라 기능을 구현하는 데 있어서 중요한 부분이라 배웠고 여러 앱을 써보면서 소중한 경험 GET! 😝 

 

이후 Floaty라는 항상 어떤 화면의 제일 상단에 올라와있는 오픈소스 라이브러리를 사용했고, FullScreen으로 Present되는 화면으로 작성화면을 구현하였습니다 ㅎㅎㅎ 이 부분은 View의 생명주기와도 관계가 있습니다! 

Floaty 버튼

- UNUsernotificationCenter

초기 기획에는 없던 알림 기능을 추가하려다 보니, 단 시간에 어떤 화면에서 알림을 추가하고, 어디에서 지워주고, 수정해줄지에 대해 고민하는 시간이 엄청 길었고, 알림을 오랜만에 사용하다보니 정말 머리가 많이 아픈 부분이 한 두군데가 아니었습니다 ㅜ_ㅜ

 

iOS10부터 UNUsernotification이 나왔는데, 이전에 UILocalNotification에서 .repeatInterval 프로퍼티를 이용해서 반복을 할 수 있었습니다. 그러나 UNUsernotifiation에서는 미래의 특정 날짜에 울릴 수는 있지만 이 부분을 반복시키는 것에서 고민이 많았지만 결국 UNTimeIntervalNotificationTrigger를 사용해서 미래의 처음 울리는 날짜 fireDate에는 반복이 없는 알림 -> fireDate이후에는 하루 뒤의 TimeInterval 로 반복된 알림을 추가해서 작심 1개 당 총 2개의 로컬 알림을 설정할 수 있게 해주었습니다.

엄청난 골치 속에서 완성된 알림 기능...

앞으로의 개선, 추가 기능 구현

  • 온 보딩(Onboarding) 화면 및 사용법 화면 구현 → 사용자에게 앱 이용 방법을 알기 쉽게 표현
  • 작심한 일(대표 이미지, 알람 시간) 수정 구현 → 작심은 그 만큼 큰 마음을 먹었다는 의미이기 때문에 기간, 작심한 일(제목)을 수정할 순 없지만 대표이미지, 알람 시간을 수정할 수 있게 구현 예정
  • 데이터 초기화, 백업, 복구
  • 작심을 모아볼 때 TableViewCell을 누르면 인증사진을 모아서, UIActionController를 이용해 SNS에 인증할 수 있는 CardView를 구현

끝으로...

처음이다 보니 아쉬운 점이 많은 프로젝트였습니다. 그리고 정말 많이 배우고 느끼고 치열하게 개발했습니다. 

일단 코딩이라는 단어처럼 아직 코드를 작성하는 부분(Extension, Protocol) 같이 코드를 나누는 점에서 부족하다고 느꼈고 많이 보고, 많이 직접 작성해봐야 할 것 같습니다. 머슬메모리라는 단어처럼 익숙하고 한 번 구현해봤던 기능 들을 막힘없이 작성할 수 있고 이해하는 개발자가 되고 싶습니다.

분기처리 -> 코드가 지저분하다고 느끼는 부분은 보통 분기처리를 해주는 부분이었습니다. 조건문 안에 조건문이 들어가고 어떤 조건문에서는 dateFormatter의 포맷을 변경해주고 하다보니 깔끔하지 못하다는 느낌을 받았습니다.

 

먼저 App자체를 짧은 시기에 기획, 개발, 배포 하려다보니 기능이 완벽하게 구현이 되어있지 않은 상태이기 때문에 먼저 기능을 완벽하게 구현 후, 코드를 수정하는 과정으로 버전 Update를 진행할 것이고 한 달동안 같이 고생한 SeSAC 2기 분들과 멘토님들께 감사하다는 말씀을 끝으로 글을 마치겠습니다!! 마지막은 애플에서 "개발자" 라고 불러주길래 뿌듯해서 캡쳐한 사진... ⭐️


https://www.figma.com/file/mHn7plKhrGPqQc08rgTx2T/%EC%9E%91%EC%8B%AC?node-id=0%3A1

 

Figma

Created with Figma

www.figma.com

 

'iOS 개발' 카테고리의 다른 글

작심 개인정보 처리방침  (0) 2022.09.29
고차함수(Higher Order Function)  (1) 2022.08.09
Property - (1) 저장  (0) 2022.07.28
UIAlertController  (0) 2022.07.20
7월 18일 월요일  (0) 2022.07.18