첫 플러터 앱 '핏플' 회고

YJ KIM·2025년 1월 15일
0
post-thumbnail

처음으로 플러터로 만들어본 앱이 출시한지... 대략 5개월은 지난 것 같은데 지금에서야 회고를 하게 되었습니다. 새롭게 알게된 점이나 추후 더 보강해야할 부분들을 조금 적어보도록 하겠습니다.

앱스토어

아무래도 플러터가 크로스플랫폼 프레임워크기 때문에 안드로이드도 올라와있습니다!

1. 앱 개발을 하며 처음 알게된 부분들

앱에서의 업데이트

그전까지는 백엔드 부분만 맡았던 터라,

게시글 작성 기능을 예시로 들 때
1. 게시글 작성 api 호출 -> 게시글 가져오는 api 호출
2. 게시글 작성 api 호출 -> 작성 api가 200 코드를 반환하면 현재 게시글 리스트에 추가

1번인 줄 알았는데 2번으로 구현했습니다.
api 호출은 서버에 돈이 나가는 부분이니 최대한 최소로 해야하고, 굳이 모든 게시글을 가져오는 api를 호출할 필요가 없었습니다. (물론 이건 제 서비스 기준이고, 만약 다른 서비스라면 호출하는 식으로 해야할 수 있습니다. 저는 현재 사용자의 데이터만 다루는 부분이라 ㅎㅎ)

이런 비관적 업데이트에 대해서 알게 되었습니다.

Clean Architecture

클린 아키텍쳐에 대해 알게 되었습니다. 이 부분은 추후 다른 게시물로 찾아올 예정입니다... (너무 중요한 부분이라...)
사실 개발 과정에서는 앱 생태계에서의 아키텍처에 대해 잘 몰랐는데, 세미나를 하면서 더 깊게 공부하게 되었습니다. 발표까지 한 부분이라 게시글로 공부한 걸 올릴 계획입니다... (과연...)

화면 구성

사실 그전에 플러터를 공부하기 위해 투두리스트 어플을 만든 경험이 있는데,
이때는 고정크기를 사용했었습니다.

근데 사용자의 휴대폰 크기는 다 제각각이기 때문에 고정크기가 아닌 상대크기로 구현해야 한다는 것을 알게 되었습니다.
그래서 첫 커밋 후 코드를 엄청 수정하게 되었습니다...

padding같은 경우에만 적용하고 위젯은 Expanded나 flexible 등으로 감싸주었습니다.
MediaQuery 같은 경우도 적극 사용해야 했습니다.

이것도 너무 중요한 부분이라 글을 작성해야 될 것 같습니다!

2. 추후 더욱 반영해야할 사항들

  1. Clean Architecture를 적극 반영하여 구조적 리팩토링 수행
  2. 오픈소스 패키지 적극 사용
  3. 코드 중복 줄이기

위 3가지 사항을 다음 프로젝트나, 현재 프로젝트를 리팩토링 할 때 적극 준수할 계획입니다.

3. 잘한점

1. 생성형 AI를 코드 리뷰에만 사용한 점

본격적인 첫 플러터 프로젝트였기 때문에 최대한 제가 구현하고 싶어서, 코드 리뷰에만 gpt를 사용했습니다.

2. Custom으로 컴포넌트를 구현한 점

공통된 부분은 하나의 클래스로 모는 객체지향적인 코드로 구현했습니다.
특히 상태관리를 하는 부분에서, 상태관리 객체만 변경하면 되니 너무 간편했습니다!

실제로 커스텀 캘린더를 구현하는 과정에서
작은 요소부터 전체 캘린더까지 각각의 위젯으로 구현해서 수정도 용이하고 다른 사람들도 사용할 수 있도록 구현했습니다.

3. 기획을 최대한 반영하려고 한 점

제가 생각했을 때 좋은 앱, 좋은 응용 프로그램이란 기획을 최대한 따르는 어플리케이션이라고 생각합니다. 주어진 기획을 최대한 반영하려고 했던 점이 잘했던 것 같습니다 ㅋㅋㅋ

4. 부족했던 점

1. Dart에 대한 지식이 부족함

Dart에 대해 충분한 학습을 하지 않고, 맨땅에 해딩을 하다 싶이 한 프로젝트라서 플러터, dart 문법에 대해 깊이 이해하지 못한 채로 코드를 작성한 것 같아서 매우 아쉽습니다.

Dart에 대해 더욱 깊이 공부해야겠다고 느끼게 되었습니다.

2. Clean Architecture 반영

개발 전에 아키텍쳐에 대한 학습을 하지 못했던 점이 너무 아쉬웠습니다. 개발을 하면서도, 아키텍쳐에 대해 잘 알지 못해 개발 과정이 느려지고 코드가 깔끔하게 작성되지 않아 아키텍쳐 관련 리팩토링을 많이 해야 했습니다. 처음부터 잘 알았다면 시간을 낭비하지 않았을 텐데... 라는 아쉬움이 큽니다.

하지만 상태관리로 Riverpod을 사용했기 때문에 clean architecture에 대해 잘 모르지만 어찌저찌 아키텍쳐를 준수해서 작성하게 되었습니다.

+후에 아키텍쳐에 대해 공부하다가 riverpod 덕분에 아키텍쳐를 어느정도 준수할 수 있었구나 느끼게 되었습니다.

3. 협업 시에 공통 코드를 정하고 시작할 것

코드를 작성하면서 겹치는 부분이 많았는데, 이걸 각자 개발하게 된 경험이 있습니다. 후에 한 명의 코드는 버려져야 하는데 이 부분이 매우 아쉬웠습니다. 공통 코드가 겹치는 사실을 알고 있었는데

  1. 공통 기능이 무엇이고
  2. 공통 기능을 누가 담당할지
  3. 공통 기능에 대한 정보 공유

가 미흡해서 일어난 일인 것 같습니다.

이 부분이 너무 아쉬웠고 개발 시간도 길어지게 된 것 같아 너무 슬펐습니다...

5. 마지막으로

플러터에 대해 두번째로 진행해본 프로젝트(첫번째 프로젝트: gitHub)였는데, 첫번째 프로젝트에서 부족한 점들을 보완하고 새로운 기술스택(상태관리)를 경험할 수 있어서 매우 뜻깊은 프로젝트였던 것 같습니다.

현재 플러터로 개인 앱을 개발하고 있는데,

  • usecase까지 반영한 clean architecture를 준수
  • 수준 높은 상태관리 코드
  • 업데이트 방법에 대해 심도깊은 고민
  • Dart 문법을 적극 활용한 좋은 코드 작성
  • splash page부터 회원가입 페이지 등 필요한 기본 요소를 포함하여 개발

위와 같은 사항들을 준수해서 개발하는 것이 목표입니다!

profile
모르면 쓰지 말고 쓸 거면 알고 쓰자

0개의 댓글

관련 채용 정보