New Products

Amper – 빌드 도구 사용자 경험 개선 

Read this post in other languages:

Kotlin을 채택한 사람들은 빌드 시스템을 다루기가 어렵다고 줄곧 말해왔습니다. 많은 프로젝트에서 마법사를 사용하여 개발자가 시작할 수 있도록 환경을 구성하지만 이 또한 유지 관리가 필요합니다. 새로운 모듈, 플랫폼, 종속성 및 기타 변경 사항이 발생하면 개발자는 실제로 수행해야 하는 작업에 집중하는 것보다 빌드 시스템 및 IDE와 씨름하는 데 더 많은 시간을 소비하게 됩니다. Kotlin이 진정한 멀티플랫폼 언어가 되면서 JVM 에코시스템을 처음 접하는 사람들에게는 이 점이 더욱 크게 부각됩니다.

한동안 JetBrains는 프로젝트 정의 관점에서뿐만 아니라 더 나은 도구 지원을 제공함으로써 이러한 개발자 경험을 개선할 수 있는 방법을 모색하기 위해 내부적으로 일련의 실험을 진행해 왔습니다. 이러한 노력은 Kotlin Multiplatform과 관련하여 진행 중인 다른 이니셔티브와 연계되어 있습니다.

오늘은 이러한 프로젝트 중 하나인 Amper를 공유하고자 합니다. 그전에 한 가지 당부의 말씀을 드립니다. 즉, 아직은 매우 실험적인 단계이며 이를 공개하는 주된 목적은 기본적인 아이디어를 검증하고 피드백을 얻고자 하는 것입니다.

Amper란?

Amper는 프로젝트 구성을 위한 도구입니다. 목표는 사용자의 프로젝트 구성 경험과 도구의 기능성, 즉 IDE 내의 지원을 개선하는 동시에 원활하게 바로 사용할 수 있는 경험을 제공하는 것입니다.

현재는 빌드, 패키징, 게시 등에 목적을 둔 프로젝트 구성 등 다양한 측면을 검토하고 있습니다. 하지만 현재 단계에서는 주로 빌드 목적으로 프로젝트를 구성하는 데 중점을 두고 있습니다.

현재 사용 사례는 Kotlin 및 Kotlin Multiplatform이지만 Amper는 Java와 Swift도 지원합니다(멀티플랫폼에 대한 요구 사항). 향후 다른 언어와 기술 스택에서도 구성에 대한 동일한 접근 방식이 적용될 수 있습니다.

Amper는 Gradle 플러그인으로 구현되며 프로젝트 구성 형식으로 YAML을 사용합니다. 현재 목표는 사용자 경험을 검증하는 것이므로, Gradle과 같이 잘 테스트된 빌드 도구를 기반으로 삼아 여기에 구성 레이어를 제공하기로 결정했습니다.

YAML 사용과 관련하여 왜 Kotlin이 아닌지 의아스러운 분들도 있을 겁니다. 이 마크업 언어에 대한 결정이 최종적인 것은 아니지만 선언적 접근을 취하려는 의도를 가지고 있습니다. 이를 통해 오류 발생 가능성이 적은 보다 단순화된 구성이 가능할 뿐만 아니라 더 나은 도구를 제공하는 측면에서도 도움이 된다고 생각합니다. 다시 말하지만, 이 실험을 여러분과 공유하면서 기본적인 아이디어를 검증하기 위해 가장 간단한 접근 방식을 취했습니다. Kotlin의 제한적인 하위 집합을 프런트엔드 언어로 사용할지 여부는 아직 결정하지 않았습니다. 지금은 아이디어를 검증하는 데 중점을 두고 있습니다.

코드를 살펴봅시다!

IntelliJ IDEA 2023.3에서 다음 디렉터리 구조를 사용하는 아주 기본적인 JVM ‘Hello, World!’ 프로젝트를 살펴보겠습니다.

main.ktMyTest.kt 파일은 특별할 것이 없는 일반 Kotlin 파일입니다. 흥미로운 부분은 Amper 매니페스트 파일인 module.yaml입니다. 위의 프로젝트 구조의 경우 간단히 다음과 같습니다.

# Produce a JVM application 
product: jvm/app

이게 끝입니다. Kotlin 및 Java 툴체인, 테스트 프레임워크, 기타 필수 기능을 구성하고 즉시 사용할 수 있습니다. 또한 빌드 및 실행하고 테스트를 작성하여 실행하는 등의 작업을 수행할 수 있습니다. 자세한 내용은 전체 예시를 확인하세요.

이제 Fleet에서 다음과 같은 프로젝트 구조를 사용하여 Android, iOS 및 데스크톱 JVM 앱이 포함된 Compose Multiplatform 프로젝트를 살펴보겠습니다.

src/ 폴더에 Kotlin 및 Swift 코드가 함께 포함되어 있는 방식을 확인하세요. 물론 Kotlin과 Java도 가능합니다.

중요하게 언급할 또 다른 측면은 src 폴더의 공통 코드와 플랫폼별 코드 폴더인 src@iossrc@android가 있는 공유 모듈입니다(프로젝트 레이아웃에 대해 자세히 알아보기).

ios-app/module.yaml 매니페스트 파일은 다음과 같습니다.

# Produce an iOS application
product: ios/app

# Depend on the shared library module: 
dependencies:
  - ../shared

settings:
  # Enable Compose Multiplatform framework
  compose: enabled

이는 매우 간단합니다. 공유 모듈에 대한 종속성을 사용하여 iOS 애플리케이션을 정의하고 Compose Multiplatform 프레임워크를 활성화합니다. shared/module.yaml의 예는 더 흥미롭습니다.

# Produce a shared library for the JVM, Android, and iOS platforms:
product:
  type: lib
  platforms: [jvm, android, iosArm64, iosSimulatorArm64, iosX64]

# Shared Compose dependencies:
dependencies:
  - org.jetbrains.compose.foundation:foundation:1.5.0-rc01: exported
  - org.jetbrains.compose.material3:material3:1.5.0-rc01: exported

# Android-only dependencies  
dependencies@android:
  # integration compose with activities
  - androidx.activity:activity-compose:1.7.2: exported
  - androidx.appcompat:appcompat:1.6.1: exported

# iOS-only dependencies with a dependency on a CocoaPod
#   note that CocoaPods dependencies are not yet implemented in the prototype
dependencies@ios:
  - pod: 'FirebaseCore'
    version: '~> 6.6'

settings:
  # Enable Kotlin serialization
  kotlin:
    serialization: json
  
  # Enable Compose Multiplatform framework
  compose: enabled

몇 가지 중요한 항목을 언급해 보겠습니다. 우선, @ 한정자가 있는 플랫폼별 dependencies: 섹션에 주목하세요. 이 플랫폼 한정자는 매니페스트와 파일 레이아웃 모두에서 사용할 수 있습니다. 한정자는 특정 플랫폼에 대한 코드, 종속성 및 설정을 구성합니다.
둘째, dependencies: 섹션에서는 Kotlin 및 Maven 종속성뿐만 아니라 잠재적으로 CocoaPods, Swift Package Manager 및 우리가 받은 피드백을 기반으로 하는 기타 플랫폼별 패키지 관리자도 허용합니다.

당연히 이러한 예에서는 제한된 Amper 기능 세트만 보여줍니다. GitHub 프로젝트를 확인하고, 문서, 튜토리얼예시 프로젝트를 살펴보고, Amper의 디자인과 기능을 더 자세히 알아보세요.

현재 지원되는 사항

Amper는 현재 JVM, Android, iOS, macOS 및 Linux 플랫폼을 대상으로 하는 애플리케이션 제작을 지원합니다. Kotlin(단일 및 멀티 플랫폼)과 Java를 기반으로 애플리케이션을 만들 수 있습니다.

Amper가 Gradle을 백엔드로 사용하고 있다는 점을 고려하면 사용자 지정 작업에 대한 지원, Maven에 라이브러리를 게시하는 기능, CocoaPods 지원 및 데스크톱 앱 패키징 기능 모두가 Gradle 빌드 파일을 직접 구성하여 제공됩니다.

체험하는 방법

Amper를 체험해 보는 방법에는 여러 가지가 있습니다.

  • JVM 및 Android 프로젝트용 IntelliJ IDEA 2023.3(빌드 233.11799 기준)
  • JVM, Android 및 Kotlin Multiplatform 프로젝트용 Fleet(빌드 1.26.104 기준)
  • Gradle을 사용하여 CLI 또는 CI/CD에서 Amper 프로젝트 빌드

설치 지침을 확인하세요.

튜토리얼뿐만 아니라 몇 가지 샘플도 준비했습니다. 또한 Amper의 다양한 측면을 다루는 더 자세한 문서를 찾아볼 수도 있습니다.

의견을 남겨주세요

이 프로젝트는 여러분의 의견이 꼭 필요한 단계에 있습니다. 한 번 사용해보고 프로젝트를 정의하기에 더 간단한지, 또는 지원되기를 바라는 사용 사례가 있다면 무엇인지 알려주세요. 어떤 의견이라도 좋으니 공유해 주세요. 이슈 트래커를 사용하거나, 이 게시물에 댓글을 달거나, 공개 Slack 채널에 가입하여 내용을 게시하여 자유롭게 제안 사항과 의견을 제출해 주세요.

맺음말

주로 제기될 수 있는 질문에 답하기 위해 자주 하는 질문을 준비했습니다. 그 외에 여기서 몇 가지 사항만 짚고 넘어가고 싶습니다.

우선, 저희는 IntelliJ IDEA와 Fleet에서 Maven 및 Gradle과 같은 기술을 지원하는 데 전념하고 있습니다. 이 프로젝트도 이러한 기술에 대한 JetBrains의 약속에서 벗어나지 않으며 이 부분에서 파트너와 계속 긴밀하게 협력하고 있습니다.

둘째, 현재 단계에서 Amper는 완전한 기능을 할 수 있는 빌드 도구가 아닙니다. 제품 개발을 어떻게 전개할지에 대해 많은 아이디어가 있지만 Amper 개발을 계속 진행하기 전에 현재 진행 중인 작업이 효과적인지 검증해야 합니다.

자주 하는 질문에서 다른 질문에 대한 답변을 찾을 수 있기를 바랍니다. 그렇지 않은 경우 댓글로 문의하시면 최선을 다해 답변해 드리겠습니다.

게시물 원문 작성자

Jessie Cho

Anton Makeev

image description

Discover more