저는 현재 안드로이드 엔지니어를 꿈꾸고 있습니다. 저의 주된 개발 경험은 Android, Kotlin를 이용한 안드로이드 개발경험을 해본 경험이 있습니다.또한, Java, Python를 이용하여 웹개발도 경험해 보았습니다.
📧 Email address: [email protected]
🐦 Github: https://github.com/Kim-Min-Jong
🖇️ LinkedIn:
SW전문인재양성 팀프로젝트, SeongNam Gyeonggi, Korea – (2023.01 - 2023.02)
SW전문인재양성 팀 멤버로 Android 어플리케이션을 담당하는 팀의 안드로이드 엔지니어를 맡았습니다.
기획 단에서 웹, 앱을 같이 만들자는 이야기가 나와서 처음에는 React Navtive를 사용하여 웹앱을 구현하고자 했습니다. React와 React Native를 공부하면서, 웹파트를 맡은 프론트엔드 엔지니어 분과 대화를 했는데, 둘 다 React와 React Native에 대한 지식이 없는지라 시간 관계 상 구현을 못하겠다는 판단을 하여 웹은 Vanila JS, 앱은 Android로 분리하여 진행하기로 했습니다.
먼저, 기획 후에 요구사항, 유즈케이스와 시퀀스 다이어그램을 통해 기능을 정의한 후, 정의한 기능 별로 페이지 디자인을 진행했습니다. 디자인은 Figma 툴을 사용했습니다.
앱 아키텍쳐로는 mvvm 아키텍쳐를 적용하였습니다. 선정한 이유는 프로젝트 규모가 커질수록 참조관계가 많아져서 코드를 고치면 참조되어 있는 다른 곳에서 연쇄적으로 오류가 날 수도 있습니다. mvvm 아키텍쳐는 하나의 소프트웨어를 model, view, view model로 최대한 기능적으로 작은 단위로 나누고 관찰(observing)하는 형식으로 데이터를 관리하여 결합도가 하락하고, 코드 수정이 용이하며, 관리하기 좋은 구조이기 때문에 mvvm 아키텍쳐를 선정하여 프로젝트를 진행하였습니다.
추가적으로, repository 패턴을 적용하여 viewModel이 데이터 출처(로컬 DB인지 API응답인지 등)와 관계없이 동일 인터페이스로 데이터에 접근할 수 있도록 하였다 또한, mvvm아키텍쳐를 더 효과적으로 사용하기 위해 hilt 의존성 주입 라이브러리를 채택하여 구현해보고자 했습니다.
아키텍쳐 설계 이후, 로그인/회원가입, 반려동물 등록, 루틴, AI 진단, AI 프로필 등의 세부 기능들은 Android Native 및 Jetpack을 사용하여 어플리케이션을 개발하였습니다.
단기간안에 많은 기능들을 구현해야했어서 많은 어려움과 시행착오가 있었지만, 그럴때마다 기본에 충실하게 하자는 생각을 하여, 안드로이드의 정수라 할 수 있는 공식문서를 많이 활용하였습니다. 공식문서를 통해 특정 기능에서는 특정 라이브러리, 메소드 등 어떤 것을 잘 취사 선택하여 사용하는 방법을 익힐 수 있었습니다 또, 많은 기능을 구현하다보니 모든 기능을 직접 구현할 수는 없었는데 이때, 오픈소스를 많이 활용하여 개발 시간을 단축할 수 있는 경험도 할 수 있었습니다. 백엔드와 기능 연결 테스트를 진행하면서, 수시로 회의를 진행했었는데, 회의를 진행할 때마다 진척도가 계속 오르는 것을 느낄 수 있었는데 이 점으로 의사소통의 중요성을 다시 한 번 깨달을 수 있었습니다.
Link : https://github.com/Kim-Min-Jong/Furry_Friends, https://www.figma.com/file/LroiT4GwhsbVxlWpp1h1wK/sw-project?t=pEoh3244GPM3uY6f-0, 개발일지- ‣