StreetComplete on iOS is now in public beta
StreetComplete iOS 공개 베타 시작
OpenStreetMap 편집 앱 StreetComplete가 Kotlin Multiplatform과 Compose Multiplatform을 활용해 iOS 버전을 개발하고 공개 베타를 시작했습니다. 기존 Kotlin 코드베이스를 유지하면서 UI를 단계적으로 옮기는 접근을 택했으며, 프로젝트는 커뮤니티 기여를 받고 있습니다.
- 주제
AI 요약
StreetComplete는 OpenStreetMap(OSM) 편집 경험이 없는 사용자도 현장에서 간단한 질문에 답해 지도 데이터를 보완하도록 돕는 앱입니다. 주변에서 조사가 필요한 장소를 퀘스트로 보여주고, 도로 이름이나 노면 같은 정보를 입력하면 OSM에 반영합니다. 오프라인에서도 쓸 수 있어 현장 조사에 적합합니다.
Kotlin 코드베이스를 유지하는 iOS 포팅
앱은 Kotlin으로 작성됐고, 제작진은 iOS 버전에 Kotlin Multiplatform을 적용합니다. 앱의 의존성 가운데 순수 Kotlin 라이브러리가 많아 로직을 공유하기에 유리하다고 설명합니다. UI에는 Jetpack Compose와 유사한 API를 제공하는 Compose Multiplatform을 사용합니다. iOS 지원은 당시 알파·베타 단계였으며, UI는 Android XML 레이아웃에서 Compose로 먼저 옮긴 뒤 Compose Multiplatform으로 전환하는 순서입니다. SwiftUI와 Flutter처럼 UI를 코드로 구성하는 방식입니다.
단계별 마이그레이션
먼저 플랫폼별 코드와 앱 로직을 분리하고, Android·Java 의존성을 Kotlin Multiplatform 라이브러리로 바꿉니다. 이어 데이터 접근과 UI 상태를 화면 코드에서 분리하고 ViewModel을 도입합니다. Android UI를 화면 단위로 Compose로 옮긴 다음, 이미 Compose로 작성한 UI를 Compose Multiplatform으로 전환합니다. 제작진은 이 방법이 Flutter를 도입해 앱 전체를 Dart로 다시 쓰는 접근보다 기존 Kotlin 코드를 보존하고 유지보수 부담을 낮춘다고 설명합니다.
작업은 Kanban 방식 프로젝트 보드에서 관리하며, 티켓별로 기여자를 받고 있습니다. 제작진은 전체 iOS 포팅에 대략 1인년이 필요하다고 추산했습니다. 2024년 상반기 전업으로 작업한 뒤 마이그레이션이 약 50% 진행됐다고 밝혔으며, 앱을 완성하려면 커뮤니티의 기여가 필요하다고 덧붙였습니다. 프로젝트는 코드 작업 외에도 후원, 유지보수, 이슈 분류를 요청합니다.
Hacker News 반응
- @JBiserkov — README에 따르면 StreetComplete는 Android용 OpenStreetMap 편집기입니다. OSM 태그 체계를 몰라도 쓸 수 있고, 간단한 질문에 답하면 그 내용을 OSM 데이터 편집에 반영합니다. 앱은 조사가 필요한 주변 장소를 퀘스트 마커로 표시합니다. 마커를 누르면 도로 이름을 묻는 식이며, 답변은 사용자의 OSM 계정으로 데이터베이스에 업로드됩니다. 현장 조사에 맞춰 오프라인에서도 작동하고 데이터 사용량도 적습니다.
- @amenghra — 좋습니다! 지식 기반 서비스들이 진입 장벽을 더 잘 이해했으면 합니다. 예를 들어 위키백과도 처음 편집할 때 인용을 올바르게 다루려면 어렵게 느껴질 수 있습니다.
- @PetitPrince — HN에서 OpenStreetMap 이야기가 나올 때마다 StreetComplete가 자주 언급되는데, 그럴 만합니다. OSM 매핑을 시작하기에 정말 좋은 앱입니다. 팀의 베타 출시를 축하합니다!
- @dewey — 맞습니다. 지난번 HN에서 언급됐을 때부터 이 이슈를 지켜봤는데, 진행 속도가 빨라 첫 버전까지 나온 점이 놀라웠습니다.
- @elaus — Android에서 몇 년 동안 썼는데 훌륭한 앱입니다. OSM 계정 생성만 빼면 진입 장벽이 낮고, 지도 편집 경험이 없는 사람도 OSM을 쉽게 개선합니다. 노면이나 접근성에 관한 질문에 그림이 있는 선택지로 답할 수 있습니다.
- @intrasight — Kotlin Multiplatform을 사용해 본 사람들의 경험을 더 듣고 싶습니다.
- @anotherpaul — StreetComplete 덕분에 OpenStreetMap을 더 쉽게 이용하게 됐습니다. 공중화장실 몇 곳과 작은 도로 하나를 OSM에 추가했습니다. 도로는 Google Maps가 빠르게 반영하는 모습을 보는 것도 흥미로웠습니다. 다만 앱에는 기존 도로도 남아 있어 완전히 연결된 상태는 아닙니다.
- @greggsy — 연결된 페이지에서 쉽게 찾을 수 없어서 실제 TestFlight 베타 초대 링크를 남깁니다: https://testflight.apple.com/join/K1u3eUU5
- @conartist6 — OpenStreetMap을 Google Maps처럼 쓸 수 있나요? 식당 목록을 보려고 했는데, UI를 보니 아무도 그런 용도로 써본 적이 없는 것 같았습니다.
- @unfocso — Organic Maps나 CoMaps로 어느 정도 가능합니다. 다만 제 생각에는 내비게이션에는 TomTom이 여전히 OSM을 가장 잘 활용합니다. OSM 데이터에 자체 실시간 교통 정보를 결합하면서 Waze나 Maps처럼 계정을 요구하거나 다크 패턴을 쓰지 않습니다.
- @flexagoon — OpenStreetMap은 데이터베이스이지 지도 앱이 아닙니다. 공식 웹사이트의 지도는 데이터를 보여주는 데모에 가깝습니다. OSM 데이터를 사용하는 지도 앱은 여러 가지 있습니다.
- @Poudlardo — 정말 오래 기다렸습니다. 드디어 나와서 기쁩니다.
- @thrownawaysz — 알려진 문제로 지도 아무 곳이나 눌러서는 폼을 닫을 수 없고 뒤로 가기 제스처만 쓸 수 있다고 합니다. 그런데 저는 뒤로 가기도 안 됩니다. 설문에 답하고 싶지 않으면 앱을 강제 종료해야 합니다.
- @dewey — 조금 연습이 필요하지만 몇 번 해보니 작동했습니다.
- @asymmetric — 지금까지 EveryDoor를 썼는데 이 앱도 사용해보고 싶습니다!
- @Loic — 몇 주 전 여기 댓글을 보고 Android에서 StreetComplete를 쓰기 시작했습니다. 기여 장벽을 거의 없애주는 훌륭한 도구입니다. 아쉬운 점은 이전 기여 내역을 간단히 보는 기능입니다. 실수로 보행로 노면 정보를 잘못 입력했는데, 빠르게 되돌릴 수 있으면 좋았겠습니다. 그래도 정말 좋은 앱입니다.
- @smcleod — 정말 좋은 아이디어입니다. 15년 동안 한 것보다 더 많은 OpenStreetMap 기여를 5분 만에 했습니다.
- @tbo47 — Android에서 StreetComplete와 EveryDoor를 모두 써봤습니다. 저는 지도에서 관심 있는 상점이나 장소를 중심으로 다루는 EveryDoor가 더 좋습니다. EveryDoor는 Apple App Store에도 있습니다.
원문: Hacker News / 번역·요약: Trawling