일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- FLUTTER
- app
- docker
- MSSQL
- Linux
- 바보
- error
- gemini
- Windows
- JS
- unity
- ChatGPT
- dart
- 유니티
- mariadb
- Python
- nodejs
- 연동
- Kibana
- JavaScript
- API
- build
- Ai
- ssh
- React
- MySQL
- elasticsearch
- 구글
- AWS
- Today
- Total
가끔 보자, 하늘.
Flutter 로 앱 개발 및 릴리즈 - 07. 앱 기능 정리 및 중간 소회 본문
2025.05.05 - [개발 이야기/개발 및 서비스] - Flutter 로 앱 개발 및 릴리즈 - 00. 마음의 준비
2025.05.05 - [개발 이야기/개발 및 서비스] - Flutter 로 앱 개발 및 릴리즈 - 01. 생성 및 시뮬레이터 테스트
2025.05.06 - [개발 이야기/개발 및 서비스] - Flutter 로 앱 개발 및 릴리즈 - 02. 폴더 구조 정리
2025.05.07 - [개발 이야기/개발 및 서비스] - Flutter 로 앱 개발 및 릴리즈 - 03. Flutter Compoent와 Native Component
2025.05.10 - [개발 이야기/개발 및 서비스] - Flutter 로 앱 개발 및 릴리즈 - 04. Calendar 페이지
2025.05.10 - [개발 이야기/개발 및 서비스] - Flutter 로 앱 개발 및 릴리즈 - 05. Project 페이지
2025.05.11 - [개발 이야기/개발 및 서비스] - Flutter 로 앱 개발 및 릴리즈 - 06. Settings 페이지
한동안 다른 일이 있어 이제야 다시 flutter 프로젝트로 돌아왔네요.
이번 프로젝트를 진행하며 dart를 진지하고 공부할 생각은 없었습니다. 주로 백엔드만 해왔기에 AI를 이용해 지금까지 사용해보지 않은 언어로 프론트엔드를 릴리즈까지 얼마나 쉽게 할 수 있을까 하는 궁금증으로 시작했기 때문입니다. 정말 AI만으로 프로젝트 개발을 완료할 수 있다면 굳이 dart를 제가 알 필요도 없었겠죠. 하지만 아직 그정도는 아닌 듯 합니다. 가능한 문법이나 언어의 특징을 언급하지 않겠지만 개발에 꼭 필요한 내용들은 따로 정리해 보겠습니다.
코드가 커져가면서 점점 한번에 처리할 수 없는 토큰을 사용하기 시작하네요. gemini(2.5 pro preview)는 응답중에 코드가 잘리기 시작했고, 심지어 legacy 코드도 중간 중간 포함되면서 Gemini로만 작업을 하는데 한계가 오기 시작했습니다. 토큰수를 줄이기 위해 코드 중 필요한 부분만 생성하라고 해도 gemini는 불필요한 코드나 설명을 붙이면서 자기 스스로 토큰을 낭비하네요. 결국은 이 시점에 github copilot로 돌아올 수 밖에 없었습니다.
게다가 Android studio의 gemini 프롬프트에는 한글을 입력할 때 간혹 큰 허들이 있습니다. "글" 라는 글자를 쓰면 "ㄱ그글글"와 같이 입력되는 경우가 종종 발생했습니다. copilot 프롬프트 입력창에는 그런 문제가 전혀 발생하지 않는데도 말이죠.
지난 한 주 넘게 다른 일들이 많아 간간히 이 앱 개발을 계속 해왔습니다. 중간 과정을 다 보여드리기 보다는 스크린 샷으로 간단히 지금까지 개발된 내용을 소개하고 다음에는 앱 릴리즈를 위한 단계로 넘어가겠습니다.
- 캘릭터 페이지 -
기본적으로 월 단위 달력이 보이며 일정이 있는 날은 해당 일정을 구분할 수 있는 색으로 점이 표기되며 하단에는 상세 일정을 리스트 형태로 표기합니다. 상단에는 일정을 일,주, 월 단위로 볼 수 있는 옵션이 있습니다.
각 일정을 선택하면 아래와 같이 상세 내용을 보여주며 바로 수정도 가능합니다. 각 일정은 하위 task를 설정할 수 있습니다.
스크린샷의 각 용어들은 추후 수정될 예정입니다. project -> 일정 -> task 순으로 설정 가능합니다. 일정에 하위 일정을 가질 수 있으며 task와 일정은 비슷하면서도 다른 성격입니다. 이 연재의 마지막에는 이와 다른 용어들도 정리되어 소개를 드릴 예정입니다.
- Project 페이지 -
프로젝트 단위로 일정을 정리할 수 있으며 고유한 컬러를 통해 프로젝트를 쉽게 구분할 수 있습니다. 또한 D day 및 진행률을 보기 쉽게 정리했습니다.
이렇게 대부분의 MVP 기능들을 구현하면서 처음 목표했던 바이브 코딩으로 앱 릴리즈까지 가볼까 했던 목표가.. 아직은 조금 이르다는 느낌이 들었습니다. 그 핵심에는 역시 토큰수의 한계로 코드가 커질수록 버그가 발생할 확률도 크며, agent들이 진행 중 limit 문제로 중단되는 경우가 많았습니다. (google one ai pro, copilot pro 사용 기준) 간혹 수정을 위해 코드를 삭제하고 생성하다 리밋 걸려서 코드 날리는 경우도 있고( Android studio에는 local history가 있어 영구 분실의 경우는 없었습니다.) 패키지나 여러 설정의 버전이 틀려 애를 먹는 경우도 있었습니다.
특이한 버그를 만든 한 예로 iterator를 배열처럼 사용하는 경우가 있었는데 수정 내용을 보면 다음과 같습니다.
오류가 발생한 527번 줄을 확인했습니다. 문제는 WidgetsBinding.instance.focusManager.rootScope.traversalChildren[0].context 부분에서 발생했습니다. traversalChildren은 Iterable<FocusNode> 타입인데, 이 타입에서는 배열 접근자 []를 직접 사용할 수 없어 오류가 발생했습니다.
이런 에러 이외에도 nullable로 선언된 변수를 일반 변수처럼 사용하는 등의 에러가 간간히 나왔습니다. 이런 에러들이 새로운 코드를 만들 때 발생하지는 않고 주로 수정할 때 발생하기 때문에 변경되는 내용들을 가능하면 꼼꼼히 살펴보는게 좋습니다.
그리고 수정 시 리펙토링했던 코드를 다시 인지하지 못하는 경우가 다수입니다. 예를들어 코드가 너무 길어져서 다수의 파일로 분산되면 중복된 코드, 사용하지 않는 코드 등이 난무하기 시작합니다. 그래서 코드를 중간중간 확인하고 제어하면서 처리해야 시간을 절약할 수 있습니다.
이런 limit의 제한도 문제였지만 전달하는 프롬프트의 내용을 혼동하는 경우도 있었고(용어 정리 중요성을 다시 한번 깨달았네요.), A라는 기능을 구현하면서 B라는 기능을 변경하거나 삭제되는 경우도 있었습니다. 가끔은 더 좋은 기능으로 구현되기도 했습니다. 예를들며, 위 스샷 중 진행률은 처음에 %를 텍스트로만 기록했지만 어느 순간 progress bar로 바뀐 경우도 있었습니다.
코딩 AI 모델은 주로 claud 3.7 sonnet > GPT 4.1 > Gemini 2.5 순으로 사용했습니다. 아무래도 코드 제작 기능은 claud 가 확실히 차이를 보여줍니다. 안드로이드 스튜디오는 처음 써봐서 기능을 몰라 그런지 모르겠지만 vscode에서는 claud4를 사용할 수 있었는데 안드로이드 스튜디오에서는 3.7 sonnet과 thinking만 나와서 좀 아쉽더군요.
그럼 지금까지 mvp 기능을 구현하면서 혼자 구글링하면서 이 앱을 개발했다면 얼마나 걸렸을까 정리해봤습니다.
현재까지의 개발 일정은 다음과 같습니다. (완전 초보는 아니고 프로그래밍 언어 두, 세가지 사용한 중견 개발자 정도를 기준으로 한다고 보시면 됩니다. Flutter/Dart, Android Studio는 처음입니다.)
- 툴 및 언어 학습 : 0일
- MVP 개발 기간 : 10일 (10시간 x 4일 + 3시간 x 10일 = 70시간 , 일 8 시간 기준, 약 10일)
- 별도 모델 설계 없었으며 프롬프트 작성하면서 바로 필요한 내용 추가, 삭제
만약 AI없이 개발을 했다면 아마 다음과 같은 일정이 걸렸을 것으로 예상됩니다. 만약 제가 실패없이 한번에 개발했다면... AI로 개발할 때처럼 처음 설계를 몇 번이난 뒤집으며 진행했다면 아래 일정의 x2가 분명할 겁니다. 또한 AI와 작업할 때 총 10일 중 4일은 버그 수정에 시간을 사용해야 했습니다. 아직은 AI가 완벽하지 않기에 주의가 필요합니다. 동일한 기능을 하는 함수를 여러개 만들거나 기존에 있던 기능을 바꾸기도 하기 때문에 주의해서 작업을 해야 합니다.
- 툴 및 언어 학습 : 10일 (이전 python의 전체 튜토리얼 스터디 및 샘플 프로젝트 2개 제작한 시간 기준 + 3일)
- MVP 개발 기간 : 50일
- 모델링 설계 및 코드 정리: 3일
- Framework & Setting Page : 7일 (Setting 페이지는 UI만)
- Calendar Page : 10일 (기존 calendar 패키지 사용)
- Project Page : 30일 (Tree Node Widget)
정말 정말 최소로 잡아서 5배는 빠르게, 느슨하게 잡았다면 10배는 빠르게 작업할 수 있다고 봐야겠네요.
몇 가지 기능들을 정리하면서 안드로이드 앱 배포를 기준으로 우선 정리해 보겠습니다. 큰 돈이 들지 않는다면 최대한 많은 플랫폼으로 배포를 해보겠습니다. :)
'개발 이야기 > 개발 및 서비스' 카테고리의 다른 글
구글 플레이 개발자 등록 절차 ver 2025 (1) | 2025.05.29 |
---|---|
구글 개발자 개인 계정에서 조직 계정으로 이동하기 (1) | 2025.05.29 |
ESP32 IDF + VSCode 환경 구축 (0) | 2025.05.22 |
OpenAI speech to speech 샘플 (0) | 2025.05.21 |
Flutter 로 앱 개발 및 릴리즈 - 06. Settings 페이지 (0) | 2025.05.14 |