Android의 Compose 공식 문서를 보면서 정리하고 공부하기 위한 시리즈이다. 공식 문서를 공부하고 내용을 정리한다.
Jetpack Compose는 네이티브 UI를 빌드하기 위한 Android의 최신 툴킷이다. 더 적은 수의 코드, 강력한 도구, 직관적인 Kotlin API로 Android에서의 UI 개발을 간소화하고 가속화하여 앱에 생동감을 더해준다. 결국, Android UI를 더 빠르고 쉽게 개발 및 빌드할 수 있다.
코드를 적게 작성하면 개발의 모든 단계에 영향을 미친다. 테스트, 디버깅, 버그 발생 가능성이 줄어들고 유지보수가 용이해진다.
Compose는 기존의 Android View 개발을 사용할 때에 비해 더 적은 코드로 많은 작업을 할 수 있다.
작성하는 코드를 Kotlin과 XML로 나누는게 아니라 Kotlin으로만 작성한다. 같은 언어로 개발하기 때문에 코드 추적이 훨씬 쉬워진다. (Monzo)
Compose로 코드를 작성하면 빌드 중인 대상을 쉽고 간단하게 유지관리할 수 있다. "Compose의 레이아웃 시스템은 개념적으로 더 단순하기 때문에 추론하기도 쉽다. 복잡한 구성요소의 코드도 쉽게 읽을 수 있다" (Square)
Compose는 선언적 API를 사용한다. 즉, Compose가 나머지를 처리하므로 UI를 설명하기만 하면 된다. API가 직관적이므로 찾아서 사용하기가 쉽다. "테마 레이어가 훨씬 더 직관적이고 읽기 쉽다. 멀티 레이어 테마 오버레이를 통해 속성을 정의하고 할당하는 여러 XML 파일로 확장해야 했을 일을 단일한 Kotlin 파일 내에서 달성할 수 있었다." (Twitter)
Compose를 사용하면 특정 Activity나 Fragment에 종속되지 않는 작은 Stateless한 구성요소를 빌드한다. 이를 통해 재사용하고 테스트하기가 쉬워진다. "사용 및 유지 관리가 쉽고 구현, 확장, 맞춤설정이 직관적인 stateless UI 구성요소의 구현이 가능하다." (Twitter)
Compose에서는 상태가 명시적이며 컴포저블로 전달된다. 이렇게 하면 상태에 관한 정보 출처가 하나이므로 캡슐화되고 분리된다. 그런 다음 앱 상태가 변경되면 UI가 자동으로 업데이트 된다. "추론하는 동안 기억해야 하는 사항이 줄어들고 통제를 벗어나거나 제대로 이해하지 못하는 행동도 적어진다." (Cuvva)
Compose는 기존의 코든 코드와 호환된다. Compose에서는 Views를, Views에서 Compose 코드를 호출할 수 있다. Navigation, ViewModel, Kotlin 코루틴과 같은 대부분의 일반적인 라이브러리는 Compose와 함께 작동하므로 언제 어디서든 원하는 대로 채택할 수 있다.
상호 운용성에서 Compose 통합이 시작되었으며 '사용하기 쉽다'는 사실을 알았다. Light Mode, Dark Mode 등을 신경 쓸 필요가 전혀 없었고 전반적인 사용환경이 매우 완벽했다. (Cuvva)
Android Studio의 Preview 덕분에 시간이 크게 절약되었다. 또한, 여러 Preview도 빌드할 수 있기 때문에 시간이 절약된다. 오류 상태나 여러가지 글꼴 크기처럼 상태와 설정이 다양한 UI 구성요소를 확인해야 하는 경우가 많은데, 이때 여러 미리보기를 만들 수 있으므로 확인하기가 쉽다. (Square)
Compose는 Android 플랫폼 API에 직접 Access하고 Material Design, Dark Mode Theme, Animation 등을 기본적으로 지원하여 멋집 앱을 만들 수 있다.
Compose는 선언적 UI보다 더 많은 문제를 해결하기도 하였으며 접근성 API, 레이아웃 등 모든 항목이 개선되었다. 만들고 싶은 것과 실제로 만드는 것 사이의 차이가 줄어든다. (Square)
Compose를 사용하면 애니메이션을 통해 쉽고 빠르게 앱에 움직임과 생명을 불어넣을 수 있다. 애니메이션을 Compose에 쉽게 추가할 수 있으니 색상, 크기, 고도 변경 등을 애니메이션으로 처리하지 않을 이유가 없다. (Monzo), 특별한 도구가 없이도 애니메이션을 만들 수 있다. 정적 화면을 표시하는 것과 다르지 않다. (Square)
Material Design으로 빌드하든 자체 디자인 시스템으로 빌드하든, Compose를 사용하면 원하는 디자인을 유연하게 구현할 수 있다. Material Design을 기반에서 분리하면 정말 유용하다. 자체 디자인 시스템을 구축하다 보면 Material Design과 디자인 요구사항이 다른 경우가 많기 때문이다. (Square)
이렇듯 Compose는 선언적 UI 를 통해서 굉장히 다양한 이점을 가지고 있다. 이제는 Compose 문서를 하나씩 보면서 공부해보자.