안녕하세요, it 쪽에서 기획자로 일하고 있는 40대 중반 문과 출신 비전공자입니다.
소소하지만 플러터로 1인 개발하여 플레이 스토어에 앱을 출시해 본 경험을 나눠보려고 합니다.
네, 다음 프로젝트 홍보에 앞서 첫 번째 글을 쓰는 거 맞습...
눈 떠보니 어느덧 마흔이 훌쩍 넘어있던 몇 년 전.
담당하던 프로젝트가 오늘 내일 하던 어느 날 문득, 이젠 이직도 쉽지 않은 나이가 되었다는 불안감이 엄습했습니다.
오랜 좌식 업무에 비루해진 몸뚱이와 십수 년을 일했음에도 치킨집 차릴 돈 한 푼 없는 현실에 현타가 아주 세게 왔었지요 :)
이후로 평소엔 게임만 하며 보냈던 출퇴근 지하철에서, 컴퓨터로 할 수 있는 뭐라도 배워보겠다며 이것저것 찾아보았고,
집에 돌아오면 영상을 보며 이해도 못하는 이런저런 언어들을 따라 해보면서 밤을 새우곤 했습니다.
그러던 중 노매드 코더님의 플러터에 대한 영상을 통해 당시 한참 뜨던 플러터를 처음 접하게 되었는데요,
플러터는 이해가 쉬워서 인지 처음임에도 수월하게 코딩할 수 있었고 결과물도 빠르게 나오는 것이 마음에 들었기에
그때부터 코딩셰프님, 코딩파파님의 강좌 영상들을 보며 공부하고 새벽까지 개발하다 쪽잠 자고 출근하기를 반복했습니다.
그렇게 몇 달간 공부만 하던 중에 문득 첫 번째 앱에 대한 아이디어가 떠올랐고, 채 4개월이 지나지 않아 첫 번째 앱을 출시하게 되었는데요, 뭐지 이 조급한 전개는? 아무튼
처음이 어려운 법이고, 경험이 최고의 스승이 맞더군요.
그 이후 첫 번째 앱을 출시한 경험, 기쁨과 흥분으로 밤을 지새운 결과로 다시 약 2.5개월 만에 2번째 앱까지 출시할 수 있었습니다.
* 두 앱 모두 flutter + firebase + sqflite
당연하게도 드라마틱한 성과는 없었습니다. 그래도 치킨 몇 마리 사먹었어요
저 때 파이썬을 선택했다면 최근 AI 앱 개발이 매우 수월했을 것이기에 아쉬움이 정말 진하게 남지만,
빠르게 앱을 개발할 수 있는 낮은 개발 난이도, 안드로이드 앱과 아이폰 앱을 동시 개발할 수 있는 효율성 모두에 만족하며,
플러터를 택한 것은 탁월한 선택이었다 생각해 봅니다.
다음으로 처음부터 지금까지 개발에 도움이 되었던 소소한 내용들을 공유하며,
긴 글 읽어주셔서 감사합니다!
* 이하 음슴체 및 얕은 지식 양해 바랍니다 :) *
플러터 접하기 전의 기술 스택(이라기엔 미약하지만):
-
vba(중급) 독학
-
php(초급), mysql(초급) 독학. 말이 초급이지 검색해서 따라하는 정도
플러터를 선택하게 된 이유:
- 아무래도 효율성. 아이폰 앱과 안드로이드 앱 동시 개발 + 웹, 윈도우 그리고 맥까지
- 이것저것 따라 해본 다른 언어들은 도대체 뭐라는 건지 모르겠던데, 플러터의 dart 코드는 처음 접했음에도 이해하기 쉬웠음 (궁합처럼 개개인마다 다를 수 있음)
- 생각해보면 ui와 기능을 컨트롤하는 개념이 php와 비슷하고 객체 지향인 것과 특히 람다식이 vba와 같은 형태이며, 플러터 배우기 직전에 몇 달 정도 c++로 유니티 개발을 따라 해 본 것이 크게 도움이 된 것 같음
- 최근에 ai 앱을 개발하면서 크게 느끼는 점으로 ai 개발에는 확실히 파이썬이 매우 유리한 듯 (사실 ai 아니어도 그러한 듯. 이곳저곳에서 파이썬 코드 예시는 거의 기본인데, 플러터 코드 예시는 알아서 찾아야 됨 ㅜㅠ)
- 만약 어짜피 언어를 처음 배워야 하는 상황이라거나 ai 개발을 원한다면 파이썬을 할 것 같음 :)
- 물론 상기의 내용들처럼 플러터는 크로스 플랫폼이 장점이라서 둘 다 하는 것이 좋을 것 같음
영감을 준, 공부에 도움을 준 영상:
- 노마드 코더 (플러터를 공부해야겠다는 확신을 받음)
- 코딩쉐프 (초반에 강좌들을 따라하며 빠르게 적응 했음)
- 코딩파파 (초반에 유튜브에서 검색하면 이분 것을 많이 봤음)
- 달망이 개발일기 (첫 번째와 두 번째 앱 구현의 메인 기능이었음)
막히는 거 검색 시 참고:
- 구글링 (스택오버플로우, 미디엄 등을 많이 참고함)
- 스택오버플로우의 점수 높은 답변부터 일단 적용해 보고, 해결 안 되면 점차 점수 낮은 답변들도 해봐야 함 (정말 마지막까지 설마 이건 아니겠지 했던 답변으로 문제가 해결되는 경우도 종종 있음)
- 최근에는 gpt에게 물어봄. 물론 실행 안되는 거짓 코드가 꽤 많지만 나름 영감?을 받는 경우가 많음
- 구글링 결과에서 챗봇이 작성했거나 입장하면 리다이렉션 되는 이상한 사이트들이 많음. 사이트 클릭 후 뭔가 뱅글뱅글 돌거나 주소 전환 된다 싶으면 빠르게 나갈 수 있게 준비 필요
코드 검색하다 보면 자주 참고하게 되던 사이트:
- 꿈꾸는 시스템 디자이너
- 아기개발자의 성장일기
- 안드보라
- 플러터 공식 사이트 기능 가이드 (다른 거 하다 하다 안되면 답답해서 보게 되는데 여기에 답이 있음)
UI 스타일 참조:
안드로이드/아이폰 동시 개발하며 힘든 점과 약간의 팁 :
- 맥북(m1)에서 앱을 최초 구동하기 위한 초기 설정이 가장 어렵고 힘들었던 듯
- 초기 구동에 성공한 이후의 개발에서는 특별히 더 어렵거나 한 점은 없었음
- 패키지가 안드로이드와 아이폰에서 다르게 작동하는 경우가 있음. 가이드를 잘 읽어봐야 함
- 안드로이드 개발하며 패키지 설치 시, 아이폰 설정도 함께 해두면 나중에 덜 고생함
- git 활용 중간 중간 안드로이드와 아이폰 양쪽에서 구동하며 개발하면 나중에 덜 고생함
개발 사양 참고:
- PC: AMD Ryzen 5 1600, 8GB
- 매우 노후한 환경이지만 가벼운 앱을 개발해서 그런지 별 문제 없음
- 단, 시뮬레이션 구동 시 메모리 부족이 간혹 발생하여 최근엔 16gb로 업글함
- 노트북: 맥북 에어 2020 m1 256, 16GB
- 최초 구동 시에 상당히, 매우 오래 걸림. 최초 이후로는 빠르게 구동됨
- 그 외로는 아무런 문제 없음
플러터 초반부에 mysql은 어떻게 쓰는지 검색하다가 다음의 게시물을 보게 되었는데, 스트리밍이나 bloc의 개념을 어렴풋이 이해하게 해줘서 이게 진짜 지금까지도 상당한 도움이 되었습니다.
https://dalgonakit.tistory.com/116
대단하시네요.
일단 첫바퀴가 구르면 그다음은 점점 더 잘 구르게 될 겁니다.
이맛클이지만,
sqlite하고 mysql은 태생이 다릅니다.
sqlite는 보잉의 엔지니어가 임베디드용으로 만든게 발전한거고,
mysql은 서버용으로 나온거라
network과 스탠드얼론의 차이가 있습니다.
물론 sqlite도 중간에 network 레이어를 별도로 구성하면 네트워크상에서 사용이 가능합니다.
(제가 그렇게 만들어본 적이 있습니다.)
이제는 다른 좋은 무료 db들이 많아서 굳이 그렇게 할 필요는 없더군요.
저도 공유해주신 정보로 개발을 다시 해봐야겠어용
홍보성이 아니라고 하셨지만 출시하신 앱이 어떤앱인지 설명해주실 수 있을까요? 궁금합니다. ^^
앱링크는 쪽지로 알려주실 수 있으면 감사할 것 같습니다.
https://play.google.com/store/apps/details?id=com.moveontothenext.memony
첫 번째 앱은 간단한 메모 앱으로 직업이 기획이다 보니 메모할 일이 많아서 제가 쓰려고 만들었습니다.
빠르고 직관적이며 카테고라이징이 쉬운 앱이란 기획 의도로, 메모 연속 기입, 개체 단위 메모 컨트롤, 카테고리 - 항목 - 세부의 3단 분류가 가능한 빠르고 직관적(이라 본인은 주장하는 :) 메모 방식을 구현해 봤습니다.
https://play.google.com/store/apps/details?id=com.moveontothenext.diary
두 번째 앱도 간단한 일기장입니다. 폴라로이드 사진을 한 장씩 넘겨보는 모바일 사진첩의 기획 의도로, 일단 사진을 첨부하여 일기를 작성하면 마치 폴라로이드 사진처럼 예쁘게 보여주고, 사진첩을 넘기듯 사진을 좌우로 넘겨볼 수 있고, 웹페이지를 읽듯이 하단의 일기를 드래그하여 읽을 수 있도록 만들어 보았습니다.
답변 감사합니다. 말씀 주신 앱 한번 써보고 싶은데 아이폰 생태계에 있는 사람이라 좀 아쉽네요.
앱들 보니 정말 대단하신 것 같습니다. 앞으로 만드실 앱들이 기대되네요^^
대단하십니다..!
제가 보기에 취미로 앱개발은 개발자보다 역시 기획하시는 분이 더 잘 하시는것 같습니다.
왜냐면 개발만 하다 보면 스킬은 있을지언정..뭘 만들어야 할지 난감하거든요 ㅎㅎ
애초에 스킬이 없으니 '아! 이런거 만들어 보자' 라고 시작하기도 했고, 스킬이 없는 만큼 선택지도 없어서 의도치 않게 선택과 집중이 되어 있더라구요. ㅋㅋ
아무래도 개발자분들은 스킬이 있는 만큼 오히려 더욱 더 많은 선택의 함정이 있지 않을까 싶습니다 :)
저도 최근에 기획자로 취업한 뉴비인데 다양한 언어를 배워서 나만의 앱을 출시하고 싶지만
막상 주말이 되면 자거나 약속잡아 놀기만 하고 있네요 ㅠㅠ
시작이 참 어려운것 같아요 ㅎㅎ..
플러터로 개발할 때 꼭 윈도우 PC와 MAC 둘다 필요한건가요?
아무래도 '어떤 요리를 할까?'의 단계에서는 무얼 먹고 싶은지, 무슨 요리를 할 수 있는지, 그게 맛있을지까지 폭넓은 고민이 필요하니 더딜 수밖에 없겠으나, 요리를 결정하고 '김치찌개는 어떻게 끓이지?'의 단계로 넘어가면 레시피를 알아보고 그에 맞는 재료와 도구를 준비하면 되기에 좀 더 수월해지실 겁니다.
플러터는 안드로이드 앱은 윈도우에서, IOS 앱은 맥에서 개발(은 어디서든 하면 되고, 정확하게는 빌드)할 수 있어요. 저는 겸사겸사 애플도 출시하려고 준비한 경우입니다.
hive 는 격리된 환경, 예를 들면 위젯 기능이나 알림창에 데이터 띄울때 데이터 동기화가 안되는 문제때문에 엄청 고생했던 기억이 있네요 ㅎㅎ