GN⁺: Skip – 단일 Swift 코드베이스로 네이티브 iOS 및 Android 앱 개발
(skip.tools)- Skip은 Swift 앱 개발을 Android로 확장할 수 있게 해주는 도구
- Swift와 Xcode를 사용하여 iOS와 Android에서 모두 네이티브 앱을 개발할 수 있음
- Skip의 작동 방식
- Xcode에서 Swift 및 SwiftUI 앱을 개발하면, Skip Xcode 플러그인이 이를 Kotlin 및 Jetpack Compose로 변환
- 네이티브 성능과 사용자 인터페이스를 유지하면서 두 플랫폼에서 라이브러리나 전체 앱을 개발할 수 있음
Skip 앱의 장점
진정한 네이티브
- Skip 앱은 단순히 "네이티브처럼 보이는" 것이 아니라 실제로 네이티브임
- iOS에서는 Swift와 SwiftUI, Android에서는 Kotlin과 Compose를 사용함
완전한 투명성
- Skip을 사용하면 앱의 모든 부분이 개발자에게 노출됨
- Swift 코드를 직접 Kotlin 소스 코드로 변환하여 검사하고 커스터마이징할 수 있음
경량성
- SkipZero를 사용하면 iOS 앱은 Skip 프레임워크에 의존하지 않음
- Android 앱은 몇 가지 Skip 오픈 소스 라이브러리만 필요함
메모리 효율성
- 추가적인 관리 런타임이 없기 때문에 Skip 앱은 두 플랫폼에서 가능한 한 효율적임
- iOS에서는 베어 메탈, Android에서는 ART 바이트코드를 사용함
이상적인 IDE
- Skip의 IDE는 iOS 개발을 위한 최고의 환경인 Xcode임
- Android 커스터마이징을 위해 생성된 코드를 Android Studio에서 직접 열 수 있음
완벽한 통합
- Skip은 표준 Kotlin과 Compose를 생성하므로 Android 라이브러리와의 통합이 쉬움
- 다른 Kotlin 및 Java 코드를 직접 호출할 수 있음
오픈 소스 기반
- Skip의 트랜스파일러는 이야기의 절반에 불과함
- iOS 앱 개발을 뒷받침하는 Foundation 및 SwiftUI와 같은 프레임워크가 Skip의 무료 오픈 소스 구현을 통해 Android에서도 사용 가능함
CI 친화적
- Skip은 단위 테스트도 변환함
- 로컬 또는 원격으로 테스트를 실행하여 플랫폼 간 동일한 로직 성능을 보장할 수 있음
탈출 가능성
- Swift 입력과 Kotlin 출력 모두 개발자의 소유임
- Skip 트랜스파일러에 지속적으로 의존하지 않아도 됨
GN⁺의 정리
- Skip은 Swift 앱을 Android로 확장할 수 있게 해주는 도구로, 두 플랫폼에서 네이티브 성능과 사용자 인터페이스를 유지할 수 있음
- Xcode와 Android Studio를 모두 활용하여 개발자가 더 효율적으로 작업할 수 있게 함
- 오픈 소스 기반으로 투명성과 커스터마이징 가능성을 제공함
- CI 친화적이며, 테스트를 통해 플랫폼 간 동일한 성능을 보장할 수 있음
- 유사한 기능을 제공하는 프로젝트로는 Kotlin Multiplatform이 있음
Hacker News 의견
-
개인 앱을 Android로 이식하려는 경험 공유
- SwiftUI로 iOS 앱을 개발 중이며, Android 버전으로 이식하려고 React Native, Ionic, Ignite 등을 시도했으나 어려움이 있었음
- Skip을 사용해보니 Swift 문맥을 유지하면서 하나의 언어로 앱을 작성할 수 있어 매우 만족스러움
- 플랫폼별 코드 작성이 쉬우며, Android를 배우지 않고도 빠르게 앱을 실행할 수 있음
- 전체 앱을 Skip으로 개발해 양쪽 앱 스토어에 배포할 계획임
-
Skip에 대한 우려 사항
- 오픈 소스 라이선스에 대한 의문 (GPL vs MIT)
- 패키지 관리와 iOS/Android 분기 처리 방법에 대한 궁금증
- Apple 서비스 API가 Android에서 어떻게 처리되는지에 대한 의문
- 광고 및 인앱 결제 예제의 필요성
-
Skip의 의존성 관리에 대한 질문
- Swift PM 패키지를 Android 프로젝트에서 투명하게 사용할 수 있는지에 대한 의문
- Kotlin이 Swift 라이브러리를 투명하게 호출할 수 있는지 궁금함
-
Skip의 타겟 시장에 대한 의견
- 주로 iOS 앱을 Android로 변환하려는 미국/유럽 기업을 대상으로 하는 제품으로 보임
- Android가 주류인 다른 지역에서는 Flutter, React Native, Kotlin MP 같은 더 나은 프레임워크가 존재함
- Skip의 트랜스파일링 문제와 유지보수의 어려움 지적
-
ChatGPT와 Claude를 사용한 코드 변환 경험
- SwiftUI 코드를 Kotlin, Jetpack Compose, Material3로 변환하는 데 성공적이었음
- 생성된 코드가 거의 즉시 작동했으며, 스타일링/테마 수정만 필요했음
-
Skip 사용 경험 공유
- 몇 달간 사용해본 결과, 학습 곡선이 있지만 크로스 플랫폼 문제를 완전히 해결함
-
Skip의 문서와 트랜스파일링의 한계
- SwiftUI나 다른 핵심 라이브러리 사용 시 트랜스파일링의 한계가 있는지 궁금함
- Xamarin 개발의 어려움과 유사한 문제 발생 가능성
-
Skip의 프레임워크 제한
- 대부분의 iOS 앱이 Apple 플랫폼 프레임워크를 사용하므로 Skip의 최소 구현이 제한적일 수 있음
- StoreKit, WebKit, SafariServices, UserNotifications, CryptoKit 등의 현재 구현이 없음
-
기존 앱과 Skip 통합의 어려움
- 기존 SwiftUI + UIKit 앱과 Skip 통합이 어려운지에 대한 질문
- 작은 또는 중간 크기의 앱이 Skip으로 마이그레이션된 예제 필요성
-
Skip의 성능 문제 해결
- 크로스 플랫폼 프레임워크의 성능 문제를 해결하는 데 큰 도움이 됨