안드로이드 프로젝트
2022년 6월 ~ 2022년 11월
https://github.com/SWM-TRAVELY/LearningTrip
아이와 여행을 떠나는 부모가 여행 계획을 세우고 가이드북과 관광지 정보를 제공받을 수 있는 앱

설명
- 아이와 함께 교육적인 여행 떠날 때 아이에게 지식을 잘 전달하고 싶은 부모들의 고민 해결
- 부모는 아이의 지적 수준 향상시키고 수행 평가 과제를 위해 교육적인 여행의 필요성 커짐
- 여행 계획에 따른 맞춤 가이드북 제공하여 아이들에게 관광지 정보를 소개하고 계획 확인 가능
주요 기능
관광지 정보 탐색, 키워드로 관광지 검색, 가이드북(여행 계획) 생성, 코스 추천
담당
Android
사용 기술
Kotlin, Jetpack (compose, lifecycle, navigation, room), Coil, Retrofit2
- 어플리케이션 상태 변경에 따라 UI를 재생성하는 Jetpack Compose 사용
- 적은 코드로 UI를 구성하고 코틀린으로 빠르게 개발할 수 있다고 판단하여 도입
- 어플리케이션 상태가 바뀔 때마다 UI 업데이트가 필요한데 뷰를 사용할 경우 뷰마다 상태가 다르고 각각 업데이트해야 해 과정이 복잡하고 빼먹는 등 에러가 발생한 경험이 있었음
- 오프라인 환경에서도 관광지 정보를 확인할 수 있도록 Room을 이용하여 로컬 데이터베이스를 구성하여 관광지 정보를 표시하고 검색하는 기능을 구현
- SQLite에 비해 쉽고 편리하게 사용할 수 있어 Room을 선택, Room은 컴파일 시간에 SQL 쿼리가 유효한지 확인해 주며 상용구 코드 없이 레코드를 객체로 변환시켜주는 장점이 있음
- 보완하면 좋은 점으로 초기 데이터 입력을 위해 assets의 csv파일이 15MB 정도의 용량을 차지함
- compose를 지원하는 이미지 라이브러리 Coil을 사용하여 비동기적으로 이미지 요청을 보내고 표시하도록 구현함
- navigation 라이브러리를 통해 원하는 screen을 바로 표시할 수 있도록 구현
- navigation을 이용하지 않으면 별도의 상태 변수와 이전 스크린 stack을 저장해야 하는 불편함이 있음