
Flutter 소개
Flutter는 앱 개발을 위한 프레임워크이다. 하나의 코드로 iOS, 안드로이드, 웹, 데스크탑에서 모두 동작할 수 있는 어플리케이션을 개발할 수 있는 UI 툴킷이다. 2017년 5월 구글에서 만든 크로스 플랫폼 UI 프레임워크이고, 언어는 구글에서 만든 Dart라는 언어를 사용한다. 특색으로 구글은 Flutter를 이렇게 소개한다. “하나의 코드베이스로 모바일, 웹, 데스크톱에서 네이티브로 컴파일 되는 구글의 아름다운 UI 툴킷” 여기서 아름다운 이라는 단어가 눈에 들어온다. Flutter(플러터)는 실제로 기본 화면 구성이 예쁘다. iOS에서도 동작되서 그런지 기본제공되는 UI템플릿이 안드로이드로 만드는 것보다 예쁘게 보인다. 물론 나의 느낌일 수도 있다.
구글에서 만든 이 새로운 Flutter 라는 UI툴킷의 인기는 React Native를 추월했다. 네이버의 경우 지식인과 블로그 앱을 Flutter로 다시 개발하였다. 그리고 네이버, 카카오 모두 Flutter 라이브러리를 공식적으로 제공하고 있다. 앞으로 회사에서 앱을 개발할 때 Flutter이용하여 개발 할 것이고 결국 이게 대세가 되지 않을까 생각한다.
Flutter의 특징 개요
Flutter가 가진 큰 특징으로는 개발인력 효율화, 타 제품에 비해 빠른성능, 동일한 UI표시가 있다. 크로스 플랫폼 앱개발이기 때문에 개발인력이 줄어든다. 하나의 코드로 iOS, 안드로이드, 웹, 데스크탑에서 동작하는 프로그램을 개발할 수 있다. 그렇기 때문에 여러명의 iOS개발자, 안드로이드 개발자가 따로 필요하지 않아 최소의 인력으로 효율적으로 운영이 가능하다. 크로스 플래폼 툴킷으로 Xamarin, React Native 등이 있다. 이러한 프레임워크는 JavaScript 와 네이티브 간의 브릿지를 통해 동작되기 때문에 성능 이슈가 존재한다. 그러나 Flutter는 Dart 컴파일러를 통해 네이티브 코드로 앱이 구동된다. 그리고 Xamarin, React Native은 플랫폼에 따라서 UI가 조금씩은 다르게 표시가 된다. Flutter는 Skia 엔진을 통해 UI가 그려지면서 동일하게 보여진다. 실제 Flutter로 개발된 앱을 iOS와 안드로이드에서 실행해보면 동일한 모양의 화면이 보여지고 안드로이드의 UI보다 더 예쁘게 보인다.
그 외에 Dart 언어사용, Hot Reload, 위젯 등 다른 특징들이 있다. 이러 자세한 특징들은 다음에 더 자세히 다루어 보고자 한다. 그리고 Flutter의 장점과 단점도 알아보고, React Native와 비교도 해보고자 한다.
나는 왜 Flutter를 사용하려고 하는가?
나는 Android Native 앱 개발업무를 5년 넘게 수행하고 있다. Native Library 를 개발해서 관련 회사에 배포하고 그 회사를 지원하는 업무이다. 옛날에는 안드로이드 개발자가 문의가 오고 지원을 했었는데 2-3년 전부터는 웹 인터페이스 개발자에게 문의가 온다. 모든 앱이 하이브리드로 제작되다 보니 Native는 이제 거의 껍데기이고 안드로이드 개발자는 단지 내가 만든 API를 호출하는 부분만 만들어 놓는다. 그럼 그 위에 JavaScript로 데이터를 받아서 Native를 호출해주기만 하기 때문에, 데이터 설정이나 응답받은 값에 대한 처리를 모두 한명의 웹 인터페이스 담당이 처리를 하게 된 것 이다. 그래서 하이브리드 앱에 대해 공부하고 싶었다.
처음에는 React Native를 생각했으나 내가 개인적으로 만들고자 하는 앱과는 성격이 맞지 않았다. 그래서 찾아보던 중 크로스플랫폼 툴킷은 Flutter를 알게 되었고 Flutter를 이용하여 개인적으로 개발중인 앱에 적용해 보고자 한다. Kotlin 에도 아직 적응 못했는데 Dart는 잘 할 수 있을지 걱정이 앞서기도 하지만 Flutter를 개인적으로 스터디하고 회사 업무에도 적용해 볼 계획으로 사용하기로 마음을 먹었다.