들어가기 전
저희 학교에서 Flutter를 주제로 한 프로젝트 수업이 시작되었다는 소식을 듣게 되었을 때, Flutter에 대한 궁금증이 가득했습니다. Flutter라는 프레임워크에 대한 정보는 어렴풋이 들어본 적이 있었지만, 실제로 사용해볼 기회는 없었습니다. 이 수업이 얼마나 흥미로울지, 무엇을 배울 수 있을지 기대가 됐습니다.
이번 수업에서는 팀 프로젝트를 진행하게 되었고, 저희 4인 팀은 '에브리 타임'이라는 주제를 선정하여 클론 코딩 프로젝트를 계획하게 되었습니다. 주제 선정 당시, 대학교에 다니는 학생이라면 한번쯤 사용해보았거나 알고 있는 서비스였기에 더욱 의미가 있었습니다.
프로젝트를 성공적으로 진행하기 위해서는 Flutter에 대한 깊은 이해가 필요하다는 것을 알게 되었고, 저는 이를 기회로 Flutter에 대해 체계적으로 공부하기 시작했습니다.
Flutter의 가장 큰 장점 중 하나는 iOS와 Android 두 플랫폼에 동시에 앱을 배포할 수 있다는 것이었습니다. 이에 대한 이론적 지식은 알고 있었지만, 실제로 사용해보기 전까지는 이게 얼마나 유용한 프레임워크인지 저는 몰랐습니다. 이제 저는 Flutter에 대해 공부하면서 느낀 경험, 그리고 Flutter에 관한 지식들을 이곳에 기록하려고 합니다.
플러터란?
플러터에 대해 알아보기 전, 우선 네이티브 앱 개발과 크로스 플랫폼 앱 개발의 차이를 이해해야 합니다.
네이티브 앱 개발
- 플랫폼에 종속된 개발 방법.
- 안드로이드는 주로 자바나 코틀린을, iOS는 스위프트나 오브젝티브-C를 사용합니다.
크로스 플랫폼 앱 개발
- 하나의 기술로 여러 플랫폼에서 동작하는 앱을 개발하는 방법.
- 대표적인 예로 아이오닉과 리액트 네이티브가 있습니다.
아이오닉: 웹 기반 기술을 활용해 크로스 플랫폼 앱을 개발. 안드로이드와 iOS 모두에서 아이오닉 프레임워크를 활용할 수 있습니다.
리액트 네이티브: 자바스크립트 UI 프레임워크인 React 기반의 모바일 크로스 플랫폼 프레임워크. 내장 브라우저 대신 자체 엔진을 사용합니다.
플러터
- 구글에서 2017년 처음 발표.
- 푸크시아라는 구글의 운영체제에서 동작하는 애플리케이션을 개발 목적으로 만들어짐.
- 다양한 플랫폼에서 동작하는 애플리케이션 개발을 목적으로 함.
- 플러터 아키텍처는 프레임워크, 엔진, 임베더로 구성되어 있습니다.
플러터의 주요 특징:
- 크로스 플랫폼 프레임워크
- 모든 플랫폼에 동일한 UI 제공
- 네이티브 기능과의 최소한의 연동
- 다트 언어를 사용하여 개발
- 뛰어난 성능과 강력한 애니메이션 기법 제공
왜 플러터를 선택해야 하는가?
아이오닉 (Ionic)
아이오닉은 웹 기술을 기반으로 한 크로스 플랫폼 앱 개발 도구로, 오래된 기술이기 때문에 지원이 점차 줄어들고 있습니다. 이로 인해 새로운 기능이나 최신 트렌드에 빠르게 대응하기 어렵다는 단점이 있습니다.
React Native
- React Native는 Facebook에서 개발한 프레임워크로, Javascript를 주언어로 사용하여 많은 개발자들에게 친숙하고 접근성이 높습니다.
- 그러나, 언어는 Javascript이지만 나머지 부분은 신규로 개발해야 하는 경우가 많습니다. 이로 인해 학습 곡선이 있을 수 있습니다.
- 기본적인 기능은 React Native에서 제공되지만, 다양한 추가 기능은 3rd Party에서 제공됩니다. 이로 인해 여러 조직에서 동일한 기능을 제공하게 되며, 지속적인 업데이트와 Follow Up가 필요하게 됩니다.
Flutter
- Flutter는 구글에서 지원하는 크로스 플랫폼 앱 개발 도구로, Dart라는 새로운 언어를 학습해야 하는 단점이 있습니다. 그러나 이는 새로운 언어의 장점과 특징을 통해 극복할 수 있습니다.
- 구글이 직접 지원하고 있기 때문에 다양한 기능과 지원을 받을 수 있습니다.
- Flutter는 다른 플랫폼에 비해 일관성이 높고, 개발 환경이 통일되어 있어 효율적인 개발이 가능합니다.
크로스 플랫폼 앱 개발의 현실
크로스 플랫폼 앱의 목표는 단순하지만, 개발과정은 그렇지 않습니다. 유행에 민감하며, 단기간에 지속적인 업데이트가 필요하다는 점에서 지원이 약해질 수 있습니다. 따라서 현재와 미래에 걸쳐 지속적인 기술 지원이 중요합니다. 이 점에서 구글 같은 대형 기업의 지원을 받는 기술 선택은 프로젝트의 안정성과 지속 가능성을 높여줍니다.
결론적으로, 크로스 플랫폼 앱 개발에 있어 Flutter는 구글의 지원을 받는 강력한 도구로, 현재와 미래의 지속적인 기술 지원이 중요한 상황에서 유리한 선택이 될 수 있습니다.
다트 언어란?
다트와 플러터의 연관성
플러터의 인기와 함께 주목받게 된 프로그래밍 언어가 '다트(Dart)'입니다. 2011년에 구글이 발표한 이 언어는 구글이 플러터를 개발하는 주요 언어로 선택하면서 크로스 플랫폼 앱 개발 분야에서 주요한 역할을 하게 되었습니다.
다트의 특징
다트는 크로스 플랫폼에 기반을 둔 프런트엔드 프로그래밍 언어로, 플러터와 함께 웹, 데스크톱, Android, iOS 등 다양한 플랫폼에서의 앱 개발을 지원합니다.
왜 다트인가?
많은 이들이 "왜 구글은 자바나 코틀린이 아닌 다트를 선택했는가?"라는 의문을 가질 수 있습니다. 이에 대한 대략적인 비교를 통해 명확히 해보겠습니다.
- Java: Oracle이 소유하고 있는 언어로, 안드로이드의 네이티브 개발 언어입니다. 오랜 역사와 함께 안정성을 가지고 있으나, 플랫폼 간 개발에는 제약이 있습니다.
- Kotlin: JetBrains에서 백업을 받는 언어로, KMM (Kotlin Multiplatform Mobile)을 통해 크로스 플랫폼 앱 지원을 제공합니다. 2019년 Google I/O에서는 Android가 코틀린을 우선적으로 지원하겠다고 발표하였습니다. 이는 안드로이드 개발에 있어 코틀린의 중요성을 강조하고 있습니다.
- Dart: 구글이 소유하고 있는 언어로, 플러터를 통해 크로스 플랫폼 앱 개발에 주로 사용됩니다. 웹, 데스크톱, Android, iOS 등 다양한 플랫폼을 지원하며, 플러터와의 시너지를 통해 빠른 성장을 이루고 있습니다.
이러한 비교를 통해 볼 때, 구글은 플러터와 다트를 통해 통합적인 크로스 플랫폼 앱 개발 환경을 제공하고자 하는 목적을 가지고 있음을 알 수 있습니다.