본문 바로가기

Project

[Project] 나는오늘 출시 회고

https://apps.apple.com/kr/app/%EB%82%98%EB%8A%94%EC%98%A4%EB%8A%98/id6443586907

("나는오늘" 앱스토어 링크)

 

‎나는오늘

‎언젠가 잊혀질 소중한 오늘을 간단히 기록해보세요! "나는오늘"은 깜찍한 캐릭터와 한장의 사진 그리고 일기를 통해 하루를 기록하는 초간단 일기앱입니다. 짧은 시간동안 당신의 하루를 정

apps.apple.com

나는오늘 V1.0.0 개발 요약

정식출시 : 2022년 10월 3일

소요기간 : 9월 8일 ~ 10월 3일 (총 26일)

역할 : 1인 프로젝트(기획, 디자인, 개발)

UI 구성 : SnapKit과 AutoLayout을 활용한 코드 기반 UI (런치스크린을 제외한 모든 화면)

로직 흐름 : MVC 패턴

오픈소스

  • FSCalendar
  • SnapKit
  • YPImagePicker
  • Toast
  • IQKeyboardManager
  • Realm

회고

기획단계

거창하고 창의적인 앱을 만들기 보다는 올해 학습한 내용을 총복습하고 싶었다. 그리고 처음 리액트와 자바스크립트를 공부할 때에도 CRUD 기능을 구현하면서 기초 실력을 쌓았던 경험이 생각났다. CRUD 기본기능에 충실하지만 그렇다고 너무 밋밋한 앱을 만들고 싶지도 않았다. 출시된 여러 다이어리앱을 사용해보고 나름대로 창작의 고통을 겪고나서 나는오늘 앱을 기획할 수 있었다. 전반적으로 여러 앱을 참고하면서 기획을 했지만, 화면 전환과 각 기능의 상호작용에 대한 UI/UX 부분은 개인적으로 많은 고민을 했고 유저의 입장에서 쉽게 사용할 수 있도록 직관적으로 구성했다.

초기 개발 지연

아무래도 전문 디자이너가 아니기도 하고 기획에 주어진 시간도 많지 않았기 때문에, 개발을 하면서 디자인을 진행했다. 그러다보니 개발 초기 화면의 디자인 틀을 잡는데 굉장히 오래 걸렸다. 캘린더에 감정 캐릭터는 어디에 표시할 것이며, 스와이프 효과는 어떻게 보일 것이고, 리스트의 셀 크기는 유동적으로 보여줄 것인지 등등 코드 입력 후 빌드를 반복하며 틀을 잡는 시간이 오래 걸렸다.

Date 타입 다루기

프로젝트를 하면서 Date 타입을 다루는 실력이 늘었다. FSCalendar를 사용해서 달력을 표시하고 여러 날짜 로직 처리를 하면서 Date 타입을 연산하고 String 타입으로 바꾸는 작업을 자주했다. 기존에 학습한 내용이었지만 제대로 다룰 시간이 없었는데 프로젝트를 통해 복습할 수 있어서 좋았다.

일기 리스트 테이블 셀 크기 동적 조절

일기 데이터로 캐릭터(필수), 이미지(옵셔널), 일기내용(옵셔널)이 있었고 세 데이터의 각 존재유무에 따라서 셀 영역을 동적으로 조절해야 했다. 처음에는 셀 자체를 스택뷰로 처리했는데, 그 이유는 없는 데이터의 공간은 자동으로 제외하고 싶었기 때문이다. 하지만 크기가 정해진 이미지와 텍스트뷰는 nil 값이어도 공간을 그대로 차지하고 있었기 때문에 좀 더 고민했었다. 다른 문제는 하나의 셀을 등록하고 셀 파일 안에서 각 UI 적용 함수를 작성해서 분기처리를 해주었는데, 바랐던 바와 다르게 테이블 데이터가 꼬였다. 각 데이터 유무에 따른 크기 적용이 제대로 안되서 테이블이 엉망이었다. 
결국 이러한 문제들은 셀을 여러개 만들어주고, 각 셀의 높이를 cellForHeight 함수로 분기처리해서 적용시켰다. 그리고 cellForRow 함수에서도 분기처리로 알맞은 셀이 선택되도록 유도하였다. 그 결과, 알맞은 셀이 랜더링되었고 테이블뷰도 원하는대로 디자인할 수 있었다.

실수한 부분

탭 중앙 연필 버튼 탭하고 "특정날" 버튼을 탭하면 데이트피커가 나온다. 여기에서 미래 날짜도 선택이 된다. 심사 올리기 직전 데이트피커 코드를 수정했었는데 실수로 분기처리하는 코드를 주석처리해버렸다. 그것만 아니었으면 로직적으로 완벽했을텐데, 미래 일기를 작성할 수 있는 버그가 발생해서 아쉬웠다.

업그레이드 예정

  • 다국어 지원 (영어/중국어 간체/일본어/힌디어/타밀어)
  • 백업/복구
  • 유저의 디자인 피드백 대응
  • 자주 쓰는 단어 분석 기능
  • 일기 작성 유도 알람