Flutter를 선택하는 이유
Flutter(플러터)는 Google에서 개발한 크로스 플랫폼 프레임워크입니다. 점점 올라가는 점유율은 Flutter가 대세 크로스 플랫폼 프레임워크임을 보여줍니다. 일반적으로 Flutter를 선택하게 되는 이유는 다음과 같다고 봅니다.
- 빠른 개발 속도
- 낮은 러닝커브
더 자세히 알아볼까요?
빠른 개발 속도
애플리케이션을 빠르게 개발하고 싶다면 플러터가 제격입니다. 대체 무엇때문에 Flutter를 사용했을 때, 타 기술에 비해 개발 속도가 빠를까요?
크로스 플랫폼 지원
Flutter는 Google에서 개발한 오픈소스 크로스 플랫폼 앱 개발 프레임워크로, iOS, Android, 웹, 데스크탑까지 여러 플랫폼에서 쓸 수 있는 애플리케이션을 한번에 개발할 수 있게 해줍니다. 이를 크로스 플랫폼 프레임워크라고 말합니다. 크로스 플랫폼을 지원하면, 개발자는 시간과 비용을 절약할 수 있고, 사용자는 다른 플랫폼을 이용하더라도, 동일한 UI와 작동방식을 경험할 수 있어 사용이 편리해집니다. 그렇다면 네이티브에 비해 너무 느리지는 않을지 걱정되는데요, Flutter는 코드를 효율적인 방식으로 실행하기 때문에 좋은 성능을 보이며 안정적이니 크게 걱정하지 않아도 됩니다.
다양한 라이브러리 지원
Flutter는 공식적으로 제공하는 플러그인 패키지 사이트(pub.dev)가 존재합니다. 해당 사이트에는 정말 다양한 패키지가 존재합니다. 아마 개발 중 '이런 기능은 누가 만들어 놓은 거 없나?' 하는 생각이 드는 기능들이 웬만하면 다 있다고 봐도 됩니다. 빠르고 간편하게 앱을 구축하고 싶다면, 해당 사이트에 접속하여 인기 있는 플러그인을 적극적으로 활용하시는 것을 추천 드립니다.
낮은 러닝커브
애플리케이션을 빠르게 개발하고 싶다면 플러터가 제격입니다. 대체 무엇때문에 Flutter를 사용했을 때, 타 기술에 비해 개발 속도가 빠를까요?
선언형 UI
선언형 UI(Declarative UI)는 명칭 그대로, 무슨 UI를 어디에 렌더링할지 정의해주는 형식으로 구현하는 방법입니다. 선언형 UI는 명령형 UI 방식과 비교되곤 합니다. 쉽게 예시로 풀어보자면, 명령형 UI는 '버튼A를 만들거야. 버튼A는 파란색이야. 버튼A 가로는 200이야. 버튼A 세로는 100이야. 버튼A를 화면에 추가해줘!' 처럼 작업을 단계별로 나타내는 방식입니다. 명령형 UI는 '파란색, 가로200, 세로100인 버튼A' 라고 결과를 선언하는 방식입니다. 선언형 UI는 다음과 같은 장점을 갖습니다.
1) 가독성 & 유지보수 용이
A는 버튼입니다 B는 이미지입니다 A의 색상은 파란색 A의 가로는 200, 세로는 100 B의 가로는 300, 세로는 200 A를 화면에 추가합니다 B를 화면에 추가합니다 |
버튼(색: 파랑, 가로: 200, 세로: 100), 이미지(가로: 300, 세로: 200), |
어느 쪽이 어떻게 화면에 그려질지 잘 상상되나요? 두번째 방법이 확실히 눈에 잘 들어옵니다. 화면에 버튼이랑 이미지를 넣는 코드라는 걸 바로 파악할 수 있겠죠? 이처럼 선언형 UI를 사용하면 더 짧고 직관적으로 코드를 작성할 수 있습니다. 가독성이 뛰어나기 때문에, 코드를 수정하기도 쉽습니다.
2) 재사용성
재사용해야하는 UI 요소들은 따로 컴포넌트 형태로 정의해서 여러 부분에서 사용할 수 있습니다.
3) 상태관리
상태 변화를 일일히 명시적으로 작성할 필요 없이 프레임워크가 자동으로 처리하기 때문에 관리가 간편합니다.
4) 테스트 및 디버깅 편리
코드가 직관적으로 의도(결과물)를 표현하기 때문에, 테스트 및 디버깅을 하기에 용이합니다.
Dart 언어
Dart는 학습하기 쉬운 편입니다. 문법이 기존의 많이 쓰이는 언어들과 유사합니다. 메모리 관리도 자동으로 해줍니다. 무엇보다 Dart 공식 사이트에서 문서, 튜토리얼, 예제가 세세하게 제공되고 있습니다.
Google의 지원
Flutter는 Google이 개발하고 지원하는 프레임워크 입니다. Google이 열심히 밀고 있는 프레임워크이기 때문에, 꾸준한 업데이트로 계속해서 개선되고 있습니다. 심지어 공식이 지원하는 라이브러리도 많습니다. 공식문서도 깔끔하게 제공하고 있습니다.
덧붙임
유용한 사이트
- 플러터 공식 문서 https://flutter-ko.dev/
- 플러터 라이브러리 https://pub.dev/
- 플러터 갤러리 https://gallery.flutter.dev/#/
- 플러터 커뮤니티 https://dev.to/t/flutter
vs. React-Native
Flutter말고, 인기있는 크로스 플랫폼 프레임워크로 React-Native(리액트 네이티브) 라는 프레임워크도 있습니다. 예전에는 Flutter보다 훨씬 많이 쓰였던 프레임워크이며 웹 개발에 쓰이는 React와 유사한 사용방식에 흔히 쓰이는 JavaScript 언어를 쓴다는 장점 덕분에 많은 사랑을 받아왔지만, 지원 중단 등의 문제로 Flutter에게 따라잡힌 듯 합니다. 이전에 Flutter 대신 React-Native를 선택했던 큰 이유는 다음과 같았습니다.
- 웹 개발에 쓰는 React와 사용 방식이 유사하며, JavaScript를 사용해서 개발자를 구하기 쉬움
- Code push가 가능함
- Flutter보다 흔히 쓰임
하지만 이제 React-Native를 선택할 이유는 JavaScript를 쓰며 React와 유사하다는 점 밖에 없다고 생각합니다. Code push는 급히 코드를 수정해야하는 경우에 앱을 새로 빌드하거나 업데이트할 필요 없이, 코드 수정사항을 바로 반영할 수 있게 해주는 작업입니다. 앱이 조금이라도 수정이 되면 수정 후, 스토어 재승인을 받아 업데이트를 하도록 하는 것이 원칙입니다. 따라서 배포가 바로 되는 것이 아니라 스토어의 심사를 기다리는 시간이 필요하기 때문에 Code push를 도입하곤 합니다. 참고로 최근 Flutter도 shorebird라는 코드 푸시 서비스가 개발되었습니다.(유료입니다) 관심있다면 도입해보시길 바랍니다.
'개발관련 정보글 모음' 카테고리의 다른 글
[Flutter] 플러터 시작! 기초 사용법 - 자주 쓰는 위젯 정리 (0) | 2024.05.03 |
---|---|
[Flutter] 플러터 시작! 간단 설치 (1) | 2024.05.01 |
[정보처리기사] 실기 3일 벼락치기용 - 2편 (0) | 2024.04.26 |
[정보처리기사] 실기 3일 벼락치기용 - 1편 (1) | 2024.04.26 |