ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [바닐라코딩 6기] React Native 채팅 어플 / 1차 프로젝트 후기 - Vanilla Coding Bootcamp 6
    Review, Chat 2019. 10. 27. 13:05

     

     

     

    드디어 1차 프로젝트가 끝났다...!

    진짜 정신적으로나 체력적으로나 힘들었고

    다 끝내고 보니 부족한 점도 참 많지만 그래도 뿌듯하다.

     

    오늘은 내가 2주 동안 어떤 프로젝트를 만들었고 

    어떤 점에서 잘했고 어떤 점이 부족했는지를 글로 정리해보려고 한다.

     

     

     


     

     

     

     

    React Native로 만들어본 커플 채팅 어플

     

    내가 첫 프로젝트로 만든 어플은 커플 채팅앱이다.

    회원가입을 하고 서로의 아이디를 입력하면 단 둘만의 대화방이 만들어지고 채팅을 할 수 있는 어플이다.

    상태메시지를 입력하고 사진을 변경하여 나의 프로필 사진을 꾸밀 수 있고

    채팅 대화를 하면 상대방에게 push 알람이 전달된다.

     

    핵심 기능은 대화 분석 기능인데, Google Natural Language API를 활용하여

    두 사람이 나눈 대화 내용의 감정을 분석하여 보고서 형식으로 보여준다.

    보고서는 이미지로 저장하기 버튼을 누르면 사용자의 핸드폰 갤러리에 저장된다.

     

     

     


     

     

    프로젝트를 완료하기까지 걸린 시간

     

    우선 기획 포함 2주 반 정도의 시간이 주어졌는데 그 중에서 처음 5일은

    전반적인 프로젝트 아이디어 전개/기획/목업/Task 정리를 하는데 시간을 썼다.

     

     

     

     

     

    기획은 위와 같이 나에게 필요한 페이지들과

    그 페이지들에 어떤 기능들이 있어야하는지 정리하는 형식으로 하였다.

     

     

     

     

    아이패드 노트앱으로 필요한 페이지들의 간단한 목업도 만들었다.

    이렇게 목업을 미리 만들어두니 본 프로젝트를 시작했을 때

    어디에 뭘 어떻게 배치하지? 이런 고민 없이 바로 바로 만들 수 있어서 편리했다.

     

     

     

     

    프로젝트는 일정관리는 Trello를 활용했다.

    그 날 그 날 내가 해야 할 분량 계획을 미리 세워두고

    최대한 계획보다 빨리 하려고 노력했다.

     

     

     

    DB 스키마는 이렇게 미리 설계해놓고 프로젝트를 시작했다.

     

     

     

    나름 상세하게 기획한다고 했지만 막상 프로젝트를 들어가니 부족한 부분들도 있고

    실제로 만들면서 생각이 변하는 부분들이 있었다.

    그래도 전반적으로 미리 만들어둔 기획대로 프로젝트가 흘러갔다.

     

    계획을 짤 때 가장 내가 잘했다고 생각하는 점은

    계획을 너무 타이트하게 짜지 않고 여유 있게 짰다는 점이다.

    그리고 너무 욕심내지 않고 꼭 해야하는 핵심 기능들로만 계획을 세웠던 것도 잘한 점이라고 생각한다.

     

    왜냐하면 계획을 여유있게 짠 덕분에 시간에 쫒겨 패닉에 빠지는 일 없이 진행했고

    초반에 최대한 진도를 빨리 빼서 시간을 벌어놓고 후반부 채팅 구현하는 부분에서 시간을 많이 쓸 수 있었다.

     

     

     


     

    아쉬운 점

     

    처음으로 리액트 네이티브를 이용하여 앱 만드는 것에 도전을 해보았는데,

    React Native는 정말 껍데기만 React이고 여러모로 React와는 많은 부분에서 달랐다.

     

    처음에 앱의 구조 자체가 리액트 웹과는 많이 달라서 파악하기 어려웠는데

    진도 빼는 것에 급급하다보니 구조를 깔끔하게 잡고 시작하지 못했다.

    그러다보니 나중에 구조적으로 잘못된 부분들을 많이 발견했다.

     

    무엇보다 시간에 쫒겨서 리덕스를 사용하지 못했는데

    리덕스라는 것이 왜 중요한지에 대해서 뼈저리게 깨닫는 시간이었다.

    상태관리가 추적되지 않아 버그 잡는 데 고생을 많이 했고 중간 중간 어려움이 많았다.

    다음 번에 또 리액트 네이티브로 작업한다면 초반에 시간을 많이 쓰더라도

    구조를 깔끔하게 관리하고 리덕스를 이용하여 상태관리를 해야겠다고 다짐했다.

     

    그리고 또 아쉬운 점은 대화 분석하는 파트가 핵심 내용인데

    그 부분의 로직이 매우 미흡한 부분이 많다.

     

    모든 커플들의 대화량과 우리 커플의 대화량을 비교하는 부분을 통계내기 위해

    모든 커플들의 대화량을 디비에서 가져와서 계산하는데 데이터 양이 많아지면 

    엄청나게 많은 시간이 소요되게 된다.

    시간이 부족해서 이 부분을 개선하지 못하였다.

     

    내 생각엔 채팅을 보낼때마다 채팅 대화 텍스트의 길이를 계산하고 

    대화량 항목을 스키마에 추가하고 그 항목에 텍스트 길이를 그 때 그 때 누적해놓은 후 

    최종 분석할 때는 그 숫자들만 가져와서 통계를 낸다던지 해야할 것 같다.

     

     

     


     

     

    좋았던 점

     

    일단 첫 프로젝트로 리액트 네이티브 앱 만드는 도전을 해 본 것은 매우 만족한다.

    대충 어떤 식으로 앱이 작동하는지 이해하는데 매우 큰 도움이 되었다.

    앞으로 간단한 앱은 내가 만들어서 쓸 수도 있겠다는 자신감도 장착되었다.

     

    기획부터 디자인, 디비, 서버, 프론트까지 모든 영역을 다뤄볼 수 있었던 것도 참 좋았다.

    퍼블리셔로 일했을 때는 서버에 대해서 하나도 몰랐기 때문에

    대체 어떤 원리로 사이트가 만들어지고 동작하는지 잘 이해하지 못하고

    그냥 단순히 눈에 보여지는 모양 만드는 것에만 중점을 뒀었다.

     

    그런데 백앤드까지 공부하고 나니까 데이터가 어떤 식으로 처리되는지

    회원가입, 로그인은 어떤 식으로 이루어지는지, 디비 스키마를 잘 못 짜면 나중에 왜 고생하는지

    Ajax 요청을 보내면 응답으로 오는 내용들이 어떤 식으로 서버에서 처리되어서 오는 것인지 등등...

    예전에는 전혀 몰랐던 많은 부분들을 이해할 수 있어서 재미있었다.

     

     

    2주 동안 주말도 없이 밤낮으로 불태웠고, 힘들었지만 배운 점이 많았던 시간들이었다.

    이제 마지막 프로젝트 하나만을 남겨두고 있다.

    당장 담주 월욜부터 시작이닷ㅋㅋ

     

    마지막 프로젝트도 후회하지 않게 최선을 다하고 싶다.

     

    반응형

    COMMENT