5월 초 : 아키텍처 결정 및 개발 환경 세팅

우리 프로젝트는 안드로이드 스튜디오로 진행하는 것으로 생각했었는데

이왕 프로젝트를 진행하는 안드로이드, iOS 모두 지원 가능한 앱을 만들까? 라는 얘기가 잠깐 나왔었다.

네이티브 앱? 리액트? 웹 앱? 등 여러 키워드가 회의 시간에 제시되었지만

결론적으로는 원래 계획대로 안드로이드 스튜디오에서만 구현하기로 했다.

우리 팀은 서버 숙련자가 없기도 하고

앱 자체 기능을 구현하는데도 꽤 오랜 시간이 걸릴 것 같아서

서버단의 작업은 최소화하는게 좋을 것이라고 판단했다.

 

서버 구축에 대해 구글링을 많이 해봤는데

firebase를 이용해서 서버리스 아키텍처를 적용한 안드로이드 스튜디오 프로젝트 사례가 많이 있었고

firebase 이용 관련 문서가 잘 나와있는 것 같아 인터넷을 참고해서 충분히 구현할 수 있을 것이란 생각이 들어서

google에서 지원하는 firebase를 이용하는 것으로 결정했다.

또한 우리가 기획한 기능들 중 챗봇을 이용한 상담 기능이 있어서

챗봇 같은 경우 google의 dialogflow를 이용하기로 했다.

결론적으로 우리 팀의 아키텍처는

1. 안드로이드 스튜디오내에서 UI, 로직을 처리하고

2. dialogflow API를 가져와서 챗봇을 구현하고

3. firebase 서버와 연동하여 서버 운영, 실시간 데이터베이스를 사용하는 것이다.

 

 

코드 형상 관리는 GitHub를 이용해서 진행하는데 안드로이드 스튜디오와 GitHub 연동은 생각보다 수월했다.

 

Firebase 연동도 무난하게 하는 듯 했으나...

실시간 데이터베이스를 이용하기 위해 앱 수준의 gradle 파일에 google service 4.3.6버전 dependency를 추가했는데

빌드를 시도할 때마다 자꾸 오류가 나는 것이었다.

구글링해도 해당 오류에 대한 자료가 너무 없길래 몇 시간동안 절망했는데

알고보니 4.3.6버전 자체 버그가 있던 것이다,,, 아래는 해당 이슈

https://github.com/google/play-services-plugins/issues/176

Could not find setVariantDir after 4.3.6 · Issue #176 · google/play-services-plugins

Describe the bug A problem occurred configuring project ':mobile'. > Failed to notify project evaluation listener. > com.android.build.gradle.internal.crash.ExternalApiUsageException:...

github.com

4.3.6 버전에서 삭제된 메소드를 여전히 호출하는 메소드가 있었던 것..

해당 이슈가 발생한지 얼마 안된 시점이었는데

다행히도(?) 며칠 만에 버그 픽스가 된 4.3.8 버전이 나왔고 Firebase DB와 연동을 마쳤다.

 

5월 중순 : 개발 시작 (레이아웃 구성)

Figma 툴을 이용해서 작성한 앱 화면 프로토타입을 바탕으로

팀원들이 각자 맡은 역할대로 안드로이드 스튜디오 안에서 레이아웃을 구현했다.

현재는 디자인 고려 안하고 화면 해상도에 맞게 레이아웃, 버튼 배치만 한 상태이다. (위의 이미지는 메인 화면)

디자인보단 기능 구현이 우선이라고 생각해서 색 조합이나 이미지뷰는 나중에 고려할 듯 하다.

나는 앱의 주요 기능들 중 일기장 부분 레이아웃을 맡아 일기 내용/작성/수정 페이지 레이아웃을 구현했다.

5월 말 : 일기장 기능 구현 중

우리 팀이 구현할 기능들 중 가장 먼저 일기장 기능을 다뤄보기로 했다.

Firebase DB 사용법을 찾아보며 간단히 일기를 등록하고, 삭제하는 것까지 구현했다.

 

그런데 문제점이 있었으니..

1. MaterialCalendarView

커스텀 캘린더뷰를 구현하기 위해 MaterialCalendar을 활용하려고 하는데

생각보다 MaterialCalendarView와 관련된 자료들이 많이 없으며

특정 부분에서 NullPointerException 에러가 발생하는데 해당 오류의 원인을 찾지 못했다.

2. ViewModel

우리는 MVVM(Model-View-ViewModel) 패턴을 이용하여 개발을 진행하고자 한다.

그런데 안드로이드 스튜디오의 ViewModel과 관련된 자료들을 찾아보았을 때

Kotlin 언어를 이용한 자료들이 대부분.. Java를 사용하여 설명을 작성한 경우가 거의 없었다ㅠㅠ

또한 공식 문서를 읽어보아도 이것을 어떻게 활용해야할지 감이 안와서 난감한 상태다.

 

5월 말에 한번 멘토님과 온라인 미팅을 진행했었다.

본격적인 개발을 하기 앞서 개발 환경 세팅, 아키텍처 결정 등에 많은 시간을 들여서

우리 팀의 개발 속도가 너무 더딘건 아닐지 걱정스러운 마음이 있었는데

멘토님께서는 잘 진행하고 있는 것 같다며 힘이 되는 말씀을 해주셨다.

한이음 프로젝트와 관련된 다양한 조언들을 해주셔서

끝까지 책임감을 가지고 프로젝트를 진행해보겠다는 의지를 다시 한번 다잡을 수 있었다.

+ Recent posts