왜 Flutter를 선택했나요?
크로스플랫폼 앱 개발 도구로 React native, Xamarin, Flutter 등의 선택지가 있습니다.
React Native, Flutter 두 개의 프레임워크의 관심도는 서로 비슷합니다.
하지만 Flutter는 출시된 지 얼마 안 된 프레임워크이고, Github star나 구글 검색 순위를 보아 크게 성장하고 있는 기술이라는 점에서 호감을 느꼈습니다.
그리고 저는 Javascript 보다는 C#에 익숙한 개발자인데, Flutter의 Dart언어를 처음 보았을 때 C#과 크게 문법적으로 다른 부분이 없어서 자신감 있게 Flutter를 선택하게 되었습니다.
Flutter, 충분히 성숙한 프레임워크인가요?
개발 언어인 dart와 Flutter 프레임워크 자체는 충분히 성숙했다고 생각합니다. 커뮤니티 측면에서 Stackoverflow에 등록된 react native 질문 수는 약 8만 (reactjs를 포함하면 30만 이상) , Flutter의 질문 수는 약 5만 건 정도로 3만 건의 차이가 납니다.
Dart 언어, 배우기 어려운가요?
언어 자체가 C#, JAVA와 매우 유사해서 배우기 쉽습니다.
거기에 더해 Hot reload 지원, 퍼포먼스(애니메이션), 등 성능, 편의성 측면에서 좋은 부분들이 많이 있습니다.
Dart에 대한 장점은 아래 링크에 잘 정리되어 있습니다.
위 표에서처럼 JAVA와 비교할 때 훨씬 간결하면서 직관적인 코드를 작성할 수 있습니다.
결론은 C#, JAVA 경험이 있다면 배우는데 전혀 어려움이 없는 언어입니다.
Flutter로 개발하면서 좋았던 부분
Google이 공식 지원하는 프레임워크인 만큼 Google 에코시스템과 연동이 잘됩니다. 특히 저는 Notification 기능 때문에 Firebase Cloud message를 꼭 사용해야 했는데, 문서화 및 샘플코드가 굉장히 잘 되어있고, 연동 과정이 굉장히 매끄러워서 구글 측에서 상당히 신경을 많이 썼다는게 느껴졌습니다.
React native와 다르게 Javascript bridge가 없고, Skia rendering engine이 IOS, Android 위에서 UI를 그려주기 때문에 높은 성능을 기반으로 플랫폼 간 완전하게 동일한 UI 개발이 가능합니다. 또 Cupertino, material 두 UI 컴포넌트를 섞을 수도 있습니다.
애니메이션, 화면 라우팅 등에서 느껴지는 체감 성능도 아주 좋았습니다.
Flutter 게임 개발도 가능하다고 하니 일반 어플리케이션의 성능은 말할 것도 없습니다.
Flutter로 개발하면서 안 좋았던 부분
Flutter에는 개발 시간을 획기적으로 줄여줄 수 있는 다양한 플러그인들이 존재합니다. 또 Flutter는 구글에서 공식으로 미는 프레임워크이므로 구글에서 공식으로 Release하는 플러그인들이 다수 있습니다.
구글 공식 플러그인을 사용하면서 크게 문제가 생긴 부분은 없었지만, 버전이 아직 많이 낮아서 사용할 때 불안한 요소가 어느 정도 있다고 생각합니다. 써드파티 플러그인의 경우, 플러그인 마다 완성도가 워낙 천차만별이라 따로 언급은 안 하겠습니다.
만약 Flutter를 사용하실 계획이시라면 필요한 Plugin들의 버전 및 안정도를 미리 확인하시는 게 좋을 것 같습니다.
윈도우에서 IOS 빌드하기 (불가능합니다 ^^;)
저는 맥북이나 아이맥 같이 MAC OS를 구동시킬 수 있는 하드웨어가 없습니다. 외주를 시작한 상황에서 개발비를 받아놓고 “사실 안드로이드만 배포 가능합니다 ^^;” 라고 할 순 없기에 IOS 빌드를 위한 여러 가지 방법들을 찾아봤습니다.
방법 1 — 해킨토시
가장 처음에 시도했던 방법입니다. 하드웨어에 운영체제 올리는것쯤이야 하고 근거없는 자신감으로 호기롭게 도전했지만 결과는..
이틀정도를 개고생하고 결국엔 포기했습니다..
방법2 — 맥을 사자
개인적으로 ios 개발때문에 맥 하드웨어를 사는 돈이 너무 아까웠습니다.
방법3 — 클라우드 서비스 사용하기
사실 mac을 클라우드로 서비스하는 기업이 있는지도 몰랐습니다.
해당 회사로부터 광고를 받지 않았습니다.
이 기업 말고도 몇 군데 있는데, macincloud 가 가장 저렴해서 이 서비스를 선택했습니다.
한 달에 20$ 정도 내고 사용할 수 있는 것과 시간 단위로 1$씩 내는 게 있는데
저는 한달에 20$내고 사용하는걸로 진행했습니다.
필수 소프트웨어(xcode 등)이 모두 설치되어 있어서
바로 작업에 들어갈 수 있습니다.
앱을 실제로 돌려볼 아이폰은
위 사이트를 통해 구할 수 있습니다.
조금 비싸긴 하지만 아이폰을 사지 않아도 실제 IOS 기기에 테스트해볼 수 있습니다.
CI/CD로는
를 추천합니다. Free tier도 부담 없이 쓸 수 있습니다.
대망의 배포
플레이스토어는 사실 큰 걱정은 없습니다.
심사도 잘 통과되고, 스토어에서 개발자에게 요구하는 사항이 별로 없습니다.
하지만 앱스토어는 이야기가 좀 다릅니다.
앱스토어 테스터를 위한 계정을 따로 만들어야 하고, 앱의 세부적인 쓰임들까지 세세하게 써서 제출해야 합니다.
또 하루 한 번 이상의 Feedback은 받을 수 없었습니다.
즉 reject에 대한 수정본을 Push하면 빠르면 다음날, 늦으면 3일 정도 후에 Feedback이 날라 옵니다..
이런 지루한 공방이 4번 정도 왔다 갔다 했을 때 앱 승인을 받을 수 있었습니다.
앱 스토어에 퀄리티 있는 앱들이 많은 게 이런 심사도 한몫하는 것 같습니다.
우여곡절 끝에 배포도 무사히 진행할 수 있었습니다.
결론
Flutter는 빠르고 퀄리티 높은 개발을 위한 훌륭한 도구입니다.
아직 3년 밖에 안된 기술이지만, 구글의 지원 아래서 무섭게 성장하고 있는 기술 중 하나입니다.
실제 상용 제품 개발도 가능할 정도로 안정적이고, 다양한 개발자들이 사용하고 있는 프레임워크입니다.
특히 멀티플랫폼 소프트웨어 프로토타입이나, 소규모 외주 개발할 때 빠른 개발을 할 수 있도록 도와주는 프레임워크라고 생각합니다.
빠른 개발, 강력한 퍼포먼스를 위한 도구를 찾는다면 Flutter를 한번 사용해 보시는 건 어떨까요?