⭐ Flutter Github star 100k 달성 ⭐
Flutter(이하 플러터라고 하겠습니다)가 9/3일 부로 하이브리드 앱 최초로 Github star 수가 100k를 넘은 프로젝트가 되었습니다. React-native 를 앞지른 지 얼마 안되어 100k도 뚫어버리네요.
🙋 이게 의미하는게 뭔가요? 🙋
전체 Github 프로젝트중에 17위 입니다. 1위가 314k 인데 이건 그냥 튜토리얼 모음이군요. 그 위에 있는 프로젝트는 vue (171k, 3위), react (155k, 5위) 가 있네요. Vue 는 중국에서 인기가 좋다고 하죠? 여튼 하이브리드앱으로써는 최초군요.
🙋 플러터는 좋은가요? 🙋
제가 플러터를 제대로 쓰기 시작한게 2018년 12월 4일 1.0이 릴리즈 된 시점부터니까 거의 2년이 다 되어가네요. 회사에서 업무적으로도, 개인적으로도 계속 사용해 왔고 최근에는 사내 프로젝트 때문에 React native 도 6개월정도 사용해 봤습니다.
플러터는 분명 단점도 존재하고 라이브러리도 상당히 부족한데다가 하드웨어 연동으로 가면 네이티브를 직접 구현해야 하는 경우도 React native 와 크게 다르지 않죠. 또한 Skia Engine 을 써서 Dart VM 위에 직접 그리는 만큼 속도저하도 종종 있구요.
🙋 별로라는 이야기인가요? 🙋
아뇨. 위의 단점을 상쇄하고 날 만큼 큰 장점이 있습니다. 그건 바로 “모든 UI는 Skia Engine 위에서 그려진다” 라는 겁니다. 물론 아주 일부 native ui 를 import 할 수도 있지만 기본은 이겁니다. 이 장점으로 인해 우리는 (원한다면) iOS 와 Android 에서 완벽하게 같은 화면을 볼 수 있고 심지어 웹 또한 그렇습니다.
지금은 속도가 느리다고요? 플러터는 모든 UI 를 60fps 로 돌리는 작업에 가장 높은 우선순위를 부여합니다. 실제로 플러터 유닛테스트를 보면 퍼포먼스 테스트가 상당히 많습니다. 또한 이는 계속 향상되고 있죠. 하드웨어가 좋아지고 있는건 덤이구요.
🙋 UI 만 좋은가요? 🙋
네이티브를 양쪽으로 개발하는 것과 비교하면 생산성이 2.5배 정도 납니다. 즉, 하나를 개발하더라도 플러터가 낫다는 거죠. 그건 바로 Material design 위에 완벽하게 연동되어 있는 모든 라이브러리와 위젯들 덕분입니다. Theme 으로 제어하는 UI 는 지저분한 css 로 대표되는 react-native 와는 대조되죠.
또한 플러터는 기본적인 것들이 언어 차원에서 지원됩니다. (Extension 같은 것들) 불완전한 JavaScript 를 어떻게든 써 보겠다고 TypeScript 에서 tsc 를 쓰고 babel 을 쓰고 webpack 에 ts-node 까지 어휴...그런 문제는 애초에 없죠. Hot reload 는 요즘 기본이니 넘어갑시다. (Swift UI 도 이건 됩니다.)
🙋 만능이라는 이야기군요? 🙋
아닙니다. 대표적으로 웹뷰 지원이 몹시 부실하고요. (Flickering 버그와 freezing 버그가 있습니다.) 웹은 아직 베타입니다. 속도는 가끔 알수없이 느려지고, 심지어는 아예 폰을 재부팅 시키는 적도 있습니다. (경험담)
모던 랭귀지들에 다 있는 optional 도 아직 없고요. 가야할 길이 구만리입니다. (이건 dart 쪽에서 열심히 구현중입니다.)
🙋 언제 써야 하나요? 🙋
내가 어떤 프로덕트를 만들고 있는지를 잘 알아야 플러터가 그에 꼭 맞는 옷인지를 알 수 있습니다.
- 화려한 그래픽과 즉각적인 응답속도가 중요한 게임을 만들어야 한다면 플러터를 쓰지 않겠죠.
- 웹 프로젝트를 한다? 그러면 고민하지 않고 react 에서 hook 을 열심히 사용하겠습니다.
- 머신러닝이나 비디오 프로세싱등 고차원의 연산이 필요한 경우, 좋은 라이브러리들이 잘 구현되어 있는 네이티브를 최대한 이용할 겁니다.
하지만 적절한 애니메이션과 기민한 반응, 그리고 생산성, iOS 와 Android 를 동시에 출시해야 하는 요구조건이라면 저는 플러터를 쓰는 것에 한 표 던지겠습니다.
만능은 아니지만 꽤 좋은 도구인 플러터. 아직 안 써보셨다면 지금이라도 늦지 않았습니다. 프로젝트에 도입을 검토해 봄이 어떨까요?