코틀린 전환의 선행작업
코틀린 전환을 시작하면서, 코틀린 전환에 효과적인 선행작업은 무엇이 있을까? 라는 생각을 해보았습니다.
단순히 자바를 코틀린으로 바꾼다면 그저 문법 변환에 그치고, 결과적으론 기존 래거시와 동일한 프로젝트 구조에 문법만 코틀린인채로 남을 것 같다는 생각이 들었습니다.
그렇기 때문에, 코틀린 전환을 하기에 앞서, 아키텍처를 선정하여 잡아놓고 시작한다면, 구조적으로 유리할뿐만 아니라, 유지보수와 테스트에도 용이하며, 코틀린 언어의 특성을 최대한 활용할 수 있고,
결과적으로는, 앱의 구조가 튼튼해져서 훨씬 더 성공적인 코틀린 전환이 될 수 있을것 같다고 생각하였습니다.
그럼 아키텍처 정의에 앞서, 코틀린 전환과 아키텍처 선정에 큰 도움이 될 수 있는 AndroidX 라이브러리를 먼저 살펴본 후, 이와 더불어 효과적인 아키텍처를 선정해보도록 하겠습니다.
AndroidX 마이그레이션 (필수)
Google I/O 2017에서, 그동안의 기존 Android Support Library (android.support.* 또는 android.arch.*) 를 크게 개선하고 완전히 대체 가능한, AndroidX(androidx.*) 라는 새로운 라이브러리를 발표하였습니다.
Android 개발자 페이지에서도, "새로운 프로젝트에서는 AndroidX 라이브러리를 사용하는 것이 좋습니다. 기존 프로젝트를 AndroidX로 이전하는 것을 고려해 보세요." 라고 명시가 되어 있습니다.
아무래도 Android Jetpack 으로 통합해서 제공하려고 하기 때문에, 기존 support 라이브러리등을 통합 관리하기 위한것 같습니다.
Android Jetpack은 개발자가 고품질 앱을 손쉽게 개발할 수 있도록 도와주는 라이브러리, 도구, 가이드의 모음이며,
생산성을 향상하는 Kotlin 언어 기능을 활용하면서 함께 작동하도록 빌드된 라이브러리 컬렉션입니다.
AAC (Anroid Architecture Components) - Android Jetpack의 일부
Google I/O 2017 에서 새로운 라이브러리들을 포함한 AAC를 발표하였습니다.
Google은 안드로이드 앱을 개발하면서 자주 만날 수 있는 문제들을 쉽게 해결할 수 있도록 개발자들에게 가이드를 해주기 위해 AAC를 만들었다고 합니다.
안드로이드는 4대 컴포넌트가 있고, 생명주기가 서로 다르게 얽혀있다는 것을 다들 알고계실 겁니다.
앱을 잘 만들기 위해서는, 이러한 컴포넌트들을 부드럽게 연결해야 하는데, 생명주기를 학습하고 엉키지 않도록 고민하는 것에 대해 도움을 주고자 AAC가 탄생하였습니다.
AAC는 아래와 같은, 총 5가지의 라이브러리로 구성되어 있습니다.
- Lifecycles : 생명주기 핸들링
- LiveData : 생명주기를 인식하여, 데이터 동기화를 보장
- ViewModel : 생명주기를 인식하는 방식으로, UI 관련 데이터를 관리
- Room : 로컬DB(SQLite) ORM
- Paging : 리스트 컨텐츠 로딩 성능 개선
안드로이드 개발자 페이지에서는 AAC를 소개하며, 자신들이 권장하는 앱 아키텍처 가이드와 함께 사용하여, 고품질의 강력한 앱을 만들어보라고 권유 합니다.
여기서 눈여겨 봐야할 부분은, 앱 아키텍처 가이드의 권장 앱 아키텍처 라는 항목을 보면, AAC의 사용과 함께 MVVM 패턴으로 앱을 구성하는 방법을 가이드하고있습니다.
아키텍처 정의
그렇습니다. "아키텍처" 라는 주제는, 완벽한 답안이 없는 주제이기 때문에, 어떤것이 좋다 나쁘다로 선을 그을 순없지만, 한가지 확실한 것은, 안드로이드 개발에 있어 가장 신뢰할 수 있는 구글의 래퍼런스의 가이드에서 AAC를 소개하며 MVVM 아키텍처를 권장하고 있다는 것에서, 아키텍처의 흐름이 MVVM으로 기울었다는 걸 분명하게 느낄수가 있을 것 같습니다.
그래서 결과적으론, 코틀린 전환의 선행작업으로 MVVM 아키텍처를 도입하는 것이 성공적인 코틀린 전환에 큰 도움이 될 수 있을것 같습니다.
2020/02/05 - [안드로이드 기술 공유] - 안드로이드 MVVM 클린 아키텍처 (Android Apps Using MVVM Clean Architecture)
마치며
결국, 더 좋은 코딩을 하는 방법은, 다양한 경험을 해보는 것이 가장 중요하다고 생각합니다.
시작부터 완벽하게 잘하기는 쉽지 않으니, 우선은 자신이 아는 방법대로 먼저 짜보고, 그 후에 리팩토링을 거쳐 더 좋은 코드로 완성도를 높이는 과정이 가장 쉽고, 가장 좋은 방법이 되지않을까 생각합니다.
'안드로이드 기술 공유' 카테고리의 다른 글
Android DataBinding vs Kotlin Extensions 의 XML 레이아웃 접근, 어떤 방식이 더 좋을까? (0) | 2020.02.23 |
---|---|
기존 레이아웃을 데이터바인딩 레이아웃으로, 한방에 자동 변환하기! (0) | 2020.02.12 |
AndroidX 로 마이그레이션 하기 (0) | 2020.02.06 |
안드로이드 MVVM 아키텍처 (Android Apps Using MVVM Architecture) (2) | 2020.02.05 |
Firebase Crashlytics를 Slack과 연동하여, 실시간 버그 리포트 알림받기 (0) | 2020.01.02 |