Flutter 사용기

Posted by 엘키의 주절 주절 on February 26, 2023

개요

가장 전문적인 나의 포지션은 백엔드 개발자이지만, 나는 꽤 오래 전부터 분야를 가리지 않고 배우고, 사용하고, 적응하려 해왔다.

원래 게임 프로그래머를 지망하면서 클라이언트로 커리어를 시작했기에, Direct-X를 쓸 줄 알았지만, 이후에도 필요에 따라 호기심에 따라 Vue.js, Ruby on Rails, Unity3D같은 최근 기술은 물론, DJGPP Allegro, SDL, Ogre3D, BGI, Qt, MFC 등과 같은 각종 잡다한 GUI 혹은 게임 엔진 등을 실험하고 사용해왔다.

애초에 성향이 다양한 시도나 학습을 좋아하고, 그에 따른 인사이트를 얻는 것을 좋아하다보니, 현재 팀에서도 내가 사용해봤거나 익숙하지 않은 스택인 Flutter에 관심이 갔다.

물론 팀적인 상황적으로도 내가 Flutter를 배워두면 유용한 상황이 많을 상황이기도 했다.


Flutter의 장점

지원되는 플랫폼이 아주 많다.

특화 코딩, 특정 플랫폼 종속적인 처리 등이 지원되는 패키지가 없는 경우는 당연히 많지만, 그를 감안해도 범용적인 기능은 활용도가 높다.

패키지 배포, 추가가 너무 쉽다.

물론 nuget도, maven, npm도 어렵다고 보긴 힘들지만, Flutter는 조금 더 심플하고 쉽다.

생각보다 Dart 언어의 표현력이 좋다.

C#이나 Kotlin같은 강타입 언어 들 중 표현력이 좋은 언어들과 비교해도 좋다.

extensions도 있고, Nullable도 직관적이고 현대 언어의 냄새가 물씬 난다.

Flutter의 단점

패키지가 조금 부족하다.

원하는 패키지가 아쉬운 점이 존재한다.

특정 플랫폼에 대한 지원이 안되는 기능이나 패키지가 있다.

아무래도 플랫폼 지원 범위가 워낙 크다보니 어쩔 수 없는 듯?

레퍼런스가 조금 적다.

물론 커지는 중인 것 같은데, 레퍼런스가 많지 않고 국내에서의 모바일 앱도 Flutter보다는 React Native나, Kotlin, Swift 등으로 구현하는 사람이 더 많은 듯하다.

니콜라스나 코딩 애플에서 많이 언급하는 것 같은데, 실제 써먹을 만한 튜토리얼이나 가이드는 해외 유튜브나 강의가 비율이 더 높은 편

생각보다 손이 많이 가는 구조

멀티 플랫폼 지원의 장점을 제외하면, 생산성이 아주 높다고 보긴 어렵긴했다.

Widget 기반의 구조가 편하면서도, 은근히 반복 작업의 느낌이 드는 미묘한 비효율의 냄새가 났다.

물론 유지보수 측면에서 보자면 납득이 가는 수준의 코스트이긴했으나, 조금 더 생산성 좋은 상황을 많이 접해서 그렇게 느껴진 면이 있다고 본다.


마치며

대략 간단한 Firebase Login, 테이블 그리기, 편집 기능, HTTP 처리 등을 구현한 앱을 만드는 데에 1주 반 (워킹 데이 기준 8일) 정도 걸렸다.

중간에 GraphQL 플러그인 관련 리서치 및 적용도 있었다는 점을 감안하고, 여타 작업도 중간에 진행했다는 것을 감안하면 학습 허들도 높지 않았던 것 같다.

위에서 언급한대로 C#이나, Kotlin과 유사성이 아주 많아서 적응이 쉬웠고, 또 한편으로는 생각보다 재밌었고 맘에 들었다.

훌륭하다. 개인적으로 만족감이 높아서, 가벼운 게임 개발도 플러터로 해보고 싶어져서 찾아보니 Flame 이라는 엔진이 있던데, 한번 써보고 싶어졌다.

Flutter는 물론이고, Flame만 봐도 과거에는 직접 처리 했던 것을 추상화 레이어로 감싸서 최신 프레임워크들에서 손쉽게 사용해주는 것들을 보면 참 좋아진 세상이고, 생산성이 많이 좋아졌다는 생각이 든다.

이번엔 뭘 만들어볼까?