안드로이드 연구소

안드로이드 개발자가 JetPack Compose를 배워야하는 이유 본문

안드로이드 연구소/Jetpack Compose

안드로이드 개발자가 JetPack Compose를 배워야하는 이유

안드로이드 연구원 2023. 8. 3. 02:41

벌써 제가 퇴사한지 3개월 차가 끝나고

4라운드가 시작되는 8월입니다.

 

사실 저는 퇴사 전 1개월마다 정해둔 목표를 정해두었습니다.

1라운드는 안드로이드의 AAC와 DI 그리고 TestCode를 중점으로 공부를 하는 것이었습니다.

2라운드는 안드로이드의 Clean Architecture를 공부하는 것이었습니다.

3라운드는 계획했던 것과 다르게 코딩테스트를 공부하게 되었는데요.

 

이번 4라운드에서는 마침내 안드로이드 Jetpack Compose를 배워보려고합니다.

Compose를 중점으로 배우고 이전에 배운 AAC, 코루틴, 테스트코드등을 써보고

마지막에는 클린아키텍처+Compose를 해보는 것으로 마무리할 예정입니다.

 

 

1. ChatGPT, Jetpack Compose에 대해 설명해줘

Jetpack Compose를 모르는 분들을 위해 간단하게 설명하자면
기존에 xml로 UI레이아웃과 UI컴포넌트를 그리는게 아니라
코틀린으로 UI레이아웃과 UI컴포넌트를 선언적으로 만들 수 있는 기능입니다.

 

 

2. xml과 비교한 예제를 보여줘.  

// activity_main.xml

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello, XML Layout!"
        android:textSize="24sp"
        android:layout_centerInParent="true" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click Me"
        android:layout_below="@id/textView"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

 

// MainActivity.kt

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MyApp()
        }
    }
}

@Composable
fun MyApp() {
    MaterialTheme {
        Column(
            modifier = Modifier.fillMaxSize(),
            verticalArrangement = Arrangement.Center,
            horizontalAlignment = Alignment.CenterHorizontally
        ) {
            Text(text = "Hello, Compose!", fontSize = MaterialTheme.typography.h5.fontSize)
            Button(onClick = { /* Do something */ }) {
                Text(text = "Click Me")
            }
        }
    }
}

@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
    MyApp()
}

간단히 살펴보면 xml이 아닌 엑티비티에서

@Composable어노테이션을 선언 후

Text나 Button과 같은 컴포넌트를 선언하였습니다.

 

 

3. 그렇다면 Jetpack Compose는 왜 배워야할까요?

(이 질문의 대답은 chatGPT가 얘기한 내용이 아닌 저의 주관적인 견해입니다.)

 

첫번째 이유: 빠르게 UI 화면을 그릴 수 있다. 

저는 프로젝트 완성까지 얼마나 xml로 화면을 그리는데 얼마나 시간을 투자하는지 확인해본적이 있었는데

전체 시간의 최소 30프로에서 최대 50프로까지 쓰는 것을 알았습니다.

코딩이 힘든게 아니라 단순 작업들이 너무 많기 때문이었습니다.

저는 이 시간들을 최소한으로 줄여보고 싶었습니다.

 

두번째 이유: Jetpack은 앞으로 필수가 될 것이다.

아직까지는 Jetpack보다는 xml로 화면을 그리는 프로젝트가 압도적으로 많다고 생각합니다.

하지만 앞으로는 Compose의 비율이 점점 많아질 것으로 저는 예상합니다.

그 이유는 간단히 말하면 구글에서 밀어주고 있기 때문입니다.

구글에서는 좋은 성능, only 코틀린, 간결함 등의 이유로 추천하고 있습니다.

 

세번째 이유: 구글의 거대한 음모

여기서부터는 저의 망상과 같은 이야기입니다.

안드로이드를 선언형 UI로 제작할 수 있게 함으로써

Flutter와 병합하게될 거대한 음모(?)를 꿈꾸지 않을까하는 저의 조심스런 예측합니다.

그렇게되면 모바일 개발 시장에서는 IOS의 파이까지 독식할 수 있기 때문에

Compose는 구글의 야망을 위한 빌드업이 되지 않을까라 생각합니다.

 

 

4. 그렇다면 어떻게 공부할 것인가?

어떻게 Jetpack에 대해 배우면서 

클린 아키텍처와 AAC들과 접목하는 방법들을 배울 수 있을까?

를 오랫동안 생각해왔습니다.

 

그러다가 한달 전 패스트 캠퍼스에서 아래 강의를 알게 되었습니다.(광고 아님. 나한테 광고 안 줌)

35개프로젝트로배우는Android앱개발feat.Jetpack Compose초격차패키지Online.

 

35개 프로젝트로 배우는 Android 앱 개발 feat. Jetpack Compose 초격차 패키지 Online. | 패스트캠퍼스

35개 프로젝트로 학습하는 '안드로이드 앱 개발의 모든것'. 입문자부터 실무자까지 아우르는 101시간의 풍부한 커리큘럼을 통해 무한한 성장 뿐 아니라 원하는 기업으로의 이직에 성공하세요.

fastcampus.co.kr

 

해당 강의는 안드로이드 기초부터 중급 과정까지 갖추어야할 기술들을

토이 프로젝트를 만들면서 배우는 강의인데요.

많은 블로그를 찾아보신 분들은 아시겠지만 강의 후기가 별로 좋지 못합니다.

 

그대로 따라서 코딩했는데 에러가 나거나 작동이 되지 않는다.

설명이 불충분하다. 노잼이다. 이런 말들이 있는데

저에게는 이 강의를 듣는 것 만큼 효율적인 방법을 찾지 못했습니다.

 

 

5. 왜 이 강의를 선택하였나?

간단히 얘기하면 이 강의말고 Jetpack Compose를 알려주는 강의가 없었습니다.

그리고 이 강의는 Compose를 최적화하는 방법들도 알려주고 있었습니다.

마지막으로 클린 아키텍처까지 함께 사용해서 만든 프로젝트들도 있어서

저에게는 더할게 없이 좋은 선택이라고 생각하였습니다.

 

하지만 저는 35개의 프로젝트를 다할 생각은 없고

기초 부분안 Part1 전부, Part2 전부 그리고 Part3의 절반은 제외하고 들을 예정입니다.

 

들을 강의들과 배울 내용들을 간략하게 정리하면 아래와 같습니다.

Part3. 안드로이드 심화(4개의 프로젝트)
(MVVM, Coroutine과 Flow, Room과 Paging3, 의존성주입, 테스트코드, 클린아키텍처)

Part4. JetPack Compose 컴포넌트 & 아키텍처(3개 프로젝트)

Part4+. JetPack Compose 최적화(3개 프로젝트)

Part5. JetPack Compose + 클린아키텍처 (1개 프로젝트)

 

아래는 저의 8월 공부 계획표입니다.(첫째주 여름휴가^^. 매주 토요일 휴무)

매일 약 10개의 강의를 듣는 것을 목표로 한다면 약 3주정도로 걸릴 것으로 예상됩니다.

그러면 총 11개의 토이 프로젝트가 생길 것 같습니다.

하지만 저는 토이 프로젝트를 만드는 것에는 큰 관심은 없습니다.

프로젝트마다 가르쳐주는 핵심 기술을 배운 것을 중점으로 둘 예정입니다. 

 

그리고 대망의 마지막 주에는 

위에서 배운 Component와 Clean Arcitecture를 베이스를 한 저만의 프로젝트를 기획할 예정입니다.

 


35개 프로젝트로 배우는 Android 앱 개발 feat. Jetpack Compose

강의에 대한 후기가 궁금하시거나 비싸서 듣지 못한 분들이라면 

저의 블로그를 주목해주시면 좋을 것 같습니다.

 

과연 이 강의를 추천하게 될 지, 비추천을 하게 될지 저도 너무 궁금하네요.

그렇다면 저처럼 여름 휴가 잘 쉬시고 새로운 마음으로 시작할 수 있길 바랍니다.

Comments