오픈스트리트맵(OpenStreetMap) 데이터를 활용해 사용자가 주변 정보를 쉽게 편집할 수 있도록 돕는 앱 스트리트컴플리트(StreetComplete)가 드디어 iOS 공개 베타 버전을 출시했습니다. 개발팀은 기존 안드로이드(Android) 앱의 코틀린(Kotlin) 코드를 최대한 재활용하면서, 코틀린 멀티플랫폼(Kotlin Multiplatform, KMP)과 컴포즈 멀티플랫폼(Compose Multiplatform) 기술을 이용해 iOS 버전을 성공적으로 이식했습니다. 현재 애플(Apple)의 테스트플라이트(TestFlight)를 통해 누구나 베타 테스트에 참여할 수 있습니다.
이번 iOS 이식 작업은 기존 코틀린 코드를 유지하면서 안드로이드/자바(Android/Java) 의존성을 코틀린 멀티플랫폼 의존성으로 교체하고, 전체 사용자 인터페이스(UI)를 컴포즈(Compose)로 재구현하는 것이 핵심이었습니다. 특히, 지도 렌더러는 유지보수가 중단된 탱그램-es(tangram-es)에서 맵리브르-네이티브(MapLibre-native)로 교체하는 등 기술 스택의 변화도 있었습니다. 개발팀은 약 1년간의 전일제 작업 끝에 현재 50% 정도의 진척도를 보이고 있으며, 단일 코드베이스 유지 전략을 통해 향후 유지보수 부담을 최소화하는 것을 목표로 하고 있습니다. 현재 iOS 15.x에서는 지도가 작동하지 않거나 입력 폼 취소가 특정 제스처로만 가능한 등 일부 제약 사항이 있지만, 이는 정식 릴리스 전까지 개선될 예정입니다.
스트리트컴플리트의 이번 iOS 출시는 크로스 플랫폼 개발, 특히 코틀린 멀티플랫폼의 가능성을 다시 한번 입증하는 중요한 사례입니다. 플러터(Flutter)나 리액트 네이티브(React Native)와 같은 다른 크로스 플랫폼 프레임워크와 달리, 코틀린 멀티플랫폼은 기존 코틀린 코드베이스를 거의 그대로 활용하면서 iOS를 포함한 다양한 플랫폼을 지원할 수 있다는 장점이 있습니다. 이는 개발 비용과 시간을 절감하고, 플랫폼 간 기능 일관성을 유지하는 데 큰 도움이 됩니다. 앞으로 더 많은 앱들이 이와 같은 단일 코드베이스 전략을 채택하여 효율적인 개발 문화를 확산시킬 것으로 기대됩니다.