알파 버전으로 전환되는 Kotlin Multiplatform Mobile

Jessie Cho

Kotlin Multiplatform Mobile(KMM)은 iOS 및 Android 애플리케이션 모두에서 동일한 비즈니스 로직 코드를 사용할 수 있도록 도와주는 SDK입니다. 이제 KMM이 알파 버전으로 전환되어 비즈니스 로직을 모바일 앱에서 바로 공유할 수 있습니다. 이 버전에는 새로운 Android Studio용 KMM 플러그인이 포함되어 동일한 IDE에서 공유 코드를 작성, 실행, 테스트 및 디버그 할 수 있습니다. 모바일 앱에서 Kotlin을 사용하여 코드를 공유하는 VMWare, Autodesk, Yandex와 같은 훌륭한 팀과 함께하세요. 모바일 플랫폼 간에 코드를 재사용하는 일이 이보다 더 쉬울 수 없습니다!

파일

Kotlin Multiplatform Mobile이란?

Kotlin Multiplatform Mobile(KMM)은 JetBrains가 제공하는 크로스 플랫폼 모바일 개발용 SDK입니다. Kotlin의 멀티플랫폼 기능을 사용하며, 모바일 크로스 플랫폼 애플리케이션을 최대한 즐겁고 효율적으로 빌드할 수 있도록 종합 환경을 제공하기 위해 설계된 다양한 도구와 기능을 포함합니다.

애플리케이션의 Android 및 iOS 버전은 공통점이 많지만, 특히 UI 측면, 즉 다소 다른 스크롤 동작부터 완전히 다른 탐색 로직에 이르기까지 많은 차이점이 있을 수 있습니다. 다른 한편, 데이터 관리, 분석, 인증 기능 등의 애플리케이션 비즈니스 로직은 동일한 경우가 많습니다. 이 때문에 플랫폼 간 애플리케이션의 일부만 공유하고 다른 부분은 완전히 분리한 상태로 유지하는 것이 통상적입니다.

그러나 KMM을 사용하면 이 부분에서 유연성을 확보하고 네이티브 프로그래밍의 이점을 유지할 수 있습니다. iOS 및 Android 앱의 비즈니스 로직에 단일 코드 베이스를 사용하고 필요한 경우에만 플랫폼별 코드를 작성하여 기본 UI를 구현하거나 플랫폼별 API로 작업하세요.

파일

KMM은 모바일 프로젝트와 원활하게 통합됩니다. Kotlin으로 작성된 공유 코드는 Kotlin/JVM을 사용하여 JVM 바이트코드로 컴파일되고 Kotlin/Native를 사용하여 네이티브 바이너리로 컴파일되므로 다른 일반 모바일 라이브러리와 마찬가지로 KMM 비즈니스 로직 모듈을 사용할 수 있습니다.

이미 많은 회사에서 모바일 플랫폼 간에 Kotlin 코드를 공유하여 많은 시간과 노력을 절약했습니다. 고무적인 사례를 소개해 드리면 다음과 같습니다.

  • Quizlet은 공유된 JavaScript 접근 방식에서 KMM으로 비즈니스 로직을 마이그레이션한 후, Android 및 iOS 애플리케이션의 성능을 대폭 개선했습니다.
  • Fastwork는 애플리케이션의 도메인 및 데이터 레이어에 KMM을 도입해 모바일 플랫폼 간에 비즈니스 로직과 API 서비스를 공유하여 팀의 생산성을 크게 향상했습니다.
  • Yandex.Disk는 실험적으로 작은 기능을 통합하는 것으로 시작하여, 이 실험이 성공적인 것으로 입증되자 KMM으로 전체 데이터 동기화 로직을 구현했습니다.

이 팀 및 다른 수많은 팀이 얻은 놀라운 결과는 저희에게 큰 영감을 주었습니다. 이들의 후기가 여러분에게도 KMM으로 모바일 플랫폼 간 코드 공유를 시작하는 계기가 되었으면 합니다.

KMM으로 간편하게 모바일 앱 제작

KMM은 모바일 개발 세계에서 여전히 ​​신생 기술이지만 개발의 판도를 바꿀 진정한 게임 체인저라고 생각합니다. 이에 저희는 Kotlin 내부에 별도의 팀을 배치하여 KMM을 발전시키고 Kotlin으로 크로스 플랫폼 모바일 애플리케이션을 제작하기 위한 최상의 개발자 경험을 제공하도록 하고 있습니다.

그 첫 번째 단계로 오늘 새로운 KMM 개발자 포털과 함께 Android Studio용 KMM 플러그인의 첫 테스트 버전을 제공합니다.

지금부터 KMM을 살펴보겠습니다!

익숙한 환경에서 작업

새로운 KMM 플러그인을 사용하면 다른 IDE로 전환하지 않고도 Android Studio에서 공유 코드를 작성, 실행, 테스트, 디버그할 수 있습니다. 설치하려면 Preferences(환경 설정) | Plugins(플러그인)을 선택한 후, Kotlin Multiplatform Mobile 플러그인을 Marketplace(마켓플레이스)에서 검색한 다음 Install(설치) 버튼을 클릭하세요.

단 몇번의 클릭으로 새 애플리케이션 구성

New Kotlin Multiplatform Mobile Project 마법사를 사용하면 단 몇번의 클릭만으로 공유 코드 베이스를 사용하여 바로 실행 가능한 모바일 애플리케이션 프로젝트를 생성할 수 있습니다. 두 플랫폼에서 어떻게 작동하는지 확인하려면, 필요한 실행 구성을 선택하고 Run(실행) 버튼을 클릭하기만 하면 됩니다.

파일

생성된 프로젝트에는 플랫폼별 API 및 기본 테스트 커버리지에 연결하는 방법의 예시가 포함됩니다. 이 마법사는 KMM의 기본 기능을 탐색하는 데 사용하거나 새 KMM 프로덕션 애플리케이션용 스캐폴딩 도구로 사용할 수 있습니다.

이 튜토리얼을 따라 플러그인을 설치하고 마법사를 사용하여 첫 멀티플랫폼 애플리케이션을 만들어 보세요.

KMM을 기존 프로젝트에 한 번에 도입

또한 공유된 Kotlin 코드는 다른 일반 종속 요소와 마찬가지로 기존 코드에 쉽게 통합되므로 현재 프로젝트에서 KMM을 바로 시작할 수 있습니다. New Kotlin Multiplatform Mobile Module 마법사를 사용하면 프로젝트에 새 KMM 모듈을 추가하여 Kotlin으로 작성해둔 코드를 사용하고 리팩토링하여 iOS와 호환되도록 만들 수 있습니다.

멀티플랫폼 프로젝트의 아키텍처를 설계하고 해당 프로젝트로 마이그레이션을 준비하는 방법을 알아보려면 KMM을 기존 프로젝트에 통합하는 방법에 관한 가이드를 확인하세요.

하나의 IDE에서 두 플랫폼 작업을 수행

이제 코드가 두 모바일 플랫폼에서 올바르게 작동하는지 확인하기 위해 IDE를 전환하고 Xcode를 실행할 필요가 없습니다. 새로운 플러그인을 사용하면 Android Studio에서 바로 iOS 기기 및 시뮬레이터를 통합할 수 있습니다. 통합하면 다음과 같은 작업을 수행할 수 있습니다.

  • 사전 정의된 실행 구성을 사용하여 시뮬레이터 또는 기기에서 iOS 애플리케이션을 실행하고 디버그할 수 있습니다.
  • 테스트 클래스 또는 메소드에서 여백 아이콘을 간단히 클릭하면 iOS 시뮬레이터에서 공통 및 iOS용 테스트를 실행하고 디버그할 수 있습니다.

또한 애플리케이션과 테스트 모두에 대해 중단점을 설정하고 iOS 상에서의 코드를 디버그할 수 있습니다.

오버헤드 없이 iOS 에코시스템과 통합

위에서 말했듯이 KMM은 모바일 프로젝트와 원활하게 통합됩니다. Android의 경우, 프로젝트의 모든 부분에 Kotlin을 사용할 수 있습니다. 동시에 Kotlin/Native와 Objective-C/Swift 간의 상호운용성, CocoaPods 종속 요소 관리자 통합, expect/actual 패턴과 함께 플랫폼별 API를 사용할 수 있는 기능이 제공되어 iOS 개발 프로세스와 긴밀하게 통합됩니다.

Kotlin/Native를 사용하여 Swift 코드에서 간편하게 Kotlin 작업

Kotlin/Native는 Objective-C/Swift와 양방향 상호운용성을 제공합니다. Kotlin 모듈은 Swift/Objective-C에서 완벽하게 사용 가능합니다. Objective-C 프레임워크 및 라이브러리는 Kotlin 코드에서 사용할 수 있으며, Swift 라이브러리도 @objc를 사용하여 해당 API를 Objective-C로 내보내면 사용할 수 있습니다.

Kotlin/Native와 Swift/Objective-C 간의 상호운용성에 관해 자세히 알아보세요.

iOS 종속 요소를 쉽게 관리

Kotlin/Native에는 CocoaPods 종속 요소 관리자가 통합되어 있습니다. CocoaPods 저장소 또는 로컬에 저장된 Pod 라이브러리의 종속 요소를 추가할 수 있으며, 네이티브 대상이 있는 멀티플랫폼 프로젝트를 CocoaPods 종속 요소(Kotlin Pod)로서 사용할 수도 있습니다. Android Studio에서 바로 Pod 종속 요소를 관리하고 강조 표시 및 코드 완성 등의 완벽한 코딩 지원 기능을 활용하세요.

일반적인 KMM 라이브러리 구성은 다음과 같습니다.

Podfile에 라이브러리의 이름과 경로를 추가하여 해당 라이브러리를 iOS 프로젝트에 Kotlin Pod으로서 연결합니다.

CocoaPods 통합에 관해 자세히 알아보세요.

새 개발자 포털에서 멀티플랫폼 모바일 앱을 더 효과적으로 제작하는 방법 알아보기

새로운 KMM 개발자 포털은 KMM을 처음 사용할 때의 경험부터 프로덕션 환경에서 사용하는 전체 과정에 이르기까지 사용자의 여정을 더 편안하고 생산적으로 만들 수 있도록 설계되었습니다.

문서 섹션은 KMM으로 작업할 때 믿고 참고할 수 있는 리소스입니다. 시작 안내 튜토리얼부터 고급 개발 주제에 이르기까지 모든 수준의 전문 지식에 대한 내용을 찾을 수 있습니다. 여기에는 네트워킹데이터 스토리지 계층 구성, KMM을 중심으로 개발 프로세스 구성과 같은 일반 작업에 관한 유용한 정보가 포함되어 있습니다.

애플리케이션에서 KMM을 사용할 때의 이점에 관한 새로운 사실을 알고 싶으신가요? 자신들의 제품에 이미 KMM을 사용하고 있는 다양한 팀의 직접적인 경험을 사례 연구 섹션에서 확인해보세요.

커뮤니티의 힘

자신의 시간과 정보, 전문 지식으로 이 릴리스에 중요한 기여를 해주신 다음 회사 및 개인 개발자분들께 감사드립니다. Kevin Galligan, Alec Strong, Arkadii Ivanov, Ben Asher, John O’Reilly, Louis CAD, Kris Wong, Aleksey Mikhailov를 비롯해 기타 수많은 실력 있는 엔지니어분들 감사합니다. 또한 YouTrack에서 문제를 보고하고, 제품 조사 및 인터뷰에 참여하고, KMM 사용 후기를 공유하고, 놀라운 멀티플랫폼 라이브러리를 만들어 주신 여러분, 감사합니다!

새로운 개발자 포털의 콘텐츠를 제작하는 데 도움을 주신 Touchlab, IceRock, Kodein Koders 팀에도 감사드립니다. 여러분의 작업은 수천 명의 개발자가 Kotlin Multiplatform Mobile을 심도 있게 탐구하고 완벽하게 활용하는 데 도움이 될 것입니다.

여러분은 정말 최고입니다!

지금 체험해보기

이상의 모든 멋진 기능과 더불어 이제 KMM이 알파 버전으로 전환된다는 기쁜 소식을 알려 드립니다. 이 전환은 Kotlin 팀이 이 기술을 개선하고 발전시키는 데 총력을 기울이고 있다는 의미인 동시에 이 제품이 빠르게 발전할 것이라는 신호이기도 합니다. 저희는 여러분의 의견을 경청하여 수정 및 개선 사항을 최대한 빨리 제공하려 합니다. 문제를 발견하신 경우 트래커를 통해 보고하여 KMM의 안정성을 높이도록 도와주세요.

알파 버전으로 전환된다는 것은 KMM을 사용하여 모바일 플랫폼 간에 비즈니스 로직 코드를 공유할 수 있는 모든 준비가 완료되었다는 뜻입니다. 이제 새 프로젝트를 생성할 수도 있고 KMM 모듈을 기존 프로젝트에 쉽게 통합할 수도 있습니다. 이 두 시나리오 모두에서 최소한의 비용으로 작업을 수행할 수 있으며 언제든지 완전한 네이티브 개발로 돌아갈 수 있습니다. 커뮤니티는 빠르게 성장하고 있으며 여러분도 여기에 참여하여 전체 에코시스템의 발전에 기여하실 수 있습니다.

즉, 지금이 KMM을 사용해보기에 좋은 때입니다!

KMM을 자세히 알아보고 탐색하려는 모든 기능에 관해 논의하고 싶다면 Slack의 멀티플랫폼 팬 커뮤니티(여기에서 초대 받기)에 가입하고 Stack Overflow에서 “kotlin-multiplatform” 태그를 구독해 보세요.

마이그레이션의 경우 저희가 최선을 다하고는 있으나 아직 원활한 진행을 보장해 드리지 못합니다. 하지만 기능 플래그를 사용하고 새 버전에 대한 마이그레이션 가이드를 제공하여 호환성 문제를 최대한 방지하기 위해 노력하겠습니다.

의견을 공유해 주세요

이 릴리스는 여정의 시작일 뿐이며 이 과정에서 여러분의 도움이 필요합니다. 긍정적이든 부정적이든 관계없이 여러분의 모든 피드백을 기다립니다. Kotlin Multiplatform Mobile 사용 후기를 공유하여 다른 사용자들에게 영감을 주고 KMM 개선 방안에 관한 아이디어를 공유해주세요.

Let’s Kotlin!

이 게시물은 Ekaterina Petrova가 작성한 Kotlin Multiplatform Mobile Goes Alpha를 번역한 글입니다.