본문 바로가기

Develop/KMP6

[DroidKaigi] CMP로 iOS 첫 빌드 도전기 (컨트리뷰션) 오늘은 필자의 두 번째 컨트리뷰션 도전기에 대해 작성해보려고 한다. DroidKaigi의 앱 기여가 시작되고 있다는 소식을 접하고, 관심이 생겨서 이슈들을 눈여겨 보고 있었다.기존에 있던 이슈들은 다른 분들이 이미 손을 드셔서, 남은 것 중에 보다가 CMP 환경에서 ContributorsScreen으로 네비게이션하는 이슈를 발견하게 되어 지원하게 되었다! 비교적 간단한 이슈였지만, CMP 구조를 파악하고 iOS를 빌드해보는 의미 있는 경험이었기에 기록해본다. 💡해당 이슈는 아래에서 확인이 가능합니다. 【ComposeMultiplatform】Implement the transition to the ContributorsScreen by leeeyubin · Pull Request #497 · DroidK.. 2025. 9. 1.
[Kalendar] KMP에 Typograpy 적용하기 유어슈 동아리에서 캘린더 라이브러리를 KMP로 만드는 프로젝트를 진행 중이다. KMP의 K와 Calendar를 합쳐서 Kalendar의 이름이 탄생하게 되었다. 이 프로젝트를 진행하게된 목표는 Compose Multiplatform(iOS, Desktop 포함) 환경에서 플랫폼별 의존성 관리 능력을 향상시키고, 배포 과정을 경험해서 실제 오픈소스 프로젝트를 완성하기 위함이다!총 두 달 동안 진행될 예정이며, 각 기능을 스프린트 별로 나누어 진행하고 있다.캘린더 디자인의 경우 유어슈 디자인 팀에 문의하여 디자인을 받았다. Material을 참고문서로 보냈기 때문에 Material과 디자인이 유사하다. 이번에 내가 담당한 부분은 디자인시스템을 구현하는 것이다.KMP 환경에서의 Typograpy 적용 과정을 .. 2025. 8. 18.
[DroidKnights] Retrofit -> Ktor 마이그레이션 (컨트리뷰션) 오늘은 필자의 "첫 컨트리뷰션 도전기"에 대해 적어보고자 한다. 항상 오픈소스에 기여를 하고 싶다는 생각이 있어서 여러 오픈소스의 이슈들을 주의깊게 보고 있었다. 그러다 마침 '국내 최대 규모 안드로이드 컨퍼런스 드로이드나이츠 앱'에서 KMP로 마이그레이션하면서 여러 이슈들이 올라온 것을 보았다. 이미 UI를 다루는 이슈들은 대부분 다른 분들이 하겠다고 하셔서 남아 있는 이슈들 중에 골랐다. Koin으로 마이그레이션 하는 이슈와, Ktor로 마이그레이션 하는 이슈가 중에 고민이 되었다. Koin은 저번에 마이그레이션을 한 경험이 있었기 때문에 이미 알고 있는 이슈보다는 새로운 기술에 도전해보면서 내 스스로도 성장을 하고 싶어 Ktor 마이그레이션 이슈를 고르게 되었다! 💡해당 이슈는 아래에서 확인이 가.. 2025. 5. 28.
[KMP] Kotest로 알아본 Stub vs Fake (테스트 더블) 📚 책의 가장 마지막 장인 12장에서는 "코루틴 단위 테스트"에 대해 다룬다.이때 테스트 더블에 대해 설명해주면서 그 종류 중 하나인 Stub을 들어주었다. 그러나 책을 읽던 당시의 나는 테스트 코드를 처음 접했기에 Stub을 왜 사용하는지 이해가 되지 않았다. 그러다, KMP 프로젝트에서 kotest를 이용해 테스트 코드를 작성할 기회가 있었는데 기존에 사용한 Mockk 라이브러리는 멀티플랫폼에서 사용이 불가하기에 Stub으로 구현해야만 했었다. 이 과정 덕분에 Stub이 무엇인지 이해가 되었고 그 과정을 설명해보려 한다. 테스트 더블우선 테스트 더블에 대해 먼저 알아보자.테스트 더블이란, 다른 객체와 의존성을 가진 객체를 테스트하기 위해 사용하는 것으로 "객체에 대한 대체물"을 의미한다.위 그림처.. 2025. 3. 22.
[KMP] Kotest로 테스트 코드 멀티플랫폼에 적용하기 Kotest멀티플랫폼인 KMP에서 테스트코드를 작성하기 위해서는 Kotlin에서 제공하는 테스트 프레임워크인 Kotest를 사용해야 한다. Kotest에는 종류가 여러 가지가 있는데 나는 BehaviorSpec을 선택했다.그 이유는 BehaviorSpec은 아래처럼 given - when - then 형식으로 표현이 가능하여 더 체계적으로 작성할 수 있겠다고 생각했기 때문이다.class UiStateTest : BehaviorSpec({ given("테스트 조건 환경이 주어졌을 때") { ... `when`("테스트 대상 행위가 발생하면") { ... then("의도한 결과가 검증될 것이다.") { ... .. 2025. 3. 9.
[KMP] Hilt → Koin 마이그레이션 최근 드로이드나이츠 앱을 KMP로 마이그레이션 하는 프로젝트를 진행 중이다. 이때 KMP에서는 안드로이드 전용 라이브러리를 그대로 사용할 수 없기 때문에, 기존 Android 코드로로 작성된 부분을 KMP에서도 호환 가능한 라이브러리로 교체해야 한다. 이번 글에서는 그 과정 중 하나로, 의존성 주입 라이브러리를 Hilt에서 Koin으로 마이그레이션 한 과정을 공유해보려고 한다. Koin우선 Koin 이란, 모든 Kotlin 애플리케이션(ex. 멀티플랫폼, Android, 백엔드)에 종속성 주입을 쉽고 효율적으로 통합하는 방법을 제공하는 DI 라이브러리이다. 그 외의 특징들로는 아래와 같다.읽기 쉽고, 사용하기 쉬우며, 어떤 종류의 애플리케이션이든 작성할 수 있는 Kotlin DSL이다.Android 생태.. 2025. 2. 14.