Offcanvas

개발자 / 애플리케이션 / 오픈소스

MS 자마린 에센셜, 크로스 플랫폼 완성 '마지막 조각'

2018.07.12 Simon Bisson  |  InfoWorld
마이크로소프트의 자마린(Xamarin) 인수 결정은 영악한 것이었다. 이를 통해 개발자가 익숙한 툴과 기술을 이용해 크로스 플랫폼 애플리케이션을 개발할 수 있게 됐다. 자마린은 비주얼 스튜디오의 모든 버전에 내장됐으며, 맥OS용 버전에도 그 기초 역할을 하고 있다. 자마린은 문자 그대로 마이크로소프트의 개발 툴의 핵심 요소가 됐다.



그러나 최근까지는 자마린이 있어도 크로스 플랫폼 애플리케이션 개발이 쉽지 않았다. 핵심 개발 툴은 닷넷의 iOS 및 안드로이드 버전과 호환돼도 이를 이용한 앱을 개발하려면 네이티브 UX와 심도 깊은 플랫폼 통합을 위해 상당량의 코드를 기기별로 작성해야 했다. 프로젝트의 핵심 코드를 저장해 둬도 완전한 애플리케이션을 개발해 테스트하려면 다양한 분야의 지식과 특수 기술이 필요했다. 결국 비용도 여러 플랫폼용 네이티브 툴을 사용하는 것보다 약간 저렴하긴 하지만 큰 차이는 없었다.

자마린과의 크로스 플랫폼 UI 및 장치 통합
마이크로소프트의 플랫폼 개발자가 이런 재정과 인력의 병목현상을 해결하기 위해 내놓은 해법은 2가지였다. 첫번째가 자마린 폼즈(Xamarin Forms)였고, 두번째가 여기서 살펴볼 자마린 에센설(Xamarin.Essentials)이다. 현재 베타 버전이 나온 상태다.

자마린 폼즈는 사용자 환경 측면의 거의 모든 문제를 처리한다. 각 플랫폼에서 적절히 제공되는 공통 제어 기능을 지원한다. 코드를 작성하고 제어 기능을 배치하면 모든 기기에서 사용할 수 있는 버전을 만들 수 있었다. 이는 '최소 공통 분모' 접근방식이긴 하지만 기업 애플리케이션 개발 요건의 많은 부분을 충족시키는 제어 기능을 제공한다는 점에서 의미가 있었다. 일반 사용자를 위한 앱까지는 힘들어도 영업과 현장 서비스 등을 위한 내부용 앱에는 충분히 사용할만 했다.

그렇다면 코드의 다른 측면을 간소화해 기본 플랫폼 API를 통해 인터페이스를 처리하려면 어떻게 해야 할까? 지금까지는 네이티브 코드를 작성하거나 사용자 정의 플러그인을 사용해야 했다. 자마린을 제대로 쓰려면 기기 OS에 상관없이 알림, 파일 시스템, 카메라, 위치 서비스와 호환되는 동일한 API 호출이 필요하다. 바로 이 지점에서 등장한 것이 자마린 에센셜이다. 이 공통 추상화 계층은 사용자 정의 코드 또는 플랫폼 종속 기술 없이 각 기기의 플랫폼 서비스에 대한 액세스를 조정하고 관리한다.

자마린 에센셜 시작하기
자마린 에센셜은 크로스 플랫폼 라이브러리이다. 맥OS를 제외한 iOS, 안드로이드, UWP(Universal Windows Platform)에서 25개 이상의 플랫폼 API에 대한 액세스를 제공한다. 사용자는 하나 이상의 플랫폼을 대상으로 하는 앱을 더 빠르게 개발할 수 있다. 예를 들어 안드로이드용 코드를 신속하게 이식해 iOS도 지원하도록 할 수 있다. iOS 10 이상, 안드로이드 4.4 킷캣(KitKat) 이상, 빌드 1709 이상의 UWP 등 최신 기기 대부분을 지원한다.

마이크로소프트는 닷넷 작업과 마찬가지로 자마린 에센셜을 공개된 깃허브(GitHub)에서 관리하고 있다. 현재 기능을 위한 풀(Pull) 요청은 받지 않고 있지만 마이크로소프트는 커뮤니티가 버그 해결과 코드 리팩토링(Refactoring)을 지원해주기를 기대하고 있다.

또한 이 라이브러리는 닷넷 링커(Linker)와 컴파일러의 기능을 활용하도록 개발돼 사용하지 않는 코드는 빌드에 적용되지 않는다. 이런 접근방식을 통해 최종 네이티브 바이너리의 크기가 줄어들 뿐 앱의 공격 가능한 영역을 가능한 한 줄여 보안 위험을 최소화한다.

자마린 에센셜은 누겟(NuGet) 패키지로 제공되며 비주얼 스튜디오의 솔루션 익스플로러(Solution Explorer)를 통해 추가할 수 있다. 모든 대상 장치를 위한 모든 프로젝트에 추가한 후 패키지와 기타 전제 기능을 설치할 때까지 기다려야 한다. 또한 그 API를 사용하는 모든 C# 클래스에서 참조를 추가해야 한다. 안드로이드 앱은 추가 구성이 필요하다. 기본 OnCreate 방법과 Activity 클래스에 약간의 추가 코드를 추가해야 한다.

이런 툴은 설정이 단순해야 한다. 익숙한 플랫폼 툴이어야 개발자가 손쉽게 학습할 수 있기 때문이다. 마찬가지로 자마린 에센셜도 초기 설정을 위해 필요한 몇 줄의 코드만 있으면 약간의 학습만으로도 앱에서 API를 사용할 수 있다. 초기 API 세트로 오늘날 모바일 앱에서 필요한 상당 부분을 처리할 수 있다. 대부분의 공통 기기 센서 플랫폼을 아우를 뿐 아니라 핵심 OS 기능과 네트워킹에 대한 액세스도 제공한다.


코드에서 자마린 에센셜 API 호출하기
애플리케이션에서 자마린 에센셜은 지원을 활성화하면 코드에 API를 추가할 수 있다. 여전히 일부 장치는 별도로 속성을 설정해야 하기 때문에 각 대상 OS에 대해 별도의 프로젝트를 유지한다. 대부분은 앱별 권한을 제공한다. 예를 들어, 지리 위치 API를 사용하는 경우 GPS 센서와 위치 데이터에 대한 액세스를 추가한다.

대부분의 API 호출은 논리적이며 예상한 대로 작동한다. 예를 들어, 위도, 경도, 고도가 포함된 객체를 얻기 위한 위치 호출을 작성한다면, 이 데이터를 지도 제어 기능으로 전달하거나 데이터베이스에 저장할 수 있다. 기본 OS API의 응답을 기다려야 하기 때문에 호출은 비동기식이어야 한다. 또한 앱이 이것을 완료하지 않는 경우 동작을 취소하도록 세련돼 셧다운을 처리하고 작동을 중단할 수 있는 옵션도 있다.

자마린 에센셜 API는 복잡하지 않으며 일부는 SMS 메시징 API처럼 매우 단순하다. 사용자는 메시지와 수신인으로 ComposeAsync 방법을 호출해 기본 SMS 클라이언트에서 메시지를 자동 생성할 수 있다. 기본 OS의 메커니즘을 이해할 필요도 없다. 단지 추상화된 자마린 사용 방법만 알면 된다.

그 결과 개발 속도가 빨라지고 버그가 감소한다. 기존의 자마린 플러그인 기반 확장기능 모델은 사라지지 않았으며 더 복잡한 API 상호작용을 지원할 때 유용하다. 이번 릴리즈를 통해 대부분의 기본 장치 및 OS 상호작용을 처리하는 핵심 API 세트를 완성해 코드를 더 신속하게 제공하는데 도움이 된다.

마이크로소프트는 자마린 에센셜을 통해 오늘날 모바일 앱이 필요로 하는 여러 API를 처리했다. 기본 OS에서 벗어남으로써 데이터를 더 쉽게 활용할 수 있어 API와 UI 사이에서 교환하는 코드 작성을 간소화하는 논리적인 형식을 얻게 됐다. 자마린 에센셜과 자마린 폼즈의 조합을 통해 마이크로소프트는 PC와 모바일 기기 분야의 오랜 숙원이었던 E2E(End to End) 크로스 플랫폼 개발을 구현할 수 있다. ciokr@idg.co.kr 
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.