저도 웹앱, 하이브리드앱 도구인 PhoneGap으로 실제로 실무에서 사용해 보면 뭔가 이상하다 싶고 결국에는 시스템을 제어하려면 Native쪽을 처리를 해주어야 되고 제약도 많고 레퍼런스도 없어서 개발할때 정말 애 먹었습니다. 아래 글은 너무나 공감이 가서 공유합니다.
제가 이렇게 공유하는 이유는 하이브리드앱 의도 자체는 정말 좋습니다. 폰갭은 HTML5, JavaScrit, CSS 자마린은 C# 등으로 상위언어(비교적 쉬운언어)로 안드로이드, 아이폰 앱을 동시에 만들어 낸다는 컨셉인데 개인적으로 저의 프로그래밍 경험과 상식으로는 이런게 나올수가 없다고 봅니다.
폰갭으로 예를 들면 HTML5, JavaScript, CSS 로 UI와 전반적인 앱을 만듭니다. 그리고 시스템 관련 제어를 할려면 Native로 안드로이드, 아이폰의 모듈을 작성해 주어야합니다. 결론적으로 퍼온글 말미에도 언급이 되었지만 결국에는 네이티브쪽의 안드로이드, 아이폰의 개발 경험한 사람이 그 모듈을 만들어 주어야합니다. 그러니 폰갭을 할려면 폰갭의 구조와 네이티브 쪽의 안드로이드, 아이폰도 다 알아야 한다는 것입니다. 폰갭 관련해서 자료도 별로 없었고 샘플 소스 조차도 없어서 굉장히 힘들게 개발을 했던 기억이 나네요. 그때 아예 네이티브로 개발하는게 속편하지 괜히 뭐 하는짓인지란 생각이 들더군요.
이런 실제 속사정을 모르고 자금력이 여유가 없는 스타트업이나 벤처회사들에서는 무조건 하이브리드앱을 맹신하는 결과가 나온것 같습니다.
개인적인 생각은 이런 하이브리드앱의 개발방식은 벤더사(구글,애플)와의 긴밀한 협조 없이는 상식적으로 불가능하며 너무 많은 개발방식으로 인해서 개발환경에 파편화가 일어나서 실무에 작업하는 개발자들만 힘들게 하는거 같습니다. 애초에 이런 하이브리드앱 개발도구들의 컨셉이 맞는 100% 원소스 크로스플랫폼 개발도구가 나오지 않은 이상은 개발방식의 파편화만 초래 할 것같습니다.이러한 개발 방식은 이제 좀 지양이 되었으면 하는 바램에서 아래 퍼온글을 공유합니다. 만약에 진정한 100% 원소스 크로스플랫폼 개발도구가 나온다면 대환영입니다. 하지만 현재는 그렇지 않고 결국에는 프로젝트 진행 어느정도 진행된 상태에서 필연적으로 네이티브 해야하는 상황인데 이런상황은 체크해 보지 않고 무조건적인 원소스 크로스플랫폼이란 말만 믿고 프로젝트 진행이나 외주 맡기려하는 대표님 임원분들에게 저의 경험담과 아래의 경험담을 공유 하고 싶습니다.
출처 : http://blog.naver.com/synchrog/220196854844
(퍼온글 입니다)
초딩때부터 대학시절까지 내 모든것이 였던 개발자.
2002년 월드컵을 기점으로 개발자를 포기하고 모터스포츠로 넘어가 개발에 개자도 쳐다도 안보다가 필요에 의해서 다시 DEV LIFE를 시작했다. 정확히 말하면 2013년 9월 부터다.
난 천재이기 때문에 다 할줄아는게 좋다. 이왕 할꺼 재대로 만능으로 가자 싶어서 데스크톱에서 스마트폰, 웹에 이르기까지 소비자들과 맞닿아 있는 모든 영역을 다 섭렵하고 싶었다. 과욕이 아니라고 생각 했었(?)던 이유는 역시 IT업계엔 대천재들이 상주하고 있거니와 이들은 온갖 종류의 코스트를 극단적으로 줄일 수 있는 통합 솔루션을 양산(?)해 내고 있었다.
모르는 사람들을 위해 약간의 설명을 하자면, 기본적으로 프로그래밍을 하려면 C라는 가장 유명한 언어를 공부한뒤에, 각각 영역에 맞는 언어를 하나 하나 다시 공부해야한다. 집이나 사무실에 있는 데스크톱 컴퓨터에서 돌아가는 프로그램을 만들고 싶을 때, 아이폰용 앱을 만들고 싶을 때, 안드로이드용, 맥용등등 모두 다 다른 언어를 쓴다. 심지어 지금 이 글을 읽고 있는 '웹사이트'를 만드는 언어만도 3가지 이상의 언어로 만들어졌다.(HTML,CSS,JAVASCRIPT등 - 거기에 서버쪽 언어는 또 별도다.)
참고로 본좌가 싱크로지닷컴을 만드는데 사용된 언어만 HTML5, CSS, JAVASCRIPT, PHP, mySQL정도이며 여기에 이 언어들을 다루는 툴 사용법은 또 별도.그래서 MS에서 나오는 PPT나 워드, 그리고 adobe에서 나오는 포토샵이니 일러니 하는 '툴'같은건 기본적으로 다 공부해두라고 늘 강조하는것
아무튼 요는 학습하는 시간을 줄여보고자 했던게 그간의 가장 큰 이슈였다.언어는 계속 바뀌고 업그레이드되며 새언어가 나오면 또 공부하는게 싫었고(하지만 숙명이다) 뭔가 지금 당장 만들고 싶은게 생겼을때 만들 수 있는 능력을 갖추고 싶었다. 웹은 이제 그게된다. 상상하면 바로 만들 수 있다. 뭐든지. 그런데 스마트폰 앱만큼은 그게 안된다. 온갖 종류의 꼼수를 다 찾아봤고 위에 나열된 웹사이트를 만드는 언어들만으로도 만드는 기술을 찾기까지 했다. 그런 기술이 있다 실제로! 그러나 이제 모든 것을 알아버렸으니 뒷사람을 위해서 정리해준다. -심지어 이 글을 쓰기 6시간전에 나는 아마존에서 전설의 찰스 페졸드가 쓴 자마린 책을 구입해 읽었다!
*이제부터 개발을 모르는 사람은 못알아 들을태니 위 결론만으로 더는 읽을 필요 없다.(하지만 내가 글을 워낙 재밌게 쓰니 읽어 보고 싶을껄!)
*아래 정리는 윈스마츠닷컴이라는 해외 블로거가 잘 정리해 준것을 내 경험을 양념쳐서 정리했다.
먼저 HTML5
1. 웹사이트를 만드는 마크업 언어로써 가장 쉽고 대부분 언어인줄 모르고 많이들 쓴다. 가령 <img src ="쑹님천재.jpg"> 이런거나 유투브나 비메오 링크 딸때 <iframe 어쩌구>하는 그런걸 말한다. 암튼 이것만으로는 스마트폰 앱이라 불리울 수 도 없고 싸파리나 인터넷접속후 웹앱정도로 보는(웹사이트인데 앱처럼 작동되는) 수준밖에 안된다.
2. 푸쉬알람기능이 불가능하다. 연출이 네이티브 앱처럼 가능하긴한데 뭔가! 네이티브 같은 느낌은 절대 구현할 수 없다.
3. 웹사이트 개발 레벨이기 때문에 한번 만들어 놓으면 어떤 스마트폰에서도 똑같이 보인다.특별한 타겟팅 재개발 따윈 필요치 않다.
4. 안드로이드의 경우엔 덜한데 iOS의 경우 업데이트될 때마다 개병신 처럼 보일 수 있다.
5. 어쨋든 이건 "앱"이라고 불리울 수 없다. (일반인들에게)
다음은 HTML5를 진짜 앱처럼 만들어주는 Phonegap - 처음 나의 시도는 이녀석이였다.
1. HTML로 한번만 만들면 진짜 앱으로 토출되긴 하나 애플 앱스토어에 올리려고 하면 빠꾸먹는 일이 비일비재.
2. 앱 입장에서 볼 때는 외부 서버와의 통신이 원활하다. 웹사이트와 서버 간의 데이터 송수신만 할줄알면 간단히 끝.
3. 문제는 서버사이드쪽 개발이 복잡해진다는거.
4. 게다가 웹사이트 개발언어로만 스마트폰 네이티브(틱한)앱을 만들고자 한게 이 방법의 취지임에도 불구하고!!! 결국에는 약간의 네이티브 언어를 추가해야하는 경우가 생긴덴다.
5. 네이티브앱에 비해서 무거워지지만 들어가는 시간과 비용대비 비교할 수 없는 장점이지.
6. 사후 관리(업데이트등)가 힘들어지고 파이날 퀄리티가 네이티브에 비해 떨어지는 것 역시 부정할 수 없다.
Unity3D 유니티... -_-;;
1.게임을 만드는 툴이다. 그러나 이걸로 게임만들 생각은 없었으며 앱을만들고자 했다. 그 이유는 이거 하나면 자바스크립트 하나로 모든 환경에서 돌아가는 앱을 만들 수 있다 생각했으니까.
2. 하지만 현실적으로 기능에 비해 와이파이 연결설정이 되어 있지 않은 곳에서 다운받을 수 없는 크기의 앱이 토출되는 문제가 발생.(엄청 커진다!)
3. 기능에 비해 로딩이 생기고 느려진다.(게임기능이 없는데 해당 라이브러리나 최소 필수 컴포넌트는 들어가기 때문)
4. 결국 이러다 게임을 만들겠다 싶어서 잠깐 게임 기획을 했으나 1인 스튜디오로 경제적 승산이 없다 판단. 모터스포츠 보다 많이 벌 확률이 적어서 Drop!
그러다 발견하여 요 몇일 매드니스였던 Xamarin
1. 비주얼 스튜디오 처럼 잘만들어진 개발환경도 있고 C#하나만 알면 아웃풋도 진짜 네이티브 앱이 나온다.그러나 아직 완벽하다고 볼 수 없는 이유가 실제로 아웃풋을 만나보면 용량도 커지고 실제 네이티브 앱같은 느낌이 나지 않는다. 자원관리나 디바이스에 대한 접근에 대한 문제 역시 제한적이라 좀 더 기다려봐야 할 솔루션.
2. iOS를 개발하려면 결국엔 mac을 사야하는건 마찬가지(뭐 나는 세 대나 있으니 문제 없지만)
3. 자마린의 가장 큰 문제라고 지적 당하는게, 자마린 내에서는 코드의 재사용성이 훌륭하지만 자마린 안에서만 통용되는 말이라고 한다. 즉, 그 코드가 외부 솔루션에는 아예 쓸모 없은 코드가 되어버림.(기본적으로 C#이다. 자바도 아니고)
4. 그 결과, 구글등에 소스가 별로 없다. 사실 이게 내가 자마린을 버린 가장 큰 이유. 개발자는 자고로 구글에서 모든 정보를 얻고 개발 테크닉을 배우게되는데 구글에서 뭐하나 찾는데 시간이 걸린다면 그것만큼 해비 코스트가 없다. 이것은 스스로 책보고 공부한다고 해결될 문제가 아닌 문제다.
5. 또한가지 자마린이 망작느낌이 나는 이유는 이 마져도 결국엔 안드로이드 개발언어인 JAVA와 아이폰 개발 언어인 오브젝트C를 알아야한다는 것이다. (-_-....)
6. 추가적인 단점은 이 솔루션은 월단위 돈이 나가며 비싸다.
자 이제 마지막으로 네이티브 앱.
1. 개발비용은 애플은 라이센스 비용만 1년에 12만원 정도, 안드로이드는 돈이 안들고 마이크로소프트는 (개발할 일이 있을까 싶지만) 정식으로 돈 다주고 사면 뼛속까지 빨아먹는 구조라고 한다.
2. 각자의 언어들에 최고의 지원을 하는 편. 아이폰 개발하고자 하는 사람들에게 주어지는 툴과 그 언어에 대한 지원, 마이크로소프트도 마찬가지로 비주얼 스튜디오와 개발지원등. 즉, 상식적으로 아는 그 앱을 만들 수 있다. 단, "그 플랫폼 안에서만 구동되는"이란 조건 하에.
3. 상호간 언어적 호환성이 거의 없기 때문에 똑같은 앱을 만들어도 아이폰,안드로이드는 완전히 다시 만드는 수준이 될 수 밖에 없다.호환이 되는건 객체지향언어라는 개념뿐.
4. 각각 지역구에는 구글등에 엄청나게 많은 셈플과 자료들이 존재하고 다만들어진 앱의 완성도는 그야말로 "네이티브"이기 때문에 두말할 여지가 없다.
결론이 뭐냐면.
결국 모두 다 공부해야한다. 꼼수 부리지마라.
...
..
.
라고 결론 내긴 좀 아쉬우니까 평을 좀 하자면...안드 VS iOS 판세를 보면 향후 5년 이내에 둘 중 하나가 무너질 가능성은 제로다. 더욱이 이 둘을 통합할 가능성은 더더욱 없으며 특히 (내 생각에) 애플쪽이 더 외딴 섬으로 노를 저을 가능성이 높다. 심지어 자기네 개발언어였던 오브젝트C까지 집어 치우고 이번에 새로운 언어를 또 출시했을 정도니까. 보안적인 문제나 앞으로 스마트폰이 항상 이모양대로 갈 가능성도 크지 않기 때문에 결국 한 가지 접근법으로 서로 다른 모양의 디바이스를 제어한다는것은 솔직히 쉽지 않은 시도라고 본다. (물론 나는 그것을 이세상의 IT 대천재들께서 해결해주실꺼라 믿었다 씨팔놈들아 배신자들) 최소한 자바스크립트 하나로 지구정복이 가능할꺼라 믿는 나의 신념은 조금 약해졌을 뿐이다........(....) 앱 개발비가 나름 그래도 안드 아이폰 각각 수천만원 단위인게 이해가 간다.
또는 좀 덜 완벽한 앱을 만드는건 어떤가 싶기도한데, 뭔가 대단하지 않아서 싫다. 이 세상에 없는걸 만드는데 버그는 인정해도 대단한 느낌이 없는건 별로야. 지구를 정복한 윈도우도 블루스크린이 뜨는것을 막을 순 없지 않았던가. 어쨋든 단일 언어로 모든 것을 개발할 수 있다는 것이 헛된 꿈이라는것을 알기 까지 1년이 걸렸다.
'모과이 > 스크랩' 카테고리의 다른 글
[번역] 좋은 코딩을 위한 13 가지 간단한 규칙 (0) | 2017.04.03 |
---|---|
IIS 계정 추가 (0) | 2015.10.24 |
SVN보다 Git가 더 좋을까? (0) | 2015.08.03 |
소스분석 방법 (0) | 2014.12.31 |
각종 오픈소스 제약사항 관련 (0) | 2014.10.12 |