오늘 결정한다는 생각으로 이야기해보자.
- 개발 팀원 충원에 영향.
- 개발 팀원들의 커리어에 영향.
- 앱 개발 공부 및 개발 계획을 세워야 한다.
- 한 번 결정한 후, 다시 바꾸기에는 기회비용이 크다.
가장 중요한 고려사항, 개발언어 Javascript vs Dart
Javascript
구조적으로 훌륭한 언어들이 대단히 많다. 그럼에도 TIOBE Index에서는 왜 아직 Java, C/C++, Python, Javascript는 최고의 자리에 있는지 생각해 볼 필요가 있다.
첫째, 엄청난 오픈 소스 라이브러리가 있다.
둘째, 사용자가 많아 다양한 문제 해결을 위한 컨텐츠가 있다(블로그, stackoverflow).
셋째, 느리긴 하지만 계속 최신기술을 적용해 발전하고 있다.
이러한 이유로 개발자가 늘어나고 다시 오픈 소스 라이브러리가 늘어난다.
Javascript의 알고리즘 코드 같은 경우는 back-end, front-end, react-native에 변경없이 적용 가능하다. 아직은 Dart가 넘볼 수 있는 수준이 아니다. Dart 뿐만 아니라 수 많은 훌륭한 언어가 이러한 인프라 때문에 고전을 면치 못하고 있다.
거기다 Javascript를 익히면, Front-end 뿐만 아니라 node.js를 이용해 Back-end도 개발이 가능하다. 다양한 분야로 자신의 커리어를 확장 할 수 있다. 더 놀라운 것은 우리회사도 그랬지만, React.js로 개발한 코드를 React Native로 거의 변경없이 사용할 수가 있다는 것이다. (우리는 Redux-Saga 코드를 거의 그대로 사용했다.)
Dart
Dart가 최악의 언어로 선정된[2] 이유에는 (Flutter를 제외하고) 직장을 구하기에 어려운 개발언어로 평가되기 때문이다.
Flutter를 보면서 구글의 Angular가 떠올랐다. AngularJS에서 Angular 2로 넘어가면서 많은 개발자들이 사용하는 것을 꺼렸던 이유가 바로 TypeScript 때문이었다. TypeScript가 훌륭한 언어이지만 새로운 언어를 배우라고 강요하는건 큰 부담이다. 개발자들을 고려하지 않는 구글의 자존심이 보인다고 할까. (우리회사도 이 때문에 AngularJS에서 React.JS로 넘어왔다.)
React Native
Flutter
Dart라는 개발언어를 사용한다.
첫째, Dart라는 개발언어를 사용한다. 구글이 2011년에 공개한 언어로 자랑을 많이 했지만, 코드멘토에서 2018년 배워야할 최악의 언어 1위로 선정됐다[2]. Flutter 공식 발표 이전에 작성된 것이라고 언급했지만, Flutter 말고는 Dart라는 언어에 비전은 아직까지 없어보인다. 참고로 TIOBE Index에서도 Flutter를 발표한 현재에도 23위를 기록 중이다.
성능이 빠르다.
둘째, 성능이 빠르다. 애니메이션 속도가 60프레임은 가뿐히 넘어선다. Flutter가 React Native를 비교하는 많은 글들에서 가장 장점으로 내세우는 부분이기도 하다[5, 6, 10, 11, 17, 18, 19]. React Native가 자바스크립트로 네이티브와 브릿지를 통해 통신한다면, Flutter는 직접 컴파일되서 Render를 직접하기 때문이다. 뒤에 언급하겠지만 이것이 장점일 수도 있지만 내가 Flutter를 선택하지 않은 결정적 이유이기도 하다.
Flutter의 핵심 구조 중 하나는 Dart가 직접 컴파일되며, 네이티브의 랜더러를 이용해 직접 그린다는 점이라 생각한다. 쉽게 이야기하면, 버튼도 네이티브에서 제공하는 것이 아닌 자신들이 직접 그리고 이벤트를 처리해주겠다는 것이다. 이렇게 하면 여기서 말한대로 구버전 OS에서도 다른 플랫폼에서도 동일한 화면이 그려질 것이다. 게임처럼 UI적인 처리속도도 당연히 빠를 것이다.
구글이 끝내주는 위젯들을 제공한다.
셋째, 구글이 끝내주는 위젯들을 제공한다. Flutter 공식 사이트의 데모 앱을 보면 애니메이션이 참 화려하다. Material UI를 훌륭하게 담아낸 것으로 보인다. [6]에서 Flutter가 OEM 네이티브 위젯을 사용하지 않아 새로운 위젯을 담은 iOS나 안드로이드 버전이 나오면 이를 서포트 하는데 오래걸리지 않겠느냐는 걱정이 나온다. 이에 대한 답변으로 구글이므로 금방 따라잡을 수 있고, 직접 커스터마이즈 할 수 있기 때문에 문제가 없다고 말한다. 나는 이것이 대단히 위험한 내용 같다는 생각이 들었다. 구글이 제공하는 수준의 위젯을 만들 정도의 공수를 투입하려고 Flutter를 사용하는 것이 아니기 때문이다. 너무 구글 의존적일 수 있다.
잘 정리된 문서를 제공한다
넷째, 잘 정리된 문서를 제공한다. 솔직히 MSDN를 능가하는 문서를 보지 못했기 때문에, 내 눈에는 React Native나 Flutter나 거기서 거기 같지만, 많은 비교글에서 React Native보다는 훨씬 좋다는 평가를 받고 있다.