하이브리드 앱
1. 정의
앱이나 프로그램UI를 좀더 쉽게 만들기 위해서 웹 컴포넌트를 활용하는 방식이다. 기존에는 java, c++, c를 통해 UI를 구현하였으나, 하이브리드 앱을 이용하면 html, css, javascript를 통해서 프로그램 UI를 좀더 수월하게 구현할 수 있다. 그러나 프로그램 자체적으로 웹모듈 라이브러리가 있어야 프로그램이 실행되기 때문에 그것 자체가 프로그램 퍼포먼스에 오버헤드라고 할 수 있겠으나, 현재 자바스크립트 및 웹 모듈 성능이 급격히 좋아지고 있으며, 디바이스 성능도 예전에 비해서 급격하게 좋아지고 있기 때문에 게임 프로그래밍이나 복잡한 연산 프로그램이 아닌 이상 오버헤드 문제는 크게 신경쓰지 않아도 된다.
모바일 앱 방면에서는 플랫폼에 많이 구속받지 않는 방식으로 앱을 만들 수 있다.[1] 그래서 간단하고 빠르게 모바일 앱을 만드는 방법으로 주목받고 있다. 단, 애플 앱스토어 검수시에는 네이티브 기능 없이 웹만 앱 모양으로 감싸서 내면 등록 거부 당한다고 하니 참고할 것.[2]
다만 어차피 UI가 아닌 OS의 API를 활용하는 로직(카메라 사용, 푸시알림 등)은 네이티브로 여전히 짜야 하고, PC버전과는 어쨌든 UI가 분리될 수밖에 없으며[3] 어쨌든 대부분의 경우 IOS 또는 안드로이드 둘 중 하나의 UI셋을 사용하게 되는데 그럼 필연적으로 반대 진영의 사용자에게는 어색하게 된다. [4]
하드웨어,OS 종속이 덜한 기능들(서버통신 등)은 js로 다 짜는 것이 가능하긴 하지만, 어쨌든 네이티브 기능이 있어야 검수가 통과되고..
또한 JS언어 자체가 개선되어가고 있긴 하지만 아직 문제점도 많고 동적 타입, 콜백지옥, IDE의 부재와 자동완성의 미흡, 각종 프레임워크들의 난립 및 춘추전국시대 등으로 인해 여러모로 난해한 언어이기도 하다. 그래서 확실히 로직을 JAVA나 C++로 짜는거보단 JS가 다소 난해해지고 지저분해지는 건 사실이다.
또한 HTML/CSS가 XML보다는 코딩이 편리하지만 요즈음엔 HTML/CSS보다도 편리하게 안드로이드 스튜디오나 그 외의 IDE에서 GUI 방식으로 UI디자인을 할 수 있는 툴을 제공하기 때문에 장점이 많이 희석되기도 했다.
2. 예제
- 센차터치
[1] 웹은 iOS에서든 안드로이드에서든 똑같이 보이는걸 생각하면 쉽다.[2] 앱으로 만들어야 하는 이유가 있어야 한다고.[3] 반응형으로 다 짤수도 있긴 한데 보통 어느 한쪽에서는 UX/UI 최적화를 조금 희생하는 편이고, 단일 레이아웃으로 PC와 모바일 양측에 완벽히 최적화되기에는 한계가 있다.[4] IOS인데 사이드 메뉴나 드랍다운 메뉴가 있다든가, 안드로이드인데 IOS에서 쓰이는 언더바 메뉴가 있다거나[5] 위 정의의 '웹 컴포넌트를 활용하는 방식이다' 에 위배되므로 하이브리드 앱이라고 보기 어렵다. 리액트 네이티브는 html/javascript/css를 파싱해 네이티브 컴포넌트를 만드는 방식이다.