이 글은 2022년 3월 25일에 첫 작성되었습니다.
(https://github.com/shs395/shs395.github.io/blob/master/content/project/damta/index.md)
🚀 들어가며
2022년 2월 17일 처음으로 앱을 출시해봤다.
앱을 만들어봐야겠다고 생각한 건 돈 때문이었다.
매달 들어오는 월세 같은 광고비,,
어쩌면 나도..?
(불가능했다.)
🤔 플러터를 선택한 이유
Swift, Objective-C, Kotlin, React Native, flutter..
앱개발과 관련된 그 어떤 것도 해본적이 없었다.
우선 제일 중요했던 건 크로스플랫폼 지원여부였다.
사용자가 두 배면 수입도 두 배니까
그렇담 선택지는 RN과 Flutter 밖에 없었는데 Flutter 가 쉽고 요즘 핫하다니 모른체 할 수가 없었다.
구글 트렌드
깃헙 스타
flutter 138k > RN 102k
흠..🤔
주저없이 Flutter를 선택했다
🧑💻 개발자 등록
어디선가 개발자 등록을 먼저하면 동기부여가 생긴다는 말에 나도 Flutter를 공부해보기도 전에 애플 개발자 등록부터 했다.
애플 개발자 등록은 어느 정도 시간이 걸리기도 해서 이 방법은 좋다고 생각한다.
구글은 개발자 계정은 바로 되기 때문에 앱 출시 이틀 전쯤 했다.
🖊 플러터 공부
공부는 거의 flutter 공홈문서를 보고 했고, 기초만 학습한 후에 그때그때 모르는 것을 검색하면서 했다.
레이아웃은 사람들의 클론코딩이나 flutterflow에서 만들어놓은 코드를 보면서 많은 도움을 얻었다.
📝 기획
맨땅에 무작정 앱을 만들 수는 없는 노릇이므로 허접해보이는 앱이지만 나름대로 기획을 했다.
어떻게 해야하나 너무 막막했고 학교에서 배웠던 기획 및 설계 수업들이 스쳐지나가면서 기획의 중요성을 다시금 깨닫는 계기가 되었다..
아이디어는 예전부터 생각했던 것이고 우선 앱스토어를 보면서 비슷한 앱이 많나 확인했다.
금연을 위한 앱은 많았으나 흡연자를 위한 앱은 많지 않아서 나름 나쁘지 않다고 생각했다.
과연 올려도 되는 퀄리티인지 모르겠지만..
학교에서 배운대로 아이패드를 이용해 Low-Fi 프로토타입을 만들어보고
Balsamiq을 이용해 Mid-fi 프로토타입까지 만들었다.
물론 만들면서 많이 바뀌었다...
🎨 디자인
디자인은 가장 어려운 부분 중 하나였다.
누가 디자인을 해준다면 따라 만들면 그만이지만 창작의 고통이란 건 생각보다 컸다.
디자이너가 왜 필요한지 절실히 느꼈다.
모방은 창조의 어머니라고,,
토스, 카카오뱅크, 유튜브, 인스타그램 기타 각종 앱들에 들어가보면서 어떻게 짜야할 지 생각해본 것 같다.
💻 개발
프로젝트 파일 구조
마구잡이로 한 폴더에 모든 파일을 넣어서 만들 수는 없으니 프로젝트 파일 구조라는 걸 좀 찾아봤다.
Flutter - File Structure 이 사이트를 유심히 보았다.
MVVM 아키텍처
폴더는 대충 어떻게 정리할지 알겠고 MVVM을 써볼까 해서 Flutter 앱 개발을 위한 MVVM아키텍처를 많이 참고했다.
맞게 쓴 건지는 잘 모르겠다.
상태 관리
Flutter 의 상태관리는 유명한걸로 Bloc, getx, provider 세 가지가 있다.
처음에 Bloc을 적용하려 했는데 뭔 작업을 위한 작업을 하는 느낌이 들어서 이건 아니다 싶었다.
간단한 앱을 구현하기에는 너무 과했다.
그래서 flutter 공식 홈페이지에도 소개되어있는 provider 를 사용하기로 했다.
원리는 watch 하고 있다가 상태에 변화가 생기면 해당하는 위젯을 다시 빌드해주는 원리다.
로컬 DB
처음에는 SQL인 sqflite 를 이용하려 했으나 NoSQL인 Hive 를 사용하게 되었다.
Hive 를 선택한 이유는 두 가지가 있는데
1. SQL 보다 NoSQL이 더 익숙하기 때문에
2. 빠르다고 해서
애플워치 앱 개발
Swift 를 몰랐기 때문에 삽질을 꽤나 한 부분이다.
MethodChannel 을 이용하여 애플워치 앱을 개발할 수 있고 이 블로그를 많이 참고 했다.
네이티브에서 되는 건 flutter 에서도 거의 다 된다고 볼 수 있을 것 같다.
기타 라이브러리
달력이나 차트도 직접 만들어 보고 싶었으나 우선 빨리 앱을 출시하는게 목적이었기 때문에 기타 라이브러리를 사용했다.
😮 출시 준비
개발의 끝은 또 다른 시작일 뿐 이었다.
아이콘
디자이너의 필요성을 또 다시 느끼게 되는 순간이었다.
아이콘을 그리는 건 도저히 할 수 없을 것 같았고 그렇다고 메테리얼 아이콘을 사용하여 만들자니 영 마음에 내키지 않았다.
그래서 그냥 figma 를 이용하여 담타라는 글자를 그려서 만들고 app icon generator를 이용하여 사이즈별로 추출했다.
스크린샷
처음 출시할 때는 그냥 시뮬레이터를 찍어서 올렸으나 너무 없어보였다.
다른 앱들은 스크린샷은 예쁘던데...
찾아보니 여러 사이트가 있었는데 나는 AppMockUp에서 만들었다.
심사
애플의 심사가 안드로이드의 심사보다 맘에 들었다.
우선 안드로이드는 처음 앱을 올리면 엄청 오래 걸린다. 정확히 기억은 안나지만 7일정도 걸렸다.
애플의 심사는 '심사 준비 중 - 검토 중' 이런식으로 상태도 바로바로 알려주고 저녁에 심사를 신청하면 거의 새벽에 완료된다.
한 번 리젝당했는데 아무 역할을 하지 않는 버튼? 텍스트?가 있다고 리젝당했다..
기타 등등
개인정보처리방침 - 작성해서 블로그에 올려 링크를 기입했다.
연령 제한 - 구글플레이, 앱스토어 모두 자신이 먼저 설문을 통해 연령을 정하고 심사 받는다. 구글이 좀 더 관대한 것 같다.
🥳 출시
애플에서 먼저 심사가 통과되었는데 그 때 기분이 너무 좋았다.
(택도 없지만 돈이 벌릴 줄 알았나보다)
하지만 출시의 끝은 또 다른 시작일 뿐 이었다.
📺 마케팅
이번에는 마케터 그리고 자본의 필요성을 절실히 느꼈다.
과연 이 앱을 누가 찾아서 쓸까 싶었다.
그래서 구글애즈와 에브리타임에서 나름 마케팅?을 해보았다.
구글 애즈에서 십만원을 쓰면 십만원 크레딧을 준다길래 시험삼아 십만원을 광고비로 써보았다.
그런데 광고 최적화가 안좋은건지 대한민국 광고 단가가 비싼지 1전환당 2000원 정도 나왔다.
에브리타임 홍보게시판에도 올려보았는데 그래도 한 15분은 받아주신 것 같다. (감사합니다..)
🧐 느낀점
- 디자이너와 마케터는 굉장히 중요하다!
- 혼자 스스로 마감시간을 정해놓고 만들었는데 시간에 쫓겨 프로젝트를 완료한다는 느낌,, 어렴풋이 알 것 같다.
- 아무리 flutter 가 네이티브를 많이 따라왔다고 하더라도 네이티브를 알아야 훨씬 좋은 앱을 만들 수 있다.
- 다음 앱개발에는 패딩, 마진, 너비, 높이 모두 반응형으로 짜야겠다.
- 설계를 할 수 있는 능력, 전체를 볼 수 있는 능력이 중요한 것 같다. (경력분들은 잘하겠지...)
- 사수가 있었으면 좋겠다. 어떤게 맞는건지 도무지 알 수가 없다.
💸 그래서 수익은?
커피 한잔은 가능할 것 같다..
근데 무효트래픽 때문인지 애드몹이 정지됐다. 분명 광고 누른 적이 없는데,,
그래서 광고는 아예 내려버리고 요즘엔 실시간 사용자 보는 재미로 산다.
너무 감사하게도 매일 10분 정도는 다운받아주시는 것 같다.😊
플러터 초보의 긴 글 읽어주셔서 감사합니다!
앱스토어 링크 : https://apps.apple.com/kr/app/id1610315100
안드로이드 링크 : https://play.google.com/store/apps/details?id=com.damta