본문 바로가기

안드로이드

안드로이드 개발만 진행하던 사람의 Flutter 사용 후기

개요

2019년 6월부터 줄곧 안드로이드 개발만 진행해왔다. 처음엔 꽤 어려웠지만 이제는 어느 정도 적응해서 쉬운 구현사항에 대해서는 무리가 없다. 한쪽 플랫폼에서만 개발하다보니 자연스럽게 ios 개발도 하고 싶어졌다. 그 선택지는 ios 네이티브 앱 개발과 크로스 플랫폼 개발 두 가지로 나누어진다. 이 선택 과정에서 접근성과 호환성이 좋은 크로스 플랫폼 앱 개발을 시도해보는 것을 선택했다. React Native, Xamarin, Flutter 등 다양한 크로스 플랫폼 프레임워크가 존재하지만 그 중에서 Flutter를 선택했다.  이유는 간단하다. React Native 소스 코드를 접할 기회가 잦았는데 코드를 이해하기 매우 어려웠다. 그리고, 라이브러리 의존도가 높아 꽤 불안정해 보였다.

 

1. 플러터의 특징 및 장점

플러터는 모든 컴포넌트가 widget 단위이며 widget은 StatelessWidget과 StatefulWidget으로 나뉜다. Widget 내부의 데이터가 변경되는 Widget은  StatefulWidget을 사용하여 setState() 메서드를 통해 상태 변화를 알린다. 이러한 개념은 기존에 내가 개발해오던 패러다임과 달라 특이하여 적응하기 어려워 보인다.

 

플러터는 dart를 사용한다. dart는 Java와 매우 유사하여 적응하기 매우 쉬웠다. 거의 80%는 같은 느낌이다. 

 

플러터는 hot reload를 지원한다. 이 점은 안드로이드 네이티브 개발만 해오던 나에게는 정말 강력한 장점이다. 이 점 하나만 봐도 매우 많은 단점을 커버할 수 있을 정도이다.

 

그리고, 생각보다 레퍼런스가 많다고 느꼈다. 물론 세부적인 구현으로 들어가면 정보를 찾기 매우 어려울 것이라고 생각한다.

 

2. 단점

플러터는 네이티브에 비해 성능이 낮다. 이 부분에 대해서는 아직 체감을 하지 못했다. 무거운 앱을 만든게 아닌 간단한 샘플 앱을 만든터라 체감하기 부족하다.

 

명령형 개발 방식에 익숙한 사람은 선언형 UI를 가진 Flutter가 낯설다. 이렇게 설명했지만 최근 UI 개발 방식이 대부분 선언형 UI로 넘어가는 추세로 알고 있다. 안드로이드도 Jetpack compose라는 방식을 도입했고, ios에서도 SwiftUI라는 것이 등장했다고 알고 있다. 이에 따라 개발자들은 선언형 UI의 적응이 필요해보인다.

 

 

정리

이번에 잠깐 다시 새로운 프레임워크를 배우면서 몇 가지 느낀점이 있다. 새로운 프레임워크를 배우는건 매우 낯설지만 꽤 재미있는 일이다. 기존 안드로이드 개발만 해와서 지루하던 참인데 꽤 신선한 경험이었다. 이제 취업을 준비해야하는 4학년에 들어서는데 올 겨울방학 마지막 프로젝트는 Flutter를 활용해보려 한다. 앞으로 평탄한 취업 과정을 밟기 위해서는 새로운 것을 마음껏 배우기에는 지금이 마지막일 것이다.