Home 플러터(Flutter)란 무엇일까? 플러터(Flutter)를 이해해보자
Post
Cancel

플러터(Flutter)란 무엇일까? 플러터(Flutter)를 이해해보자

Google-flutter-logo

현재 진행중인 대회 프로젝트를 끝내고 다음 프로젝트를 현재 재학중인 세명컴퓨터고등학교 앱을 만드는 것을 잡았으나 혼자서 안드로이드, iOS 둘 다 네이티브로 만들기에는 기간이 촉박하여 고민하던중 결국 크로스 플랫폼로 제작하는 것으로 결정하여 대표적 크로스 플랫폼 프레임워크인 플러터에 대해 알게 된 내용에 대해 정리해보았다.

플러터(Flutter)란 무엇일까?

플러터(Flutter)는 Google에서 개발한 오픈 소스 UI 프레임워크로 안드로이드, iOS, 윈도우즈, 리눅스, 웹 등등 다양한 플랫폼에 프로그램을 제작할 수 있으며 주로 모바일 앱 개발에서 사용하는 대표적 크로스 플랫폼 프레임워크이다.

여기서 프레임워크란? 소프트웨어 개발을 위한 구조와 도구의 모음으로 개발자가 애플리케이션을 만들 때 필요한 기본 구조와 기능을 제공하여 개발을 더욱 쉽고 효율적으로 할 수 있게 도와주는 것을 말한다.

그렇다면 크로스 플랫폼은 무엇일까?

크로스 플랫폼은 하나의 단일 코드 베이스로 iOS, Android와 같이 여러 플랫폼에 애플리케이션을 만들 수 있는 것을 의미하며 대표적 크로스 플랫폼 프레임워크로는 지금 소개하고 있는 플러터(Flutter)와 리액트 네이티브(React Native)가 존재한다.

그럼 굳이 네이티브 대신 이러한 크로스 플랫폼을 사용하여 앱을 개발하는 까닭은 무엇일까? 네이티브 앱 대신 크로스 플랫폼 앱을 선택하여 얻는 이점이 있겠지만 그 중 제일 큰 까닭은 바로 비용 절감개발 속도 일 것 이다.

앞에서 설명한 나의 사례처럼 앱을 네이티브로 개발하려고 한다면 Android 개발자 한명, iOS 개발자 한명 최소 두명이 필요하며 만약 둘다 개발할 수 있다고 한들 개발 속도가 2배로 든다는 문제가 있다. 하지만 크로스 플랫폼을 사용한다면 각각 플랫폼의 개발자를 두지 않아도 개발이 가능하며 개발 속도 또한 네이티브를 사용하는 것보다 빠르다.

플러터(Flutter)의 특징

이제 제일 중요한 플러터의 특징에 대해 살펴보자

다트(Dart)

우선 가끔 헷갈리는 사람이 있던데 다시 한번 강조해서 플러터(Flutter)는 그 자체로 프로그래밍 언어가 아닌 프레임워크이다.

이러한 플러터(Flutter)는 프로그래밍 언어로 구글에서 개발한 다트(Dart)를 사용하며 다트(Dart)는 초기에 자바스크립트(JS)를 대체하기 위한 목적으로 개발되었으나 초기 목적이 실패하여 2018년 프로그래밍 언어에서 배우면 안되는 언어 1위로 뽑히는 등 수모를 겪었다가 플러터(Flutter)의 꾸준한 성장에 힘입어 현재는 그 치욕에서 벗어났다고 볼 수 있다.

또한 앞에서 설명한 같은 구글에서 개발한다는 특징 덕에 다른 프레임워크와 달리 플러터(Flutter)에서 필요한 기능을 다트(Dart)에서 지원하지 않는다면 새로 추가하는 등과 같은 과거 사례처럼 서로 두팀이 협업이 가능하다는 장점도 있지만 이는 아직 성장중인 언어라는 뜻으로 아직도 바뀌는 점이 많다는 것이 단점으로 다가올 수 있다.

핫 리로드(Hot Reload)

내가 처음 플러터(Flutter)를 사용하면서 감동이자 충격으 먹었던 부분으로 플러터(Flutter)는 핫 리로드(Hot Reload)를 지원하여 변경 사항이 있을 때 굳이 새로 앱을 빌드하지 않아도 수정 사항을 즉시 확인할 수 있다.

네이티브적

플러터(Flutter) 다트(Dart) 컴파일러를 통해 네이티브 코드로 앱이 구동되며 C와 C++로 만들어진 자체적인 Skia 엔진을 통해 캔버스를 그리는 식으로 UI를 렌더링한다. 이 점 덕에 디바이스와 관계 없이 동일한 UI를 사용할 수 있으며 속도 또한 네이티브와 비슷하게 나오는 것이다.

플러터(Flutter) vs 리액트 네이티브(React Native)

제목을-입력해주세요_-001 (10)

플러터(Flutter)와 리액트 네이티브(React Native) 둘 중 어느 프레임워크를 사용하는게 좋은가?는 매우 유명한 논쟁으로 우선 개인적 내 소견을 말하기 전에 둘을 비교해보면

플러터(Flutter)

  • 네이티브와 맞먹는 빠른 속도
  • 핫 리로드
  • 웹 개발자가 아니라면 상대적으로 낮은 학습 곡선

리액트 네이티브(React Native)

  • 코드 푸쉬
  • 핫 리로드
  • 리액트(React) 개발자라면 상대적으로 낮은 학습 곡선

이렇게 볼 수 있고 그렇다면 제일 중요한 어떤 프레임워크가 낫나? 개인적 의견으로는

만약 리액트(React) 개발자가 없고 개발하려는 앱이 성능적으로 네이티브와 비슷해야 하며 코드 푸쉬가 그리 중요하지 않다면 플러터(Flutter)

만약 리액트(React) 개발자가 존재하고 코드 푸쉬가 중요한 상황이라면 리액트 네이티브(React Native)라는

현재 처한 상황에 맞게 선택하자라는 원론적 대답밖에 나오지 않는 것 같다.

여담으로 구글은 자신들이 차기 운영체제인 퓨시아의 유저 인터페이스 및 퓨시아 애플리케이션들이 플러터로 개발되니 이에 흥미가 있다면 플러터(Flutter)를 학습해 보는 게 어떨까?

This post is licensed under CC BY 4.0 by the author.