안드로이드 JetpackCompose 배워야할까?

probehub·2022년 3월 23일
0

Android with Kotlin

목록 보기
66/69

처음 앱 개발을 접한건 Flutter 를 통해서였다. 그래서 안드로이드의 xml 을 이용해서 UI 를 만드는 방식은 굉장히 불편했고 배워야할 점도 많았다. 이제는 안드로이드 앱을 만들다보니 xml 을 이용한 방법이 더 편한것도 같은데, 오늘 'Should You Still Learn XML in 2022?' 영상을 보았다.

영상의 내용을 요약하자면 "아직까지 인터넷에 있는 대부분의 레퍼런스는 xml 로 쓰여있기 때문에 xml 을 이용해서 ui 를 만드는 법을 모르면 안되지만, 그 방법을 충분히 아는 개발자라면 compose 를 배우는게 좋다." 이다.

새로운 기술을 배우는걸 좋아하기 때문에 바로 튜토리얼부터 시작해볼까 싶었지만, 새로운 프로젝트를 준비하는 지금에서는 시간을 전략적으로 사용하고 싶어졌다. 그래서 JetpackCompose 정말 배울 가치가 있는 것인지 알아보고자 한다.

이런 궁금증은 역시 구글이 가장 잘 해결해줄 것 같다. 공식 문서를 들어가보자.

강력한 도구? 생동감을 더해준다? 감이 잘 안잡히는 설명이다.

wooooooak님의 블로그 자료를 봤을 때 비로소 compose 적용에 따른 이점이 명확해졌다.

view 와 data를 중계하는 레이어가 사라진다.

  • 덕분에 ui 를 변경하고 싶을때 xml 파일과 코드 파일을 모두 수정해야할 필요가 없어지게 된다.
  • Fragment 개념이 더이상 필요하지 않게 된다.

이 두개만 변하더라도 안드로이드 프로그래밍이 더욱 즐거워질것 같다. Activity 와 Fragment는 라이프사이클이 달라서 둘을 함께 사용할 경우 예상치 못한 오류가 발생하는 경우가 자주 있었고, view 의 재사용성 때문에 fragment 라는 개념이 따로 존재해야하는 것이 굉장히 기형적이라고 생각했었는데, 그에 대한 해답이 compose 였다.

상속의 함정을 벗어나다.

안드로이드 모든 UI 클래스는 View 클래스를 상속하게끔 되어있. 이 View 클래스 하나만 해도 코드량이 어마어마하게 많아서 수정이 쉽지 않으며, 상속체계에 새로운 UI 클래스가 더해짐에 따라 모호함이 생겨난다.

하나의 예시로 Button 은 TextView 를 상속한다. 그리고 ImageButton 은 ImageView 를 상속한다. 상속은 IS-A 관계가 정해져야 하므로 ImageButton 은 TextView 를 상속하는게 더 자연스럽지 않을까? 애초에 UI 요소들이 IS-A 관계를 명확히 갖기가 가능한 일일까?

compose 는 그 이름 그대로 합성이라는 개념을 이용한다. 애초에 compose 를 이용하게 되면 클래스가 아니라 함수를 사용하기 때문에 상속은 불가능해진다.

그래서 배울까?

하지만 당장 급하게 배워야할정도인가? 새로 시작하는 프로젝트에는 배워서 적용하는게 좋겠다고 생각했다. 하지만 기존에 진행중인 프로젝트가 있고, xml 로 구성되어 있다면 급할것 없이 천천히 공부하면서 적용해도 기능적인 문제는 없을 것 같다.

profile
개발자

0개의 댓글