(240523) Medium Daily Digest

Godomin·2024년 5월 22일

Medium-Daily-Digest

목록 보기
1/24

Migrating UI-oriented Android library to Compose Multiplatform (Android/iOS)

https://proandroiddev.com/migrating-ui-oriented-android-library-to-compose-multiplatform-android-ios-862129f498a9

구글이 KMP를 공식 지원하겠다고 밝힌 이상, 과연 안드로이드에서 코틀린이 빠르게 도입된 것처럼 KMP도 다른 멀티 플랫폼을 제치고 나아갈 수 있을지 궁금하다.

기존 앱에 KMP 적용을 위해서는 RxJava, XML 레이아웃, retrofit 등을 coroutine/flow, compose, Ktor 등 지원되는 기술 스택으로 마이그레이션 해야 한다. 요즘은 거의 coroutine, compose를 사용하기도 하고 clean architecture 구조인 앱이라면 라이브러리 변경은 그렇게 어렵지 않을 것이다.
위 글에 따르면 전체 코드의 9%가 iosMain, 13%가 androidMain에 있다고 한다. 이것도 많은 편이라고 하는데 생각보다 플랫폼 종속 코드가 적어서 놀랐다.

UseCase Red Flags and Best Practices in Clean Architecture

https://engineering.teknasyon.com/usecase-red-flags-and-best-practices-in-clean-architecture-76e2f6d921eb

Use case의 실효성에 대한 의견이 분분한 것 같다. Clean architecture 구조에서 domain layer에 속하는 책임 하나로 자리매김 하고 있지만, 그저 repository call을 wrapping 하기만 하는 use case는 복잡성만 더한다.
위 글에서 말한 use case가 지키면 좋을 점 몇 가지를 꼽으면,

  • 한 use case는 하나의 작업만 해야 한다.
  • Data/presentation layer와 분리가 되어야 한다.
  • 이름은 verb in present tense + noun/what(optional) + UseCase
  • invoke 연산자를 사용 하는 것이 좋다.
  • 파라미터가 다르다면 오버로딩을 사용하면 된다.

아래 영상에서도 비슷한 얘기를 하니 참고하면 좋다.
https://youtu.be/8kGIlALKO-s?si=izdVc8Adkz-Ym5Ui

My honest opinion about Gemini in Android Studio

https://devpicon.medium.com/gemini-in-android-studio-absolutely-better-than-the-former-studio-bot-f1f6a32f0718

Android Studio Jellyfish 버전부터 Gemini가 탑재되었다. 아직 멀었다는 얘기도, 생각보다 쓸 만하다는 의견도 있다.
다른 ai에 비해 편리한 점은 gemini가 프로젝트 코드를 알 수 있다는 점이다. 나도 내가 작성한 파일에 대해 테스트 코드를 만들어 달라 했더니 (그대로 쓸 정돈 아니지만..) 어느 정도 뼈대는 참고할 수 있을 정도였다.
이미 구글링에 익숙한 세대라 gemini에게 물어보는 게 더 불편할지도 모르지만, 지금부터 조금씩 익숙해지면 ai의 발전과 더불어 큰 생산성 향상을 불러올 수 있을 지도 모른다.

Animating LazyList items in Jetpack Compose

https://medium.com/@gregkorossy/animating-lazylist-items-in-jetpack-compose-6b40f94aaa1a

기존에는 LazyList에서 아이템 재정렬에 대한 애니메이션만 지원했다.

Modifier.animateItemPlacement()

1.7.0-alpha06 (24년 4월 3일 출시)에서 드디어 아이템 추가/삭제에 대한 애니메이션도 지원하게 되었다.

Modifier.animateItem()

아직은 fade in/out 애니메이션만 지원하지만 향후 더 많은 애니메이션이 추가 지원 될 것이라 생각된다.

Exploring LaunchedEffect in Jetpack Compose: 10 Questions Answered

https://medium.com/@husayn.fakher/exploring-launchedeffect-in-jetpack-compose-10-questions-answered-4b68a727ecd2

LaunchedEffect는 lifecycle-aware하게 side effect를 처리하기 위해 쓰인다. 여기서 side effect(부수 효과)란 composable 한 함수 범위 밖에서 발생하는 앱 상태에 관한 변경사항이다. (링크 참조)

관련 함수들은 마치 kotlin scoped function처럼 맨날 봐도 헷갈린다. 조만간 꼭 정리해야겠다.

0개의 댓글