하마
6k
2016-12-16 11:55:10 작성 2016-12-22 13:28:58 수정됨
9
21493

자마린(Xamarin) 앱 개발의 장,단점


이번에는 앱 개발 이야기를 좀 해보겠습니다.

개인적으로 최근에야 앱개발을 경험 해 볼 수 있었고, 안드로이드(자바) 와 아이폰 (Swift 3.0) 으로 각각 개발을 하였습니다. 개발하고 나서 부족한 점을 채우기 위해 또 개발을 추가 할 생각을 하니...가슴 한편이 답답해짐을 느꼈습니다. 내 경우는 매우 특이한 상황인데 기획,웹프론트,백엔드,IoT서비스플랫폼, 전력데이터분석개발에 추가로 네이티브 앱개발 2종도 모두 "혼자" 개발 했기 때문에  디테일이 떨어지며 이것을 고도화 및 유지보수를 위해 다시 건드리기가 좀 겁이 납니다. (빨리 해당분야의 전문인력들이 생겼으면 ㅜㅜ 오키에 구인광고 내는게 소원.)  특히 UI 를 좀 더 화려하고 동적으로 꾸미고 싶은 경우는 더더욱 그러한데 비록 몇몇 경우는 각각의 네이티브 코드로 개발을 해야겠지만 적어도 UI 는 하나로 통일 하는게 좋겠다 싶어서 평소에 관심있었던 자마린 과 React Native 를 살펴보고 있습니다.

아래에 자마린에 대한 장,단점을 번역 해 보았는데요. React Native 보다는 자마린에 높은 점수를 주고 싶으며 아마 자마린으로 이주를 하게 될 거 같기도 합니다. 개인적으로 Javascript 를 안 좋아하기 때문에 JQuery mobile 이나 Ionic 프레임워크도 제외. 제 프로젝트의 경우 다양하고 빠른 정보의 업데이트가 필요한 분야가 아니라서 웹뷰의 활용도가 거의 없습니다. 뽀대와 성능은 네이티브구요.

참고로 이쪽 블로그에는 자마린 개발기(?) 가 있습니다. ->  리모릭스 개발 이야기
자 이제 본문 시작 !! 





Xamarin 의 장,단점  (가장 최근 정보는 업데이트되지 않음) 

https://www.altexsoft.com/blog/mobile/the-good-and-the-bad-of-xamarin-mobile-development/  번역 

이제 앱개발에 있어서 Xamarin을 빼고 얘기 할 수 는 없을 것 같습니다. 전 세계적으로 1.4백만 개발자군을 거느리고 있는 마이크로소프트 테크놀러지에 기반한 이 새로운 툴에 대해서 말해보고자 합니다.

기술적으로 말하면,  Xamarin 은 C# 과 크로스-플랫폼을 위한 .Net 레이어로 쌓여진 네이티브 라이브러리 를 사용합니다. (크로스플랫폼 개발로 만들어지는 네이티브 앱이라는 야그~)

xamarin platform

 다른 모든것들과 마찬가지로 Xamarin 도 자신만의 장점과 단점을 가지고 있으며, 이어지는 글은 당신의 적절한 선택을 위해 훌륭한 정보를 줄 것입니다.

장점 

 왜 Trello, Slack 및 GitHub 를 비롯한 15,000 넘는 회사가 Xamarin 을 선택 했는지 알게 해줍니다.

⊕ 모든 플랫폼을 위한 하나의 기술 스택 

Xamarin 은 다양한 플랫폼에서 작동하는 앱을 만들기 위해 .Net 프레임워크와 C# 을 이용합니다. 그래서 96%의 소스코드를 재사용하여 빠르게 각각의 플랫폼을 위한 앱을 만들 수 있습니다. Xamarin 은 또한 개발 환경사이에 스위칭을 요구하지 않고 그저 Xamarin IDE(for Mac) 과 Visual Studio (for Windows) 를 사용하면 됩니다.  많은 개발자들이 각 개발툴이 지원하는것에  대해 논쟁하고는 있지만 Microsoft 가 책임진 이래로 굉장한 발전이 이루어지고 있습니다. 크로스플랫폼 개발툴은 이제 무료이며 IDE 의 빌트인으로 제공됩니다.   

⊕ 네이티브 급 성능 

웹기술에 기반한 전통적인 하이브리드 앱들과 다르게 ,  자마린으로 개발하면 네이티브로 빌드 됩니다.
성능은 안드로이드와 iOS 네이티브 앱과 비슷하며  더이상 효율,성능이 약점이 아니게 됩니다. 자마린 플랫폼은 테스팅과 앱 성능을 관찰 할 수 있는 완전한 솔루션을 제공합니다.  

⊕ 네이티브 급 사용자 경험 

자마린은 플랫폼 자체 UI 요소를 사용함으로써 사용자 경험이 강력해집니다. 간단한 크로스 플랫폼 앱은 Xamarin.Forms 툴을 사용하여 빌드되는데 app UI 컴포넌트들을 플랫폼 특정 인터페이스 요소로 변환합니다. Xamarin.Form 을 사용하면 앱 개발 속도가 향상되며 , 비지니스 향 프로젝트에 좋은 선택이 될 겁니다. 아직 여분의 추상레이어에 기인하여 성능에 아주 조금 문제를 줄 수 있습니다. 커스텀 app UI 와 높은 성능을 위하여  Xamarin.iOS 와 Xamarin.Android 를 분리하여 사용 할 수 도 있습니다. 

⊕ 전체 하드웨어 서포트 

자마린을 이용하면 기능적으로 대부분의 네이티브 레벨의 앱을 만들 수 있습니다. 모든 하드웨어 호환 이슈를 제거 하였으며, 플랫폼 사이에서 기능적으로 공통 디바이스와 함께  작업 하기 위하여 플러그인과 특정 APIs 를 사용 할 수 도 있습니다. 플랫폼 특정 APIs 에 접근하기 위해서 자마린은 네이티브 라이브러리들과 링크 할 수 있도록 지원합니다. 이건 작은 수고로 네이티브 레벨 기능들을 더 잘 사용할 수 있게 해줍니다. 

단점 

그러나 여전히 몇가지의 단점이 있는데요.

Θ 최신에 업데이트된 기능보다는 조금 늦은 지원 

이것은 Xamarin 개발자 팀에 전적으로 달려 있습니다. 자마린 같은 크로스플랫폼 용 도구가 최신 iOS 및 Android 릴리스에 대한 즉각적인 지원을 제공하는 것은 사실 불가능합니다. 변경 사항을 구현하거나 새로운 플러그인을 도입하는 데 시간이 좀 걸립니다.

Θ 오픈 소스 라이브러리를 사용하는데 제한 

네이티브 개발은 오픈 소스 기술을 광범위하게 사용합니다. Xamarin을 사용하면 플랫폼과 개발자 및 소비자 모두는 플랫폼에 의해 제공되는 컴포넌트과 몇몇  .Net 오픈 소스 리소스에서 제공하는 구성 요소 만 사용해야합니다. (역주 : Telerik 같은 유명 컴포넌트 회사에서는 이미 Xamarin 용 컴포넌트가 출시되어있습니다). Android 및 iOS 모바일 앱 개발만큼이나 선택의 폭이 풍부하지는 않지만 Xamarin 구성 요소는 수천 개의 맞춤 UI 컨트롤, 다양한 차트, 그래프, 테마 및 기타 강력한 기능을 제공하여 앱에 추가 할 수 있습니다. 몇 번의 클릭. 여기에는 Stripe과 같은 내장 지불 처리, 비컨 및 웨어러블 통합, 푸쉬 서비스, 클라우드 스토리지 솔루션, 멀티미디어 스트리밍 기능 등이 포함됩니다.

Θ Xamarin 에코시스템 문제 

분명히 Xamarin 커뮤니티는 iOS 나 Android보다 훨씬 작습니다. 따라서 숙련 된 Xamarin 개발자를 찾는 것이 어려울 수 있습니다. 하지만 이 플랫폼은 Microsoft의 지원에 힘 입어 다음과 같이 성장하고 있습니다. 다양한 소스의 정보를 기반으로하는 Xamarin 커뮤니티는 전세계 모바일 개발의 10 %를 차지합니다. Xamarin 엔지니어의 수는 iOS 또는 Android 네이티브 커뮤니티와 아직 비교할 순 없지만 이 플랫폼은 개발자에게 광범위한 지원을 제공합니다. 즉,이 기술에 익숙하지 않은 사람들을 위한 리소스와 실습을 제공하는 훌륭하고 풍부한 교육 플랫폼인 Xamarin University가 있습니다. 이 지원을 이용하면 숙련된 C # / .Net 엔지니어의 학습 곡선이 최소화됩니다.  (역주: 영어가 모국어 만큼 편해야한다는게 함정.. ;;) 

Θ  UX architecture 에 있어서 약간의 문제.

멋진 네이티브 UX로 iOS 및 Android 용 훌륭한 앱을 개발하려는 경우 가장 큰 문제는 플랫폼 간 UX 아키텍처의 큰 차이입니다. 이것은 Xamarin이 당신에게 큰 어려움을 줄 수도 있는 문제입니다. 이러한 차이가 난이도의 80 % 이상이기 때문에 Xamarin이 제공 할 수있는 최대 값은 실제로 다루는 문제의 20 %로 제한됩니다.

Xamarin이 해결하지 못하는 이 문제를 사소하게 바라 볼 순 없습니다. UX 코딩, 애니메이션, 리소스, 동기화,보기, 워크 플로우 등의 차이는 iOS와 Android 사이에서 뚜렷이 구분 될 지 모릅니다

Even if you target only one mobile platform, the benefit of knowing .NET cannot help you with something as simple as loading an image.  You learned about the .NET Bitmap class, GDI, etc.?  That knowledge is really not very useful for mobile apps.  So a key issue here is that Xamarin touts “leveraging existing .NET knowledge”, however this comes with the huge asterisk.  A significant part of your .NET knowledge won’t apply here.



P.S


근데 왜 최근 자마린 한글 번역서는 하나도 없는지 모르겠군요. 무료이며 비쥬얼 스튜디오라는 강력한 툴과 C#으로 무장한 자마린을 활용하고자 하는 사람들이 많을텐데 말이지요.. C# 은 자바했으면 금방할거고
...다들 무엇으로 개발하나요? 무엇으로 개발할 예정이신가요? 혹시 이유까지 들을 수 있으면 좋겠습니다.

* 오키는  SW 개발의 "통합과 혁신"을 지향하므로 앱개발공유 및 개발자들도 많이 방문 했으면 합니다. :-) 



 하마블로그

4
4
  • 댓글 9

  • dkb
    1k
    2016-12-16 13:41:10

    xamarin 개발을 시도해봤었습니다...만

    처음에 xamarin form 으로 개발을 시도

    -> 생성한 예제 프로젝트조차 실행이 안됨

    -> xamarin native로 변경

    -> 안드로이드 layout xml 파일이나 자마린 native xaml 파일이나 내용은 같네(설마 다른게 있었나요?)

    -> 같으니까 자마린에서 intelliSense도 안뜨는데 안드로이드 스튜디오가 낫네

    -> 안드로이드 스튜디오에서 레이아웃 그려서 복붙

    -> android material design support library를 사용한 기본 레이아웃 build fail...?

    -> nuget으로 library 설치 시도

    -> 안됨. 왜죠?!


    java <> c# 코드는 사실 큰 문제가 아닐꺼고

    앱개발에서 귀찮은(...) 부분은 사실 UI 관련 처리라고 생각합니다.

    혹시 하고는 VS 몇번 지우고 다시 깔아보고 했는데도

    도무지 왜 첫단추조차 꿰어지지 않는건지


    사실 저 부분만 해결되면 자마린을 쓸 용의가 충분히 있습니다.


    그런데 사실 안드로이드 스튜디오에서 레이아웃 그리면서

    이럴꺼면 왜 자마린??? 이런 생각을 많이 했습니다;;;


    1
  • 쿠마
    2
    2016-12-16 15:03:27

    삽질을 좀 많이 해야되고 레퍼런스가 많이 없어서 현업에서 바로 쓰기 힘들드라구요.

    실제로는 하나의 코드로 양쪽 OS상에서 동일한 UI가 구현되지 않습니다. (미묘한 차이가..)


    안드앱,IOS앱 개발자들 다 있는 회사에서는 구지 자마린을 선택할 필요도 없어보이고

    소규모회사에서도 앱개발하는데 익숙하지 않은 자마린을 선택할 이유도 작아보이고

    막상 개발자를 뽑기도 힘들죠. 


    C#을 주언어로 사용하는 회사가 턴키로 앱까지 받은 경우,

    신생스타트업의 기술스택이 C#인 경우등 극히 제한된 분야에서 선택 될 것 같습니다.


    앞으로가 기대되기는 하지만 아직은 주력으로 올라오기는 힘들것 같아요.

    0
  • zepinos
    18k
    2016-12-16 17:49:38

    Java 에서는 왜 이런 크로스 플랫폼 쪽으론 프로젝트가 활성화 되지 않는지 의문이네요.


    거만함인가...-_-;;;

    0
  • dkb
    1k
    2016-12-16 18:21:40

    안드로이드도 kotlin으로 개발할 수 있고

    iOS도 swift로 개발할 수 있습니다.

    일본에서 안드, iOS 레이아웃과 종속된 UI 처리는 각각 작업한 후에

    공통(?) 비지니스 로직은 swift -> kotlin으로 손변환해서 작업했다는 것을 사례를 봤습니다.


    swift를 상세하게 공부하지는 않았지만, 언어 생김새가 매우 닮았던데요.

    이걸 pre-processor 개념으로 변환해줄 수도 있는거 아닌가? 하는 생각이 들더군요.
    그래서 컴파일러 공부를 하고 있습니다 ㅋㅋ

    엌. 생각나서 검색해봤더니만 프로젝트가 벌써 있네요 ㅋㅋ

    0
  • GAN
    1k
    2016-12-16 18:30:22

    Java 로 iOS 앱 개발이 가능하게 하는 RoboVM(https://robovm.com) 이라는 프로젝트가 있었는데 지금 들어가보니 접었네요.

    Codename One(https://www.codenameone.com/index.html) 이라고 Android, iOS, Windows Phone, Blackberry 를 지원하는 것도 있는 것 같은데 이건 무/유료인 것 같네요.

    0
  • zepinos
    18k
    2016-12-16 18:41:36

    GAN 님 // 정보 고맙습니다. RoboVM 은 알고 있었고(접은 것도) Codename One 은 처음 들어보는 것이네요. Xamarin 도 원래는 유료였고, 이런 것들이 유료인게 어찌보면 당연한 것일 수도 있어서...유료인 건 크게 문제가 안될 것 같습니다. Xamarin 만큼 왜 유명해지지 못하느냐가 문제지만요...


    0
  • NPE
    481
    2016-12-17 17:14:31

    JavaFX를 이용한 Gluon이란것도 있습니다.

    0
  • 삼식이
    1k
    2016-12-22 17:19:36

    단점 하나가 명시 안되어 있는데.

    장난삼아 화면 하나 만들어서 안드로이드 플렛폼에 올렸는데 용량이 많이 크더군요.

    그이유인즉 자말린 프레임웍이 포함되어서 apk로 만들어 지기 때문에 배포된 폰에도 자말린 서비스가 같이 올라 갑니다.


    0
  • BB go
    2
    2017-01-19 05:30:23

    크로스 플랫폼 자마린(Xamarin) 으로 allb앱 출시하기까지.

    http://cafe.naver.com/mcbugi/337885

    최근 자마린.Forms 로 양 플랫폼 앱 동시출시 경험기를 적었습니다. 


    0
  • 로그인을 하시면 댓글을 등록할 수 있습니다.