Flutter가 뭔가요?
Flutter(플러터로 읽습니다.)는 구글에서 만든 멀티플랫폼 앱 프레임워크입니다. 멀티플랫폼 앱을 만들 수 있는 방법에는 고전적인 Apache Cordova(JS)부터, 마이크로소프트의 Xamarin(C#), 페이스북의 React Native(JS)까지 다양합니다.
타 프레임워크와 다른 점
플러터의 장점은 네이티브 UI를 직접 그린다는 데 있습니다. 먼저 다른 프레임워크를 간단히 소개하자면:
Cordova
웹뷰 기반의 Cordova는 하이브리드 앱의 가능성을 제시했지만, 태생적 한계로 매우 느린 퍼포먼스를 보입니다.
Xamarin
Xamarin은 C# 기반의 프레임워크입니다. 네이티브 빌드가 가능하기 때문에 높은 성능을 보장하지만, Xamarin은 플랫폼에 따라 여러 가지 버전이 있고 한 벌의 마크업으로 멀티 플랫폼을 지원하는 Xamarin.forms는 복잡한 UI를 구현하는 데 적합하지 않으며, 새로운 OEM 위젯을 사용하기 위해 Xamarin의 지원이 필요합니다. 또 각 플랫폼의 API를 사용하기 위해서 플랫폼 의존 분기 코드를 작성해야 하는 경우가 있습니다.
React Native
React Native는 UI 렌더링에 네이티브 위젯을 사용하지만, 연산은 JS 런타임에 의존합니다. JS와 네이티브 위젯이 통신하기 위해 Bridge를 거칠 때 마다 큰 비용이 듭니다. 또, RN으로 복잡한 인터페이스와 애니메이션을 구성하는 것은 네이티브 앱을 만드는 것보다 괴로울 수 있습니다. 하지만 JIT 컴파일러가 주는 빌드 타임 없는 빠른 개발과 성숙한 생태계는 큰 장점입니다.
Flutter
플러터는 네이티브 위젯을 사용하는 대신, 네이티브 위젯을 흉내 낸 픽셀을 직접 그립니다. 이 방식은 게임 엔진이 픽셀을 렌더링 하는 방식과 비슷합니다. 결과적으로 플러터로 작성한 앱은 대부분의 디바이스에서 60 fps의 성능을 낼 수 있습니다.
현재 플러터가 지원하는 플랫폼은 iOS와 Android입니다. 데스크톱 앱과 웹을 지원할 예정입니다. 재미있는 사실은 웹용 플러터의 렌더링이 Canvas 기반으로 제공된다는 점입니다.
플러터가 빠른 이유 중 하나는 Dart로 작성된 프레임워크기 때문입니다.
Dart
Dart는 구글이 만든 개발 언어입니다. Dart는 한 때 CoffeeScript, Lua, Elixir 등을 제치고 배우지 말아야 할 개발 언어 1위로 꼽혔는데요. Flutter의 등장이 Dart를 살렸습니다. 다시 말하면 Dart를 배워도 Flutter 말고는 할 게 없다는 뜻이며, 또 Flutter만을 위해서 Dart를 배울 가치가 충분하다는 뜻입니다.
Dart는 JIT(just-in-time) 컴파일과 AOT(ahead-of-time) 컴파일을 지원합니다. AOT컴파일러는 Dart 코드를 빠른 Native ARM 코드로 만들어줍니다. JIT 컴파일러는 hot reload를 지원하기 때문에 코드를 수정할 때 마다 앱을 네이티브 코드로 빌드할 필요 없이 변경된 부분을 바로 반영할 수 있어 빠른 앱 개발이 가능합니다.
플러터로 앱 만들기
힐링페이퍼에선 개발자에게 정기적으로 개발 능력을 향상할 수 있는 시간을 제공합니다. 주어진 일주일 동안 플러터로 사내에서 사용하기 위한 앱을 만들었습니다.
<video autoplay="" class="center fr-draggable" loop="" muted="" playsinline="" width="60%">