관리 메뉴

나만을 위한 블로그

[리뷰] 핵심만 골라 배우는 젯팩 컴포즈 본문

책/리뷰

[리뷰] 핵심만 골라 배우는 젯팩 컴포즈

참깨빵위에참깨빵 2023. 7. 1. 23:19
728x90
반응형

 

이 책을 사서 읽은 이유

 

XML과 코드를 통해 안드로이드 뷰를 짜고 있던 때, 컴포즈라는 게 덜컥 새로 나왔다고 한다.

눈대중으로 훑어보니 선언형이다 리컴포지션이다 뭔 소린지 모르겠는 말들이 많았고, 새로 나온 라이브러리라서 참고 자료도 딱히 없었던 데다가 일이 바빠서 나중에 공부하기로 미뤘다.

그러다 컴포즈가 슬슬 안정화됐다는 소식이 들려오고 조금씩 컴포즈 관련 포스팅들이 나타나기 시작해서 이제 때가 되었나 보다 싶어 공부하려고 샀다.

알라딘에 검색해보니 이 책 말고 다른 책이 있기는 했다. '젯팩 컴포즈로 개발하는 안드로이드 UI' 라는 책인데 목차를 비교했을 때 Compose 초보인 내겐 이 책이 더 친절해 보여서 이걸 샀다.

 

후기

 

컴포즈 개념 설명과 코드 설명은 자세하게 적혀 있다. 어떤 import문을 써야 하는지도 잘 적혀 있고 수정된 코드는 삭선 처리되서 예시 코드를 실습할 때 헷갈릴 일은 없었다. 그리고 안드로이드 화면을 만들다 보면 기본 제공 레이아웃(Constraint, Linear 등) 안에 여러 뷰들을 잘 조합해서 뽑힌 디자인과 일치하는 화면을 만드는 게 중요한데, 커스텀 레이아웃 모디파이어 부분에서 어떻게 만드는지를 잘 설명해주고 있다. 예를 들어 부모 Composable이 자식 Composable의 기본 x, y 좌표를 50, 70으로 계산했을 경우 Custom Layout Modifier는 0, 0 좌표를 기준으로 새 위치를 계산해서 어떤 오프셋을 반환하는지 까지의 과정을 모두 적어놨다. 난 그걸 보고 이해하기만 하면 된다. 요즘 챗지피티도 성능 괜찮으니 이해 안 되면 지피티한테 원문 때려박고 뭔 뜻인지 물어보면 그만이다.

이 책을 읽고 당연히 컴포즈를 마스터할 수 있다는 건 절대 아니다. 그러나 내가 앞으로 컴포즈를 딥하게 공부하고 구현하기 빡센 레이아웃을 만들 때 밑바탕 지식이 필요한데, 이 때 도움이 될 수 있는 책이라고 생각한다.

 

23.07.01 추가) 1회독을 끝냈다. 코틀린 문법 설명 부분과 책 중간의 Canvas 갖고 노는 부분, 후반부의 테마 설정과 apk 부분은 건너 뛰었는데도 읽고 실습해보는 데 2달 좀 안되게 걸렸다. 이제 Compose가 뭐고 어떤 느낌으로 써야 하는지 감은 조금 잡았으니 이제부터 짬짬이 토이 프로젝트를 만들고 구르면서 직접 깨닫는 것만 남았다.

 

100% 주관적인 장단점

 

개인적으로 생각하는 이 책의 장단점은 아래와 같다.

 

장점

 

1. 자세한 예제 코드와 설명 : import문이 기재된 것, 볼드체로 적힌 새로 추가된 코드와 삭선 표시된 삭제된 코드, 처음 봐서 이해가 잘 안 되는 코드가 어떻게 작동하는지에 대한 서술식 풀이 덕분에 책 내용을 이해하는 게 어렵지는 않다. 이 정도면 선녀다.

 

2. Coroutine Flow : 개인적인 이유지만 난 혼자서 토이 프로젝트를 만들 때는 LiveData를 일절 사용하지 않고 StateFlow와 SharedFlow를 사용해 만든다. 이런 내게 미지의 영역인 Compose와 조금은 익숙한 Flow를 섞어 쓰는 예시 코드를 보여준다? 안 볼 이유가 없었다. 그리고 SharedFlow를 쓰기 때문에 ViewModel은 필수적으로 사용된다. 실무에서 오래 구르진 못했지만 MVVM 패턴을 따라 개발하려는 내게 이런 예시 코드는 가뭄에 단비와 같았다. 책의 마지막 쯤에 SharedFlow를 사용하는 예제가 있는데 이걸 바탕으로 코드를 확장시켜 나가면 될 것 같다.

 

단점

 

1. 프로젝트 만들기? : 책을 읽다 보면 챕터별 예제 코드를 실습하기 위해 매번 New Project를 통해 프로젝트를 만들라고 한다. 예제 코드를 실습할 때마다 프로젝트를 하나 만들면 장기적으로는 예제 수준 프로젝트들로 쓸데없이 용량만 차지하게 되 버린다. 에뮬레이터의 설치된 앱 목록도 지저분해지기 마련이다.

컴포즈 특성 상 한 액티비티에서 사용한 함수명은 다른 액티비티에선 사용할 수 없어서 이름을 매번 바꿔야 한다는 귀찮은 점이 있지만 매번 프로젝트를 더 만드는 게 귀찮은 일인 것 같아서 Empty Compose Activity로 새 액티비티를 만들어 진행하고 있다. 또한 API 레벨도 26(오레오)으로 고정이기 때문에 매번 새 프로젝트를 만들 이유가 없다고 생각된다.

 

2. 오타? : 사실 오타는 어떤 책도 피해갈 수 없는 지뢰긴 하지만, 처음에는 오타가 별로 없었는데 갈수록 오타가 조금씩 눈에 띈다. 본문 뿐만 아니라 코드에서도 오타가 보이긴 하지만, 코드 오타는 크게 신경 쓸 것은 없다. 본문을 읽을 땐 조금 주의해서 읽으면 되는 정도다.

 

3. 라이브러리 버전 : 이것은 개발 서적을 살 때 무시할 수 없는 치명적인 단점이다. 책을 집필할 때 사용한 라이브러리 버전과 독자가 책을 사서 실습할 때 라이브러리 버전은 크든 작든 차이가 발생할 수 밖에 없다. 이 부분은 어쩔 수 없이 읽는 사람이 직접 현재 라이브러리 버전이 어떤 버전이고, 책에 쓰인 코드가 컴파일 에러를 발생시키거나 deprecated됐다면 어떻게 해야 할지 알아보는 방법 밖에는 없다.

반응형

' > 리뷰' 카테고리의 다른 글

[리뷰] 육각형 개발자  (0) 2023.10.15
[리뷰] 다산의 마지막 질문  (0) 2023.09.16
[리뷰] 필독! 개발자 온보딩 가이드  (0) 2023.07.09
[리뷰] 프로그래머의 뇌  (0) 2023.05.27
[리뷰] 이펙티브 코틀린  (0) 2023.05.21
Comments