처음으로 플러터로 만들어본 앱이 출시한지... 대략 5개월은 지난 것 같은데 지금에서야 회고를 하게 되었습니다. 새롭게 알게된 점이나 추후 더 보강해야할 부분들을 조금 적어보도록 하겠습니다.
아무래도 플러터가 크로스플랫폼 프레임워크기 때문에 안드로이드도 올라와있습니다!
그전까지는 백엔드 부분만 맡았던 터라,
게시글 작성 기능을 예시로 들 때
1. 게시글 작성 api 호출 -> 게시글 가져오는 api 호출
2. 게시글 작성 api 호출 -> 작성 api가 200 코드를 반환하면 현재 게시글 리스트에 추가
1번인 줄 알았는데 2번으로 구현했습니다.
api 호출은 서버에 돈이 나가는 부분이니 최대한 최소로 해야하고, 굳이 모든 게시글을 가져오는 api를 호출할 필요가 없었습니다. (물론 이건 제 서비스 기준이고, 만약 다른 서비스라면 호출하는 식으로 해야할 수 있습니다. 저는 현재 사용자의 데이터만 다루는 부분이라 ㅎㅎ)
이런 비관적 업데이트에 대해서 알게 되었습니다.
클린 아키텍쳐에 대해 알게 되었습니다. 이 부분은 추후 다른 게시물로 찾아올 예정입니다... (너무 중요한 부분이라...)
사실 개발 과정에서는 앱 생태계에서의 아키텍처에 대해 잘 몰랐는데, 세미나를 하면서 더 깊게 공부하게 되었습니다. 발표까지 한 부분이라 게시글로 공부한 걸 올릴 계획입니다... (과연...)
사실 그전에 플러터를 공부하기 위해 투두리스트 어플을 만든 경험이 있는데,
이때는 고정크기를 사용했었습니다.
근데 사용자의 휴대폰 크기는 다 제각각이기 때문에 고정크기가 아닌 상대크기로 구현해야 한다는 것을 알게 되었습니다.
그래서 첫 커밋 후 코드를 엄청 수정하게 되었습니다...
padding같은 경우에만 적용하고 위젯은 Expanded나 flexible 등으로 감싸주었습니다.
MediaQuery 같은 경우도 적극 사용해야 했습니다.
이것도 너무 중요한 부분이라 글을 작성해야 될 것 같습니다!
- Clean Architecture를 적극 반영하여 구조적 리팩토링 수행
- 오픈소스 패키지 적극 사용
- 코드 중복 줄이기
위 3가지 사항을 다음 프로젝트나, 현재 프로젝트를 리팩토링 할 때 적극 준수할 계획입니다.
본격적인 첫 플러터 프로젝트였기 때문에 최대한 제가 구현하고 싶어서, 코드 리뷰에만 gpt를 사용했습니다.
공통된 부분은 하나의 클래스로 모는 객체지향적인 코드로 구현했습니다.
특히 상태관리를 하는 부분에서, 상태관리 객체만 변경하면 되니 너무 간편했습니다!
실제로 커스텀 캘린더를 구현하는 과정에서
작은 요소부터 전체 캘린더까지 각각의 위젯으로 구현해서 수정도 용이하고 다른 사람들도 사용할 수 있도록 구현했습니다.
제가 생각했을 때 좋은 앱, 좋은 응용 프로그램이란 기획을 최대한 따르는 어플리케이션이라고 생각합니다. 주어진 기획을 최대한 반영하려고 했던 점이 잘했던 것 같습니다 ㅋㅋㅋ
Dart에 대해 충분한 학습을 하지 않고, 맨땅에 해딩을 하다 싶이 한 프로젝트라서 플러터, dart 문법에 대해 깊이 이해하지 못한 채로 코드를 작성한 것 같아서 매우 아쉽습니다.
Dart에 대해 더욱 깊이 공부해야겠다고 느끼게 되었습니다.
개발 전에 아키텍쳐에 대한 학습을 하지 못했던 점이 너무 아쉬웠습니다. 개발을 하면서도, 아키텍쳐에 대해 잘 알지 못해 개발 과정이 느려지고 코드가 깔끔하게 작성되지 않아 아키텍쳐 관련 리팩토링을 많이 해야 했습니다. 처음부터 잘 알았다면 시간을 낭비하지 않았을 텐데... 라는 아쉬움이 큽니다.
하지만 상태관리로 Riverpod을 사용했기 때문에 clean architecture에 대해 잘 모르지만 어찌저찌 아키텍쳐를 준수해서 작성하게 되었습니다.
+후에 아키텍쳐에 대해 공부하다가 riverpod 덕분에 아키텍쳐를 어느정도 준수할 수 있었구나 느끼게 되었습니다.
코드를 작성하면서 겹치는 부분이 많았는데, 이걸 각자 개발하게 된 경험이 있습니다. 후에 한 명의 코드는 버려져야 하는데 이 부분이 매우 아쉬웠습니다. 공통 코드가 겹치는 사실을 알고 있었는데
가 미흡해서 일어난 일인 것 같습니다.
이 부분이 너무 아쉬웠고 개발 시간도 길어지게 된 것 같아 너무 슬펐습니다...
플러터에 대해 두번째로 진행해본 프로젝트(첫번째 프로젝트: gitHub)였는데, 첫번째 프로젝트에서 부족한 점들을 보완하고 새로운 기술스택(상태관리)를 경험할 수 있어서 매우 뜻깊은 프로젝트였던 것 같습니다.
현재 플러터로 개인 앱을 개발하고 있는데,
위와 같은 사항들을 준수해서 개발하는 것이 목표입니다!