19P by GN⁺ | ★ favorite | 댓글 3개
  • 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이 있음
GeekNews Weekly에 포함된 글입니다. 에디터 코멘트 보기

댓글과 토론

코드 난독화도 지원하게된다면 되게 좋을거같네요

오호 흥미롭네요. 얼마나 어떻게 처리되는지 아직 전혀 모르겠지만 무모하면서도 재밌는 시도 같습니다

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의 성능 문제 해결

    • 크로스 플랫폼 프레임워크의 성능 문제를 해결하는 데 큰 도움이 됨