ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [HTML5] 안드로이드, 아이폰 둘 다 지원하는 하이브리드 어플 개발을 위한 얕은 지식! [2/2]
    프로그래밍/HTML | CSS 2020. 1. 10. 22:37



    지난번 포스트에서는 HTML5를 이용한 하이브리드 어플리케이션 개발을 위한 기본적인 지식들에 대해 알아보았습니다. 오늘은 거기에 추가로, 웹기반의 어플리케이션을 양대마켓에 출시하는 방법에 대한 실질적인 정보를 나누어보도록 하겠습니다.

    HTML5 어플리케이션에 대해 지식이 부족하고 이전 포스트를 보지 못하신 분들이라면 꼭 이전 포스트를 읽고 오시는 것을 추천드립니다.


    https://br0maandmadrat.tistory.com/24




    1. 네이티브, 하이브리드 그리고 웹 어플리케이션의 차이를 이해하자.

    시작하기에 앞서 당신은 왜 웹 테크널러지를 이용해서 모바일 어플리케이션을 개발하는지, 그리고 정확히 웹앱, 하이브리드 앱으로 통용되는 어플리케이션, 그리고 표준 네이티브 어플리케이션의 차이를 명확하게 이해해야한다. 시간이 부족한 당신을 위해 사진을 한장 준비해보았다. 부디 이 사진에 포함되지 않은 매우 많은 양의 저옵가 있다는 것을 유념해둘 것이며, 언제나 하이브리드 적인 접근이 능사는 아니다.

    다시한번, 해당 이미지는 하이브리드 어플리케이션 접근의 장점을 부각하기 위해 만들어진 사진이지, 필자가 "봐봐! 하이브리드 어플리케이션이 3가지 모두 가능하다고! 고로, 가능한 최고의 해결책이야!"라고 말하는 것은 아니라는 것을 유념하도록.

    네이티브 어플리케이션이 무엇인지 이해하는 것은 너무나도 쉬운 일이다.(필자가 네이티브, 하이브리드, 웹에 대해 이전 포스트에서부터 언급하고 있지만 이를 모르는 사람도 당연히 있을것이다.) 네이티브 어플리케이션은 해당 플랫폼에 맞춰진 네이티브 언어로 프로그래밍 된 어플리케이션을 의미한다. 이것이 무슨 말이냐, iOS의 경우 Objective-C/SwiftXCode로 개발한 어플리케이션일테고, Android의 경우는 Java/Kotlin을 기반으로 Android Studio로 개발된 어플리케이션일 것이다. 네이티브 어플리케이션은 어떠한 방면에서도 제한없이, 플랫폼이 제공하는 모든 것들에 즉각적인 접속이 가능하다. 이 내막에는 각각의 플랫폼에 맞추어 프로그램을 별도로 제작해야 된다는 의미를 내포한다.

    웹 어플리케이션은 (크롬, 사파리와 같은)브라우저에 의해 작동되는(대부분 인터넷에 의해 로드되는) 어플리케이션이다. 웹 어플리케이션은 일반적으로 HTML, CSS, 그리고 JavaScript로 작성되며 모바일이나 데스크탑에 관계없이 작동된다. 웹 어플리케이션은 일반적으로 네이티브 어플리케이션의 느낌과 동작방식을 따라할 수 있지만, 브라우저를 통해서 작동되어야만 한다. 이러한 접근으로 미루어보았을때, 이것은 당신이 Native Api로 작동되는 기능들, 이를테면 벨소리같은 부분에는 접근이 불가능하다. 그리고 당신은 대부분의 앱 스토어에서 당신의 어플을 배포할 수 없다. 그러나 특수한 패키징을 통해 당신의 어플리케이션을 앱스토어에 출시할 수 있는데 이것이 일반적인 웹 어플리케이션의 배포방식이 되고있다.

    하이브리드 어플리케이션네이티브 개발 접근 방식웹 개발 접근 방식을 적절히 섞은 방법인데, 이 방법은 당신이 한번 어플리케이션을 개발하면 여러 앱스토어에 제출할 수 있는 방식이다. 하이브리드 어플리케이션은 CordovaCapacitor와 같은 당신이 개발한 웹브라우져를 네이티브 어플리케이션으로 패키징하고 웹어플리케이션을 보여주는 네이티브 패키져를 사용한다. 이러한 접근 방식을 통해, 사용자들은 자신이 사용중인 어플리케이션이 브라우저를 통해 실행되고 있지 않은 것처럼 보이게 되는데,(그러므로 그들에게는 일반적인 네이티브 어플리케이션처럼 보이게 될 것이다.) 당신은 Cordova나 Capacitor에서 네이티브 기능에 대한 접근을 갖게 될 것이고, 고로 당신은 드디어 앱스토어를 통해 당신의 어플리케이션을 배포할 수 있을것이다.

    그리고 이쯤되면 매우 당연한 질문 하나가 떠오를 것이다.


    이렇게 하이브리드 어플리케이션이 매우 X나 쩌는데!? 왜 모든 사람들이 사용하지는 않는걸까?

    이 질문에 대한 심도있는 해답을 찾는 것은 매우 엄청난 일일 것이다. 그러니 짧게 말하자면, 네이티브 어플리케이션(이하 네이티브)으로 개발을 하는 것은 가능한 최고 수준의 퍼포먼스와 만듦새를 만들 수 있다. 교섭이라던지 툴, 제한에 얽매일 필요가 없다는 것이다. (물론 제한이 완전히 존재하지 않는것은 아니다. 당연하게도.) 하지만 또다른 많은 경우에는 위에 언급한 내용들에 얽매일 경우 자체가 없는 프로그램도 존재할것이다. 하이브리드와 네이티브, 무엇이 낫다는 것이 아니라 "상황에 맞는" 접근 방식이 존재할 뿐이라는 것이다.

    (중략)

    2. 당신의 어플리케이션을 디자인하라

    특정 접근 방식(네이티브, 하이브리드)을 정하기에 앞서 당신이 필요한 요구사항들을 확실히 정의하고, 당신의 요구사항을 만족시킬 수 있는 접근방식을 찾아라. 만일 당신이 완전히 인터넷상에서만 작동하는, 앱스토어에서 배포되는 프로그램이 아닌 웹 어플리케이션을 개발할 예정이라면, 브라우저가 지원하는 한도 내의 기능에 대해서만 접근이 가능하다.

    만일 당신이 몇개의 네이티브 API에 접근이 필요하거나, 앱스토어에 출시를 해야한다면 하이브리드 접근이 당신에게 최고의 선택지가 될 것이다. 하지만 부디 당신이 원하는 기능들이 Cordova나 Capacitor의 Plugin API가 지원하는지를 체크해보아라.

    당신의 어플리케이션을 디자인할때에도 iOS Human Interface Guidelines라던지 Android Design guidelines를 꼭 참고하여라.


    https://developer.apple.com/design/human-interface-guidelines/ios/overview/themes/








    https://developer.android.com/design/index.html


    위 가이드라인의 몇몇 부분은 네이티브 어플리케이션에만 구체화된것이라는 점, 때문에 너무 큰 걱정을 할 필요는 없다는 점을 유념하도록 하라. 다만 네이티브처럼 보이기 위해 좋은 디자인 원칙들을 따르려고 노력하라.

    당연한 이야기지만 구글 플레이나 앱스토어에 당신의 어플리케이션을 업로드하기 위해서는 각 스토어의 가이드라인을 지켜야한다. 특히나 애플은 검수가 매우 까다로운 것으로 유명하다. 당신의 어플이 수차례, 혹은 수십차례 리젝되는 경험을 하게 될것이다. 애플이 주로 리젝을 하는 몇몇개의 경우가 있는데 계속 당신의 어플리케이션이 리젝된다면 아래의 부분들을 확인해보자.

    - 당신의 어플이 모바일 앱보단 웹페이지처럼 보인다.

    - 온라인/오프라인 상태를 구분하지 않는다.

    - 너무 느리거나 반응형으로 디자인되지 않았다.

    - 네이티브의 기능들을 사용하지 않는 완전히 단순한 웹사이트이다.

    이 이하로 원문의 내용은 구체화된 정보를 담고 있으므로, 실제 제가 개발을 하면서 Ionic이라던지 Cordova와 같은 툴 사용법을 익히고 소개해드리는 포스트로 대체하겠습니다.

    감사합니다.


    댓글

Designed by Tistory.