모바일 어플리케이션 시장, 그리고 Flutter

푸드테크·2022년 5월 5일
2

Flutter

목록 보기
5/6
post-custom-banner

모바일 어플리케이션 시장



모바일 어플리케이션 시장은 IOS와 Android로 나눠집니다. IOS는 Apple이 Android는 Google이 운영하고 있는 모바일 생태계입니다. 일반적으로 스마트폰을 지칭할 때 아이폰, 갤럭시, IOS, Android를 혼합해서 사용합니다. 하지만 사실 이는 정확한 호칭이 아닙니다. IOS와 아이폰, Android와 갤럭시는 운영체제와 스마트폰의 관계이기 때문입니다. 다시 말해 IOS는 Apple이 제조한 기기들을 운영할 수 있는 소프트웨어이며, Android는 삼성이 개발한 갤럭시 기기들을 운영할 수 있는 소프트웨어입니다.

운영체제란(Operating System)?

  • 하드웨어를 관리 및 운영하는 시스템 소프트웨어를 의미합니다.

IOS

IOS의 원래 이름은 iPhone OS였습니다. 그러다가 IPad, Apple TV 등 다양한기기들에서도 iPhone OS를 사용하면서 IOS라는 명칭으로 변경되었습니다. 개발적인 관점에서 IOS는 Apple에서 개발하는 기기들에만 특화된 독점적인 운영체제이기 때문에 다양한 기기들을 고려하지 않는다는 측면에서 소프트웨어 개발 비용을 낮출 수 있다는 장점이 있습니다. 하지만 Apple의 기기들을 제외하고는 개발한 소프트웨어를 사용할 수 없다는 단점이 있습니다.


Android

Android의 가장 큰 특징은 오픈소스 운영체제라는 것입니다. Android는 커널과 SDK(Software Development Kit), IDE(Integrated Development Environmen)까지 무료로 풀려있기 때문에 개발자들에게 다양한 도전의 기회를 제공합니다.

WindowMac
Android StudioOO
XcodeXO
비용XO


아래 링크에서 전세계 스마트폰 시장의 메이커 및 OS 점유율을 확인할 수 있습니다.

https://www.chosun.com/economy/int_economy/2022/01/12/3ETNDWYEFBCBNCIVSWGVGLWZCU/





모바일 어플리케이션(APP)의 개발 방식

APP의 개발 방식은 네이티브(Native), 하이브리드(Hybrid), 크로스 플랫폼(Cross Platform)로 나눌 수 있습니다.

앱 이란?

앱(App)은 어플리케이션(Application)의 약자입니다. 일반적으로 국내에서 앱이라 하면 스마트폰에서 사용할 수 있는 프로그램으로 이해하고 있습니다. 하지만 어플리케이션은 특정한 기능을 수행하도록 설계된 응용프로그램을 의미하지 스마트폰에서만 사용할 수 있는 소프트웨어를 말하는 것이 아닙니다.

  1. 네이티브 앱은 Android Studio와 Xcode를 이용해서 특정 플랫폼만을 타겟으로 개발한 앱을 말합니다. 특정 플랫폼만을 타겟으로 한다는 것은 하나의 코드로 개발한 앱을 특정 플랫폼에서만 출시해서 사용할 수 있다는 것을 의미합니다. Android Studio에서 개발한 Android 앱은 Google의 Play Store에서만 사용 가능하며, Xcode에서 개발한 IOS 앱은 Apple의 App Store에서만 사용할 수 있습니다. 개발 언어로는 Android는 Java와 Kotlin, IOS는 Object-C와 Swift를 사용할 수 있습니다. 현재 추세로는 IOS에서는 Object-C는 거의 사용하지 않고, 대부분 Swift를 사용합니다. Android에서는 아직까지는 Java가 더 많이 사용됩니다. 하지만 Kotlin이 Java와 완벽 호환 가능한 언어이고, Google에서 Kotlin을 사용을 권장하고 있어서 kotlin 사용이 증가하고 있습니다. 구글이 kotlin을 권장하는 이유로는 언어의 간결성, 구글과 오라클의 자바 소송 등 여러가지 이유가 있습니다.

  2. 하이브리드 앱은 네이티브 앱과 웹을 합친 방식입니다. 네이티브 앱이라는 형태는 갖추고 있지만 그 안의 내용물은 웹사이트라고 생각하면 됩니다. 단일 코드이며 즉각적으로 변경이 가능하다는 장점이 있습니다. 하지만 성능 측면에서는 다른 방식에 비해 부족한 모습을 보입니다. 또한 카메라, 위치추적 같은 기기에 내장된 기능들을 사용하기 위해서는 네이티브 코드로 개발을 해야합니다.

  3. 크로스 플랫폼 앱은 단일 코드로 다양한 플랫폼들에서 사용 가능한 어플리케이션을 만들 수 있습니다. Flutter, React-Native, Xamarin 등을 이용해서 만들 수 있습니다. Flutter는 구글, React-Native는 Facebook/Meta에서 개발했습니다. 크로스 플랫폼 또한 네이티브 코드로 개발을 진행해야 하는 경우들이 있습니다. Flutter와 RN의 코드로 구현하기 어렵거나 기능이 불안정한 경우들이 있기 때문입니다.



위에서 설명한 3가지 개발 형태를 아래 표에서 간략하게 비교했습니다. 이해를 위해 항목별로 상중하로 구분했지만 이것이 모든 기능에 절대적인 지표를 의미하지는 않습니다.
개발툴네이티브하이브리드크로스플랫폼
개발비용
성능
기기의 사용성





Flutter, 모든 화면에서 아름다운 앱


Flutter가 추구하는 방향은 하나의 코드로 작성한 어플리케이션을 화면이 있는 여러 플랫폼에 제공하는 것입니다. 예를 들어 Flutter 단일 코드로 개발한 어플리케이션을 모바일, 웹, desktop, 임베디드 기기에 제공할 수 있습니다. 그런데 현실적으로는 각 플랫폼 별 UI의 특성을 고려해야 하기 때문에 모든 플랫폼들을 하나의 어플리케이션으로 커버하기에는 어려움이 있습니다. 아래 그림들을 통해 Native, React-Native, Flutter의 렌더링 방식을 비교해보겠습니다.

Native

React-Native

Flutter

위의 그림에서 가장 큰 차이는 OEM Widgets과 Bridge입니다. 네이티브 앱과 리액트네이티브 앱에서는 OEM Widgets을 이용해서 화면을 그리고 있습니다. Widget이란 화면을 그리는 하나의 단위이며 각기 플랫폼에는 사용할 수 있는 Widget들이 정의돼 있습니다. 그런데 Flutter는 각 플랫폼의 widget들을 거치지 않습니다. Flutter가 사용하는 skia엔진은 각 스크린의 픽셀들을 완전히 제어할 수 있기 때문에 픽셀 단위로 렌더링을 할 수 있기 때문입니다. 이러한 특징 때문에 flutter가 하이브리드 앱이나 React-Navie보다 뛰어난 성능을 보일 수 있습니다.





profile
푸드 테크 기술 블로그
post-custom-banner

0개의 댓글