본문 바로가기
개발

late diary 1차 개발 회고

by 이로서로 2022. 11. 26.

10월 중순부터 11월 중순까지 대략 한달에 걸쳐 어플을 만들어보았고 이에 대한 회고를 남깁니다. 

 

시작은 제 개인적인 모티베이션입니다. 살다보면 항상 현실에 매몰되서 과거에 대해서는 잊고 살게 되는데, 이를 쉽게 되돌아 볼 수 있는 툴을 만들어 보는 중입니다. 그 중 사진을 이용해 추억을 되돌아보는게 가장 쉽게 구현해볼 수 있을 것 같아 이 어플을 만들었습니다. 

 

어플의 주요한 기능은 아래와 같습니다. 

i) 사진을 정리하여 보여줌으로써 잊어 먹고 있었던 추억을 찾아낼 수 있게 할 것. 

ii) 해당 추억에 대해 일기를 쓸 수 있게 하여 중요한 날들에 대한 기록을 남기고 모아볼 수 있게 할 것. 

 

어플의 이름을 late diary로 일단 정하였습니다. "늦게/나중에 쓰는 일기" 정도의 의미를 담으려고 했습니다. 

어플은 play store에서 검토중입니다만 git hub에도 코드가 공유되어 있습니다. 

https://github.com/boy1089/Late-Diary

 

개발 초반 사람들과 얘기

개발 초기에는 flutter를 study해가며 이런저런 기능들을 구현하고, 동시에 주변 사람들을 만나며 얘기를 하려고 노력했습니다. 

얘기를 하면서 주로 물어보았던 건 다음과 같습니다. 

 

i) 전에 찍은 사진을 많이 보는가? 찍은 사진은 어떻게 보관하고 어떻게 보는가?

--> 사진을 어디에 저장하느냐에 따라 기능이 달라져야 할 것 같아서 물어보았습니다. 저는 google photo에 업로드 하고 있어서 처음에는 google photo의 데이터를 읽어오는 방식으로 만들고 있었습니다만 대부분의 사람들이 핸드폰에 저장하고 있기에 핸드폰에 저장된 사진을 이용하도록 바꾸어서 잘 물어보았다고 생각이 듭니다. 

--> 개발 막바지에 만난 사람들은 구글 포토를 쓴다고도 해서 결국 사용자 풀을 넓히려면 로컬과 cloud 모두 지원해야 한다고 느꼈습니다.

 

ii) 사진의 갯수에 따라 heatmap으로 보여주면 어떤가? 중요한 날을 뽑아 볼 수 있지 않을까?

--> 제가 세운 가설을 어플을 만들기 전에 확인해보고 싶었습니다. 사람들은 보통 중요한 날에 사진을 많이 찍기에, 사진의 갯수로 heatmap을 만들면 중요한 날을 뽑아 볼 수 있을거라 생각했습니다. 대부분 반응은 좋다고 했습니다. (정말 좋아서 좋다고 한건지는 모르겠네요 ^^;)

 

 

개발 관련

개발은 주로 집에서 했고, activity watch라는 오픈소스 소프트웨어를 이용해 얼마나 작업을 했는지 기록을 했습니다. 동시에 제가 집중을 잘 하는 환경을 알기 위해 제가 집중을 잘 하는지 파악하려고 했습니다. 아래 그래프는 10월, 11월 간 작업량입니다.

10월, 11월 작업 시간. 

개인적으로 느낀점은 제 집중이 consistent하지 않다고 느꼈습니다. 1주 정도만 정말 집중해서 한 것 같고, 나머지는 어떻게든 집중해서 작업하게 만들려고 노력했습니다. 보통 월~화에 집중이 되고, 목~금은 집중력이 떨어지는 것 같았습니다. 

 

특히나 후반부에 와서는 집중력이 많이 떨어졌습니다. 폰트, 디자인, 약관 등 세세한 부분까지 잘 마무리하지는 못했습니다. 

 

flutter에 study는 appbrewery의 강의 하나를 결제해서 초반부만 보았습니다. 제 성격이 이론을 다 파악하고 개발하기 보다는 맨 땅에 헤딩하면서 파악을 하는 것을 선호해서 강의는 초반만 보고 일단 만들려고 했습니다. 맨 땅에 헤딩을 하고나서 개발 후반에 강의를 보니 필요한게 보이긴 하더군요. 특히나 개발 초반에 state management를 위한 package를 모른 상태에서 개발을 하고 나중에 provider를 도입한 건 뼈아픈 실책이였습니다. 

 

개발을 하면서 여러 난점들이 있었고 여전히 있습니다. 아래는 예시입니다.

i) 이미지 갯수가 많으니 처리가 오래 걸리고, UI에 버벅거림이 생깁니다. 

- 이미지의 meta 데이터에서 위치 정보를 가져와서 분석에 사용합니다. 

- 제가 가지고 있는 이미지를 전부 사용하니 38000개 정도 되어 전부에 대해 meta 데이터를 읽어 오는 데만 시간이 오래 걸렸습니다. 

- async로 함수를 구현하고 background에서 읽어오게 해도 UI가 버벅거리더군요. 

- compute를 이용해서 thread를 분리하니 좀 나아졌지만 아직 데이터를 분석하는 중에는 UI가 버벅거리는 감이 있는 상태입니다. 

 

ii) 원인 모를 UI 느려짐

- tap event에 대해 2개의 widget이 이벤트 처리를 하는 상황입니다. 

- 두 widget이 동시에 작동하게 하고 싶지는 않아 if문으로 분기를 해놓았습니다. 

- 그런데 왜인지 모르겠지만 tap event를 반복하다보면 UI가 매우 느려지는 현상이 있습니다.

- 두 widget 중 하나를 hover event를 받도록 만들면 해당 문제가 없어집니다. 

- 왤까요..? 

 

iii) 코드 유지보수

- 제가 SW 경력이 없는 상황에서 혼자 만들다보니 코드 퀄리티는 저세상으로 가고 있습니다.

 

사람 만남

개발 중간 중간에 다른 사람을 만나는 게 refresh가 되긴 했습니다. 

특히나 UI와 주요 기능을 구현한 후 사람들에게 보여주고 좋은 피드백을 받았을 때 기분이 좋았습니다.

 

다음 할일

다음번 릴리즈에서는 아래 내용들을 해보려 합니다. 

  • 기능 업데이트
  • iso, android 다 되는 앱 만들기
  • 디자인 개선
    • 디자이너!에게 최소한 의견이라도 받아보려고 합니다.

개인적으로 바라는 점입니다. 

  • 개발 속도를 빠르게 할 수 잇었으면
    • 실력 늘리기
    • 다른 사람이랑 코드 리뷰
  • 서버 써보기.
  • 같이 할 사람을 찾기

댓글