전체 글 227

SOPT 34th 안드로이드파트 미미나 - DataBinding의 두 얼굴

안녕하세요. SOPT 34기 안드로이드 파트 OB 박동민입니다. Android에서 말이 참 많은 기술이죠. DataBinding에 대해서 알아보는 시간을 가져볼겁니다.DataBinding이 뭔지, 어떻게 쓰는지, 정말 안좋은 기술인지를 알아보고 ViewBinding과 DataBinding 중 선택해서 사용하신다면 더 좋은 코드를 작성할 수 있을 것 같습니다 :)  목차DataBinding이란?어떻게 쓸까?심화 사용방법왜 DataBinding이 욕을 먹을까?이렇게 안좋은데 왜 가르쳐 줬어요?그래서 작성자는 쓰시나요?  DataBinding이란?Databinding 라이브러리는 Android Architecture Components(AAC)의 기능으로, 프로그래매틱 방식이 아닌 선언적형식을 사용해서 UI..

대외활동/SOPT 2024.05.11

Android Version Catalog를 야무지게 써보자

이제 안드로이드 프로젝트를 생성하게 된다면 아래처럼 Version Catalog로 설정이 된다.[versions]agp = "8.3.0"kotlin = "1.9.0"...[libraries]androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }junit = { group = "junit", name = "junit", version.ref = "junit" }...[plugins]androidApplication = { id = "com.android.application", version.ref = "agp" }...[bundles]orbit = ["orbit-core", "orbit-viewm..

Android 2024.05.08

Jetpack Compose : Strong Skipping Mode

주의 사항 : Strong Skipping Mode는 현재 실험적이고 아직 프로덕션 용도로 사용될 준비가되지 않았습니다. Compose 1.7에서 활성화 하는 것을 목표로 하고있습니다 Strong Skipping ModeCompose Compiler 1.5.4 version에 추가된 실험적인 모드입니다.Strong Skipping Mode를 적용시킨다면 아래와 같은 두가지 방법으로 동작을 변경시킵니다.- 불안정한 매개변수가 있는 컴포저블을 안정화(skippable)하게 변경합니다.- 불안정한 Lambda는 remember를 적용시킵니다.skippable : 컴파일러가 컴포저블을 건너뛸 수 있음. 리컴포지션이 되지 않음  Composable skippability기본적으로 Compose 컴파일러는 Comp..

Preference Datastore

언제 쓸까?로그인 세부 정보 저장, 다크모드 설정, 글꼴 크기 등 작고 간단한 데이터 세트에 적합대용량 or 복잡한 데이터 → Room을 쓰자.  Jetpack DataStore 라이브러리 → 데이터 저장을 위한 간단하고 안전한 비동기Preference DataStore : key-value로 저장Proto DataStore : 프로토콜 버퍼를 사용하여 스키마 정의 → Strong Type 데이터 유지 가능Proto DataStore는 type safety, 효율적이지만 구성과 설정이 필요함Preference DataStore는 쉽게 설정 가능  필수 추가 종속성implementation("androidx.datastore:datastore-preferences:1.0.0")implementation("..

Android 2024.04.25

구글 권장 앱 아키텍처

Clean : UI → Domain ← Data Google : UI → Domain(optional) → Data UI Layer UI 레이어 : 화면에 애플리케이션 데이터를 표시 사용자 상호작용 또는 외부 입력으로 인해 데이터가 변할 때마다 변경사항을 반영하도록 UI가 업데이트 돼야함. UI Element + UI State = UI State를 활용해서 UI를 나타내줘야함 우수 사례 data class NewsUiState( val isSignedIn: Boolean = false, val isPremium: Boolean = false, val newsItems: List = listOf(), val userMessages: List = listOf() ) data class NewsItemUiS..

Android 2024.04.19

SOPT 34th 안드로이드파트 미미나 - Well Made Component

안녕하세요. SOPT 34기 안드로이드 파트 OB 박동민입니다. 이번 안드로이드 파트에서는 Android의 최신 기술인 Compose를 도입하였습니다. 그렇다보니 XML에 익숙한 많은 분들이 헷갈려하시고, 방향을 잡지 못하시는 것 같아 조금이나마 도움을 드리고자 미미나를 하게 되었습니다. 오늘 공유하고자 하는 내용은 Component를 "잘" 만드는 방법입니다. 목차 Compose UI의 구조 Composable을 재사용해보자 State Hoisting이란 뭐고 왜 적용해야 할까? Slot API이란 뭐고 왜 적용해야 할까? Compose UI의 구조 Compose 공식문서에서 위와 같이 Compose의 Layout은 Node로 구성되어있다고 설명되어있다. 즉, Compose는 Tree구조를 가지고 있다..

대외활동/SOPT 2024.04.08

Android Jetpack Comopse의 CompositionLocal을 이해하고 써보자

왜 나온걸까?Composable 함수는 Tree구조를 가지고 있다.이때, 상태(state)는 일반적으로 최상단 노드에 저장이 되어있어야 한다(상태 호이스팅)상위 트리에서 만든 상태를 하위 트리에서 매개변수로 받는 것이 아닌, 바로 접근할 수 있게 해준다.  왜 최상단에 저장되어있어야 할까?컴포넌트들은 상태를 모르는게 좋다. 최상단에서 전달해준 정보를 바탕으로 화면을 나타내는 것이 더 좋은 방법이라고 생각한다. 왜냐하면 상태를 컴포넌트 별로 다 가지고 있다면 이후 추적하는 것도 힘들고, 각각의 상태를 하나씩 참조하며 변경해줘야 하기 때문에 관리하기 더 어려워 진다. 그렇다면 상태가 최상단에 있고, 트리 개념으로 아래로 내려가는 UI 구조를 가진다고 했는데 “매번 변수로 state를 내려줘야..

마인드 캐어 : 개발자 오늘도 마음 튼튼하게 성장하기

개발자라는 직업을 선택하고, 꿈을 이루기 위해서 노력하다보니 자연스럽게 힘이 들고 지쳐가고있다. 개발자라는 직업은 끊임없이 공부를 해야한다. IT 신기술은 계속해서 쏟아져 나오고, 트렌드는 빠른 속도로 변화한다. 새로운 기술도 공부하고, 기존기술도 갈고 닦으며, 프로젝트를 진행하는 것은 정말이지 힘든 일이다. 이렇게 빠듯한 일정을 진행하다보니 요즘들어 몸도 마음도 지쳐가는게 느껴진다. 몸이 상한게 느껴져 식단도 하고 간단한 운동을 시작했다. 하지만 정신이 지친 것에 대한 해결책은 모르겠다. 그래서 이 책을 읽어봤다. 개발자인 저자가 자신의 경험을 토대로 이야기를 풀어낸다. 필자가 생각하는 멘탈관리 및 개발자로서 집중하는 방법에 대한 내용이 주가 된다. 필자가 책 전체에서 강조하는 주제는 “소셜미디어에 대..

도서 2024.02.21

DO SOPT 33rd APPJAM 회고

올해 9월에 들어갔던 SOPT활동이 거의 끝나간다. 이번주 주말 종무식을 한다면 모든 활동이 끝이다. 당장 저번주까지만 해도 우리팀과 같이 합숙하며 개발하고있었는데 감회가 새롭다. 지난번 참여했던 솝커톤에 대한 회고를 적지 못한것이 아쉬워 이번에 진행한 앱잼에 대한 회고를 작성하려고 한다. 🤷‍♂️ 뭘보고 서비스를 선택했어? 어쩌다보니 TL이 나와 같이 운팀을 하는 사람이었지만, 내 선택기준에는 단 1%도 영향을 주지 않았었다. 내가 생각한 기준은 아래와 같다. 1. TL이 YB일 것 2. 빠르고 명확한 스프린트 계획을 가지고 있을 것 3. 사용자 경험을 개션시켜 줄 수 있는 프로젝트일 것 4. 지속적인 발전 가능성이 있을 것 TL이 YB인 것은 나에게 꽤나 중요했다. 난 이번 프로젝트에 최선을 다할 것..

대외활동/SOPT 2024.01.25

패키지 이름이 중복일때 해결하는 방법 :(

android 개발을 할때 가장 마주치고 싶지 않은 상황중 하나인 패키지명을 수정하는 상황을 만났을 때 해결방법을 소개하고자 한다. 패키지명을 바꾸는 경우는 아래와 같다고 생각한다. 1. 패키지에 example이 있는 경우 - play스토어에 올리기 위해서는 com.example.~~~으로 시작하면 안된다. 어떻게 알았냐구요? 알고싶지 않았어요.... 2. 패키지명이 중복된 경우 - play스토어에 이미 같은 패키지가 올라가있는 경우 게시가 불가능하다. 이것도 직접 겪은 감동실화다... 예전에 작업할 때는 수정하는 방법을 몰라서 파일 전체를 날리고 다시 만드는 일을 한 적이 있다. 그때 공부해둔 방법을 이번에 프로젝트를 진행하며 적용하게 되었다. 수정할 당시 너무 긴장해서 스크린샷은 못찍었습니다 ㅎㅎ....

Android 2024.01.15