이번에는 앱 개발 이야기를 좀 할께요~

개인적으로 최근에야 앱개발을 경험 해 볼 수 있었고, 안드로이드(자바) 와 아이폰 (Swift 3.0) 으로 각각 개발을 하였습니다.(오픈SDK 를 그대로 사용하지 못하는 단점이 워낙 커서 결국 그냥 네이티브로 결정했습니다). 개발하고 나서 부족한 점을 채우기 위해 또 개발을 추가 할 생각을 하니...가슴 한편이 답답해짐을 느꼈습니다. 내 경우는 매우 특이한 상황인데 기획,웹프론트,백엔드,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# 은 자바했으면 어렵진 않을거고



WRITTEN BY
[前草] 이승현 (wowlsh93@gmail.com)
스타코프 (데이터지능플랫폼pd) (관심분야: 에너지IoT, 시계열(NILM) 데이터, 폴리글랏 프로그래밍 )

트랙백  0 , 댓글이 없습니다.
secret


여러분은 어떤것이 하이브리드앱이라고 생각하시나요?

1. 하나의 언어 혹은 툴로 여러 OS에서 돌아가는 앱
2. 웹과 네이티브 기능이 섞인 앱
3. 1번과 2번이 합쳐진 개념 (크로스 플랫폼향으로 제작되었으며 웹과 네이티브 기능이 잘 버무려짐)


.
.
.


많이들 오해하시는 부분입니다. (추가하였습니다: 저도 헤깔리며 사람마다 정의가 조금씩 다른듯 합니다) 

먼저 하이브리드라는 말은 하나의 언어/프레임워크에서 만들어서 아이폰과 안드로이드등으로 포팅 할 수 있다는 의미와 웹과 네이티브를 섞었다는 의미가 있습니다.  통상적으로는 후자를 말 합니다.


다음과 같이 구분해보았습니다.


1.사용되는 언어에 따른 분류  (자바스크립트 vs  델파이,C# 자마린등) 

*javascript 기반 하이브리드앱에는 ionic 프레임워크 / react 네이티브 / OnsenUI 등 
*네이티브 언어 기반 하이브리드 앱에는 자마린,델파이등이 있으며

2.포팅되는 상태에 따른 분류  (웹뷰 vs 순수네이티브UI) 

* 웹뷰기반 하이브리드앱에는 ionic,OnselUI 등이 있으며 즉 이것들은 변환후 웹뷰상에서 동작합니다.CSS 필수.
* 네이티브UI 기반 하이브리드앱에는 react 네이티브,자마린,델파이등이 있습니다. 즉 그것들이 안드로이드(자바), iOS(swift,objectC) 와 같은 네이티브 UI 로 변환됩니다.웹 뷰를 사용 할 수는 있으나  즉 웹 및 웹뷰와 직접적 상관이 없습니다.

3. 웹을 네이티브와 섞어 사용하는 것 그 자체만을 하이브리드앱이라 지칭.  (통상)


4. 개발 방식과 개발 결과물의 방향성을 분리 
- ionic, 자마린,react 네이티브등 하나의 언어로 여러 OS 에서 작동하는것은 크로스플랫폼 개발 방식이라고 지칭함. (자마린은 네이티브 기반 크로스플랫폼개발이고 ionic 은 웹기반 크로스플랫폼 개발.)
- 개발결과물이 웹과 네이티브를 혼합해서 사용되면 하이브리드앱이라 지칭함. 
(자마린이던 ionic 이던 혼합해서 사용하면 하이브리드앱, 근데 ionic 은 그 자체로 섞어 쓰는것이기 때문에 ionic 경우는 하이브리드앱이지만 자마린은 아니라고 주장하는 사람도 상당함) 


두줄정리  

1. 크로스플랫폼 개발향으로 만든 앱을 하이브리드앱이라고 지칭하기도 하며 
2.  웹과 네이티브 기능을 섞어서 만든것을 하이브리드앱이라고도 지칭함.(통상) 



WRITTEN BY
[前草] 이승현 (wowlsh93@gmail.com)
스타코프 (데이터지능플랫폼pd) (관심분야: 에너지IoT, 시계열(NILM) 데이터, 폴리글랏 프로그래밍 )

트랙백  0 , 댓글이 없습니다.
secret

 하이브리드 앱을 만들어보는게 목적으로 매우 심플한 어플리케이션이 될것입니다.


IoT 엣지디바이스가 전기스위치 및 미터기(전력 계량기) 라고 가정하고 ,


1.인증기능   

2. 스위치를 켜고 끄는 기능  (숫자를 입력하여 켜기,  QR 코드를 입력받아서 켜기, 등록된거 선택해서 켜기) 

3. 해당 스위치의 현재 상태 ( 전기의 파워와 미터) 를 디스플레이 하는기능


의 간단한 기능을 가진 하이브리드앱을 만들어 보겠다. 

프런트엔드는 아이오닉 프레임워크를 사용할 예정이며, 백엔드는 Vert.x or Spring 을 사용할 예정이다.


p.s 엣지 디바이스와 진짜 통신이 되기 위해서는  웹서버 -> 디바이스로  연결하게 해도 되고 , 직접  와이파이 다

이렉트 등을 통해 스마트폰 -> 디바이스 이렇게   연결될수도있겠지만~ 하이브리드앱 -> 웹 서버 -> 중계서버 -> 

인텔리전스 서버  -> 집중화서버 -> 컨트롤러 -> 엣지디바이스  이렇게 복잡하게 연결할수도 있겠다.

      

다음과 같은 순서대로 개발하면 될거 같다. 


IONIC 프레임워크 설치

로그인 시스템 만들기  

스위치 켜고 / 끄기

스위치 상태 보여주기

구글/아이폰 마트에 앱 올리기  



WRITTEN BY
[前草] 이승현 (wowlsh93@gmail.com)
스타코프 (데이터지능플랫폼pd) (관심분야: 에너지IoT, 시계열(NILM) 데이터, 폴리글랏 프로그래밍 )

트랙백  0 , 댓글이 없습니다.
secret

스터디를 같이하는 분의 앱 개발시 사용 스킬 리스트 입니다.


번개전단: https://play.google.com/store/apps/details?id=com.ionicframework.epaper126847


빨간색으로 표시된 항목은 중심이 되는 기술들이니 관심있게 보셔야 하고,
기본기가 있어야 앞으로 진행하는데 수월하게 이해할 수 있을 것 입니다.

1. javascript
1.1. 공통
1.2 Server Side
1.3 Client Side

2. Cordova 

3. Android


 폰갭 원리 


WRITTEN BY
[前草] 이승현 (wowlsh93@gmail.com)
스타코프 (데이터지능플랫폼pd) (관심분야: 에너지IoT, 시계열(NILM) 데이터, 폴리글랏 프로그래밍 )

트랙백  0 , 댓글이 없습니다.
secret