brunch

You can make anything
by writing

C.S.Lewis

by 지라르 Nov 08. 2023

감정일기 앱 제작기 - 3 - 개발 편

이모션 앱 제작기

늘 그렇지만 개발을 하면 동작이 잘 되더라도 이게 맞나? 

생각이 듭니다. 

그만큼 좌충우돌로 개발한다는 뜻이 아닐런지... 흑.

어떻게든 동작만 하면 되징

최대한 안전하게 작동하도록 개발했지만, 

실상은 짤처럼 새가 날개로 나는게 아니라 

목에 회전기능을 넣고 부러지지 않도록

단단하게 만드는 작업을 3개월 하지 않았나 싶습니다 ㅋㅋ 


목적이 수단을 이기는건가? 

무튼 동작하면 되징


작은 앱이지만, 

개발자의 역량 부족으로 많은 이슈가 있었습니다. 

그 중에서 좀 진짜 고민한 것들, 핵심적인 것들

어캐 공부했는지 골라 정리해 봅니다


flutter vs react native


Ios와 android를 한번에 개발하고 싶었습니다. 

자유도가 떨어져

한번 개발로 ios와 안드로이드 모두 출시 할 수 있으니까요. 

모두 출시하면 사용자가 두 배, 

그리고 겉으로는 더 실력있어 보이는 

그런 개발자가 되지 않을까라는 기대. 

하지만 실상은 그렇지 않다는거...


ios와 android를 한번에 개발하기 위해서는 

역시 구글의 flutter 와 페이스북(현 meta)의 react native 입니다. 


무엇이 더 나은 건지 알 수 없어 

고르는 일이 꽤 어려웠습니다. 

저 뿐만 아니라 앱개발을 시작하시는 분들은 

모두 고민하셨을 거예요. 


지금 와서 생각하는 건데 당장 시작할 수 있는 언어가 

가장 나에게 맞는 것이 아닐까 생각합니다. 


어차피 시행착오는 조건 없이 겪으니까요.


선택은 react native


react native를 선택했습니다. 

이유는 '일단 내가 쉽게 배울 수 있어야 해'가 가장 컸습니다. 


저는 웹 개발을 했기 때문에 flutter보다 

빨리 배울 수 있을거라 생각했습니다.


웹개발자임에도 react나 vue같은 프레임워크를 잘 못합니다. 

회사에서는 제이쿼리나 순수 자바스크립트만으로 

웹 프론트를 제작하는 경우가 대부분이 이어서.

근데 전자정부프레임워크는 아직도 제이쿼리를 쓰나?


플로터 제작기와 react native 제작기를 각각 검색했습니다.

앞으로는 어떨지 모르겠지만, 

react native에 대한 글이 더 많았습니다. 


취업사이트에서 필요한 기술 목록에도

 react native가 좀 더 많아 보였는데 이것 또한 중요하게 작용했어요. 

앞으로 어떤 언어가 밝은지는 알 수 없는 일이지만, 

지금 당장을 생각했을때는 RN이 좋았습니다.


무엇보다 UI를 만들때 react native는 css 친화적이여서 좋았습니다.


그렇지만  flutter 배워 볼까 기웃거리고 있습니다. 

원래 어떠한 선택을 하면 다른 선택지가 더 좋아 보이니까 

그런게 아닐까 합니다. 남의 떡이 더 커보이는 법.


Realm DB


기록된 데이터는 어딘가에 저장되어야 

앱을 열 때마다 정보를 가져와 볼 수 있습니다. 

그래서 저장될 데이터 베이스가 필요 했습니다.


데이터베이스로 firebase를 사용하려다가 포기했습니다. 

별도 서버에 데이터베이스를 구성하면 네트워크 환경에 의존해야했고,

또 유지비용이 추가로 듭니다. 


그러면 구독 모델, 비용이 매번 청구되어 

앱 비용에 부담을 줄 것 같았습니다 


realm db를 활용하기로 했습니다. 

설치도 간단했고, 작은 규모의 앱이라서 그런지는 모르겠지만 

데이터를 가져오는데도 불편하지 않았습니다. 

무엇보다 사용방법이 넘나 쉬웠습니다.


https://www.mongodb.com/docs/realm/sdk/react-native/


상태관리 라이브러리 - Recoil


redux와 같이 상태관리 라이브러리를 사용할까 생각했지만, 

학습비용이 들어갔기에 굳이 할 필요가 있나 생각했습니다.

감정을 기록하고 통계하는 앱일 뿐인데 굳이?


그런데 필요하더군요. 매번 화면이 바뀔때마다 

realm db를 이용하니 화면지연시간이 꽤 있었습니다.


화면지연시간은 중요했습니다. 

요즘같이 빠른 시대에는 약간의 지연도 앱사용 중지를 만드니까요.  


상태관리 라이브러리를 사용하면 조금 빨라지지 않을까? 

라는 생각으로 redux를 부랴부랴 검색했죠.


그런데 또 다른 라이브러리인 recoil을 발견하게 되었습니다. 

useState와 같은 방법으로 사용할 수 있다는 건 너무 매력적이더군요. 


학습이 더 빠를거라 판단해서  recoil을 사용했습니다.


react를 조금 안다면 10분만 공부해도 

바로 적용할 수 있는 간단하면서도 강력한 라이브러리!


스크린마다 realm db가 아닌 전역변수를 사용하니까

확실히 tab 전환 속도가 체감상 클 정도로 빨라졌습니다. 


사실 개발에서 가장 어려운 것은 환경설정


개발은 어렵지만 힘들지는 않았습니다.

어렵게 코드를 입력해도 결국 동작하는 모습을 볼때 짜릿하니까요.


어렵고 힘든작업은 역시 초기 개발환경을 설정하거나, 

mac 업데이트하며 생긴 개발환경의 차이를 해결할 때 입니다. 


초기 환경설정에서 막히면, 

시작도 안했는데 머리가 아픈 상황을 겪고 

개발을 포기하는 경우도 많습니다. 

하지만 하고 싶은게 있다면 해야지 않을까요.


소프트웨어 업그레이드를 할때마다 멘탈이 다운그레이드 됩니다. 

왜 자꾸 오류가... 


저는 소프트웨어 업그레이드가 두렵습니다. 

그런데도 개발하려면 해야된데요..(xcode tlqkf).

진짜 개발자는 끈기가 곧 실력...모두 화이팅입니다


개발 공부는 어떻게?


강의와 유튜브를 보면서 공부했습니다. 

nomad coder (https://nomadcoders.co/roadmap?see=react) 

강의로 기초를 다졌습니다


실 업무에서 어떻게 사용되는지 많은 사례를 배우기 위해 

패스트컴퍼스에서 강의를 구매해 보았습니다.


패스트캠퍼스(https://fastcampus.co.kr/ )는 

제가 필요할 것 같은 부분만 선택하여 본 상태입니다.


책을 본건 피그마를 공부할때 말고는 없었습니다. 

피그마도 예시를 더 접하기 위해 유데미에서 강의를 결제했습니다. 

피그마 강의는 하기로님 강의를 참고 했습니다 

(https://www.udemy.com/course/hagiro_figma/)


강의는 기간이 무제한인 것만 결제 했습니다. 

지금 당장 필요한 것을 볼 수 있도록 

그때그때 볼 수 있는게 제개는 중요했기 때문입니다


개발은 역시 구글링


개발자체가 협업이다


개발은 역시 구글링이죠. 

모든 코드의 40%는 구글링이 아니었을까 합니다.

나머지 60%는 Chat GPT ㅎㅎ. 


개발자에게 Chat GPT 검색은 많이 편리하더군요. 

최신 라이브러리에 대한 반영은 미흡하지만, 

적당히 필요한 기능을 만들어달라고 하면 만들어 줍니다. 

저는 그걸 보고 '이런 식으로 코드를 짜는 구나 ' 감을 잡았습니다. 

뭐.. 물론 그대로 가져온것도 많구요






작가의 이전글 감정일기 앱 제작기 - 2 - 디자인 편
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari