한국의 개발자들을 위한 Google for Developers 국문 블로그입니다.
Flutter 1.0: Google의 휴대용 UI 도구 키트
2018년 12월 6일 목요일
게시자: Tim Sneath, Flutter의 그룹 제품 관리자
오늘 Flutter Live에서는 단일 코드베이스에서 iOS 및 Android를 위한 아름다운 네이티브 사용 환경을 만들기 위한 최초의 안정적인 Google의 UI 툴킷 버전인
Flutter 1.0
을 발표합니다.
오늘날의 교차 플랫폼 모바일 개발은 적당한 절충과 타협으로 가득 차 있습니다. 개발자는 여러 운영체제를 위해 똑같은 앱을 여러 차례 빌드하거나 이식성을 고려해 기본 속도와 정확성을 맞바꾸는 최소 공통 분모 방식의 솔루션을 수락하거나 양자택일할 수밖에 없는 처지입니다. 하지만 Flutter의 등장으로, 우리는 두 가지 인기 모바일 운영체제를 모두 대상으로 하는 네이티브 ARM 코드로 구동되는 하드웨어 가속 그래픽과 UI라는 두 마리 토끼를 모두 완벽히 잡을 수 있게 해주는 솔루션을 보유하게 되었다고 믿습니다.
Flutter 소개
Flutter는 모바일 앱을 빌드하기 위해 전통적인 Apple 및 Android 앱 모델을 대체하지는 않습니다. 그 대신, 기존 앱에 삽입하거나 완전히 새로운 앱을 위해 사용할 수 있는 앱 엔진입니다.
우리는 Flutter의 특성을 다음 네 가지 차원에서 생각합니다.
Flutter를 사용하면
아름다운
앱을 빌드할 수 있습니다. 우리는 디자이너가 기본 프레임워크의 제한 때문에 어쩔 수 없이 적절히 절충할 필요 없이 창의적 비전을 완벽히 펼칠 수 있도록 하고 싶습니다. Flutter를 사용하면 화면에서 모든 픽셀을 하나하나 제어할 수 있고, 강력한 합성 기능을 통해 제한받지 않고 그래픽, 동영상, 텍스트, 컨트롤을 오버레이하고 애니메이션으로 구현할 수 있습니다. Flutter는 iOS와 Android에서 모두 완벽한 픽셀의 경험을 선사하는 위젯 세트를 완벽히 갖추고 있습니다. 또한 Flutter 덕분에 디지털 환경을 위한 Google의 개방형 디자인 시스템인 Material Design의 궁극적 실현이 가능합니다.
Flutter는
빠릅니다
. Flutter는 Chrome과 Android를 뒷받침하는 바로 그 하드웨어 가속 Skia 2D 그래픽 엔진으로 구동됩니다. 우리는 기기의 기본 속도로 결함과 버벅거림이 없는 그래픽을 지원할 수 있도록 Flutter를 설계했습니다. iOS 및 Android용 네이티브 32비트 및 64비트 ARM 코드에 대한 컴파일을 지원하는 세계적 수준의 Dart 플랫폼으로 Flutter 코드를 구동합니다.
Flutter는
생산적
입니다. Flutter에서는 모바일 개발자 및 디자이너가 실시간으로 자신의 앱에 대해 반복할 수 있는 새롭고 획기적인 기능인
상태 저장 핫 리로드
를 도입합니다. 상태 저장 핫 리로드를 사용하면 앱을 다시 시작하거나 그 상태를 잃지 않고 앱의 코드를 변경하고 그 즉시 변경 결과를 볼 수 있습니다. 상태 저장 핫 리로드는 개발자의 앱 빌드 방식을 변화시킵니다. 사용자 설문조사에서 개발자들은 이 기능 덕분에 개발 사이클의 생산성이 3배나 향상되었다고들 합니다.
마지막으로, Flutter는
공개되어 있습니다
. Flutter는 BSD 스타일 라이선스를 가진 오픈소스 프로젝트로, 전 세계 수백 명의 개발자가 소스 코드 개발에 기여하고 있습니다. 뿐만 아니라, 수천 개의 플러그인으로 이루어진 활력 넘치는 생태계도 조성되어 있습니다. 모든 Flutter 앱이 표준 Android 및 iOS 빌드 도구를 사용하는 네이티브 앱이므로, Android에서 Kotlin 또는 자바로 작성한 코드와 UI 그리고 iOS에서 Swift 또는 Objective-C로 작성한 코드와 UI를 포함한 모든 것에 기본 운영체제를 통해 액세스할 수 있습니다.
이 모든 것을 한데 묶고 이를 다시 Visual Studio Code, Android Studio, IntelliJ 또는 개발자가 선택한 프로그래머 편집기를 위한 동급 최고의 도구와 결합한 것이 바로 Flutter이며, 따라서 Flutter는 단일 코드베이스에서 iOS 또는 Android를 위한 아름다운 네이티브 사용 환경을 빌드하기 위한 개발 환경이라 할 수 있습니다.
Flutter의 성장과 발전 모멘텀
우리는 10개월 전 Mobile World Congress에서 Flutter의 첫 베타 버전을 발표했으며, 더욱 폭넓은 커뮤니티에서 이를 채택한 속도를 지켜보며 흥분을 감출 수 없었습니다. 우리가 1.0 버전을 출시하기도 전에 Apple과 Google Play의 앱 스토어에 이미 게시된 Flutter 앱의 개수만 해도 벌써 수천 개나 된다는 점만 보더라도 그 채택 속도를 가늠해 볼 수 있을 것입니다. 개발자들이 UI 개발에 대한 새로운 접근 방식을 받아들일 준비가 되어 있다는 점은 분명합니다.
Flutter는 Google 내부에서도 폭넓은 범위의 제품에 사용되고 있는데,
Google Ads
의 경우 이미 iOS 및 Android 앱은 Flutter로 전환했습니다. 1.0이 나오기도 전에 Abbey Road Studios, Alibaba, Capital One, Groupon, Hamilton, JD.com, Philips Hue, Reflectly, Tencent를 비롯한 광범위한 글로벌 고객이 Flutter로 앱을 개발하거나 Flutter를 사용한 앱을 출시하고 있습니다.
Capital One 팀의 Michael Jones 엔지니어링 상무이사는 자신의 팀이 Flutter를 사용하며 경험한 바를 이렇게 말합니다.
"우리는 고성능 교차 플랫폼 개발에 관한 Flutter의 독특한 접근 방식에 무척 매료되었습니다. 우리의 엔지니어들은 신속하게 개발하겠다는 약속과 핫 리로드 기능을 높이 평가했고, 지난 1년간 우리는 프레임워크, 특히 네이티브 통합 과정에서 놀라운 성과와 진전을 보았습니다."
"Capital One은 Flutter 덕분에 'iOS나 Android를 우선시'하는 방식이 아니라, 진정한 모바일을 우선시하는 모델에서의 기능에 대해 진지하게 생각할 수 있게 되었습니다. Flutter 1.0이 나온다고 하니 정말 기대되고, 엔지니어링 커뮤니티에서의 발전 속도와 신선한 자극에 계속 감동을 받을 것 같아요."
오늘 열린 Flutter Live 이벤트에서, 인기 결제 서비스 제공업체인 Square는 Square 결제 리더기를 사용하여 직접 결제하든 모바일 앱 내에서 결제하든 상관없이 Flutter를 이용해 상품 및 서비스 대금 결제를 쉽게 수락할 수 있게 해주는
두 가지 새로운 Flutter SDK
를 발표했습니다. Square는 태평양 연안 북서부 주변 지역의 농산물 시장에서 과일을 재배하고 판매하는 가족 농장인
Collins Family Orchards
의 앱을 사용하여 Square의 결제 SDK를 사용하는 사례를 시연했습니다.
Collins Family Orchards 앱 개발자 Dean Papastrat가 자신의 경험에 대해 이렇게 들려주었습니다.
"프로덕션 빌드에서 이루어지는 모든 애니메이션과 전환의 속도에 완전히 압도되었죠. 웹 개발자인 제게는 Flutter로 전환하는 일이 너무나 쉽고 간단했는데, 불과 일주일 만에 결제 기능을 완벽히 수행할 수 있는 앱을 빌드할 수 있었다는 사실이 믿기지 않습니다."
또한 Flutter Live에서는
2Dimensions
가
Flare
를 바로 사용할 수 있다고 발표하기도 했는데, 이는 디자이너가 Flutter 앱에 직접 삽입하고 코드로 조작할 수 있는 벡터 애니메이션을 만들 수 있도록 지원하는 주목할 만한 새로운 도구입니다. Flare를 사용하면 하나의 앱에서 디자인하고 다른 앱에서 애니메이션을 구현한 다음에 그 모든 것을 기기마다 특정한 자산과 코드로 변환할 필요가 없습니다.
Flare로 빌드한 애니메이션을 기존 Flutter 앱에 위젯으로 삽입할 수 있는데, 이를 통해 애니메이션이 전체 작성자에 참여하고 다른 텍스트, 그래픽 레이어 또는 심지어 UI 위젯과도 오버레이되도록 할 수 있습니다. 이런 식으로 통합하면 애니메이션이 다른 아키텍처의 '블랙 박스' 제한으로부터 자유로워지고, 앱이 완성되는 순간까지 디자이너와 개발자 간에 지속적으로 협업할 수 있습니다. Flutter와 Flare 사이의 이처럼 긴밀한 통합으로 세심하게 잘 마무리된 모바일 사용 환경을 만들고 싶어 하는 디지털 디자이너와 애니메이션 제작자에게 매우 매력적이고 설득력 있는 솔루션을 제공합니다.
Flutter에 승부수를 던진 또 다른 파트너로
Nevercode
가 있는데, 모바일 앱을 위한 지속적 통합 및 지속적 배포(CI/CD) 도구를 공급하며 급속히 성장 중인 공급자입니다. 이 회사는 Flutter Live에서 단일 자동화에서 Android 및 iOS 모두를 위한 Flutter 앱의 빌드 및 패키징 프로세스를 쉽게 자동화하도록 할 목적으로, 특히 Flutter에 적합하게 설계한 새로운 도구인
Codemagic
을 발표했습니다. 현재 베타 버전으로 제공되는 Codemagic을 사용하면 Flutter 프로젝트가 포함되어 있는 GitHub 저장소를 선택할 수 있고, 몇 번의 클릭만으로 테스트를 실행하는 지속적 빌드 흐름을 만들고 Apple 및 Google Play 스토어에 업로드할 수 있는 바이너리 앱 번들을 생성할 수 있습니다.
우리는 개발자들이 베타 버전 출시 이후로 Flutter로 빌드하고 있는 앱의 범위와 다양성을 강조해서 보여드리기 위해 아래의 짧은 동영상을 제작했습니다.
Flutter 1.0의 새로운 특징
첫 베타 버전 출시 이후, 우리는 Flutter에 새로운 기능을 추가하고 더욱 완벽하게 다듬는 작업을 해오고 있습니다. 특히, 새로운 위젯으로
픽셀 단위까지 완벽한 iOS 앱
을 위한 지원의 완성도를 더욱 높이고, 거의 20가지의 서로 다른 Firebase 서비스를 위한 지원을 추가하고, Flutter 앱의 성능 개선 및 크기 축소를 위한 작업을 수행했습니다. 또한 커뮤니티에서 받은 피드백을 바탕으로 수천 가지의 문제를 해결했습니다.
Flutter는 또한 Dart 2의 업데이트 버전으로서, 코드 크기가 더욱 작아지고 유형 검사 속도가 더욱 빨라지고 유형 오류에 대한 사용성이 더욱 개선된 Dart 플랫폼의 최신 버전인 2.1도 포함합니다. Dart 2.1에는 사용자 환경을 빌드할 때 생산성을 향상하기 위한 새로운 언어 기능도 있습니다. Dart 2.1을 이미 채택한 개발자들은 최신 엔진으로 전환한 것만으로도 상당한 속도 향상 효과를 보고 있다고들 말합니다.
1.0 버전 출시의 주 포커스는 버그 수정과 안정화이지만, 우리의 예상으로는 2019년 2월에 있을 다음 분기별 출시에 포함할 프리뷰 모드에서 개발자들이 사용해볼 수 있도록 두 가지 새로운 주요 기능인
앱에 추가
및
플랫폼 뷰
에 대한 프리뷰도 선보일 예정입니다.
앱에 추가
우리는 처음에는 Flutter를 빌드할 때 누군가 처음부터 새 애플리케이션을 빌드하는 상황에서의 생산성에 초점을 맞췄습니다. 그러나 당연히 모든 이가 새하얀 캔버스에 자신만의 그림을 그리기 시작할 수 있는 사치를 누리는 건 아닙니다. 규모가 큰 몇몇 고객 회사 담당자들과 대화해 보니, 고객은 기존 애플리케이션 내에서 새로운 사용자 경험이나 새로운 기능을 구현하기 위해 Flutter를 사용하거나, 기존 애플리케이션을 단계적으로 Flutter로 변환하고 싶어 한다는 점이 분명했습니다.
Flutter의 아키텍처는 이 모델을 제대로 지원하며, 결국 모든 Flutter 앱은 호스트 Android 및 iOS 컨테이너를 포함합니다. 하지만 우리는 기존 앱을 위한 템플릿, 도구, 안내 지침을 업데이트하여 Flutter를 더 쉽게 점진적으로 채택할 수 있도록 노력했습니다. 그래서 우리는 Flutter와 호스트 코드 사이에서 자산을 더 쉽게 공유할 수 있도록 했습니다. 또한 애플리케이션과 함께 디버거를 실행하지 않고 기존 Flutter 프로세스에 쉽게 연결할 수 있도록 도구를 다시 손봤습니다.
이러한 사용 환경을 더욱 개선하기 위해 계속 노력하겠습니다. 많은 고객이 이미 '앱에 추가' 기능에 대해 우리가 제시한 안내 사항을 올바르게 따르고 있지만, 앞으로도 계속 샘플을 추가하고 복잡한 시나리오를 위한 지원을 확장해나가겠습니다. 한편,
기존 앱에 Flutter를 추가하기 위한 안내는 위키에 소개되어 있으며
, 나머지 작업은
GitHub 프로젝트 보드
에서 추적할 수 있습니다.
플랫폼 뷰
'앱에 추가' 기능은 기존 애플리케이션에 Flutter를 점진적으로 도입하는 방법으로서 유용하지만, 때로는 다른 우회로를 택해 Flutter 앱에 Android 또는 iPhone 플랫폼 컨트롤을 삽입하는 방법이 유용하기도 합니다.
그래서 각 플랫폼에서 이런 종류의 콘텐츠를 삽입할 수 있게 해주는 플랫폼 뷰 위젯(AndroidView 및 UiKitView)을 도입했습니다. 우리는 두어 달 동안 Android 지원의 프리뷰를 진행해왔지만, 지금은 iOS로 지원 범위를 확장하고 있고 이를 이용하는
Google 지도
및
WebView
와 같은 플러그인을 추가하기 시작하고 있습니다.
다른 컴포넌트와 마찬가지로, 우리의 플랫폼 뷰 위젯은 컴퍼지션 모델에 참여하며, 이는 곧 이를 다른 Flutter 콘텐츠와 통합할 수 있다는 의미입니다. 예를 들어 위 스크린샷에서 오른쪽 아래 모서리의 부동 작업 버튼은 50% 알파가 적용된 배경색을 가진 Flutter 위젯입니다. 이는 Flutter의 고유한 아키텍처상 장점을 잘 보여줍니다.
개발자가 사용해볼 수 있도록 이 작업을 준비하는 동안 우리가 계속 성능과 기기 호환성을 개선하는 작업을 수행하고 있으므로, PlatformViews에 종속되는 앱을 배포할 경우 주의하도록 당부드립니다. 우리는 계속 활발하게 플랫폼 뷰를 최적화할 것이며, 다음 분기별 업데이트 시점에 맞춰 프로덕션 준비가 될 것으로 예상합니다.
Flutter, 모바일을 넘어
지금까지 Flutter는 주로 iOS와 Android를 대상으로 삼았습니다. 하지만 우리가 Flutter에 대해 품고 있는 포부는 모바일의 영역을 넘어 더욱 광범위한 플랫폼으로 확장하는 것입니다. 실은, Flutter는 처음부터 픽셀이 사용되는 곳이면 어디든 유연하게 적용하기에 충분한 휴대용 UI 도구 키트로 설계되었습니다.
이러한 작업 중 일부는 이미 공개한 바 있습니다.
Flutter Desktop Embedding
은 Windows, MacOS, Linux를 비롯한 데스크톱 운영체제에 Flutter를 적용한 초기 단계 프로젝트입니다. 또한 우리는 최근에 완전한 데스크톱 환경을 포함하지 않을 수 있는 더 작은 규모의 기기에 대한 Flutter 삽입 지원을 시연하기 위한 방법으로서
Raspberry Pi에서 Flutter를 사용하는 비공식적 방법의 세부 사항
을 공개했습니다.
이번 주 Flutter Live에서 우리는 Flutter를 실행할 수 있도록 상당히 확장한 실험실 환경에서 작업 중인 시험용 프로젝트를 최초로 살짝 공개했습니다.
Hummingbird는 Dart 플랫폼의 기능을 이용하여 네이티브 ARM 코드뿐 아니라 자바스크립트로도 컴파일하는 Flutter 런타임을 웹 기반으로 구현한 프로젝트입니다. Hummingbird를 사용하면 따로 변경할 필요 없이 Flutter 코드를 표준 기반 웹에서 실행할 수 있습니다.
Hummingbird의 기술적 구현 세부 사항
을 설명하는 별도의 블로그 게시물을 Medium에 올려두었으니 참고하시기 바랍니다. 그리고 2019년도 Google I/O에서 Hummingbird에 관해 공유할 정보가 많을 것이므로, 그때 뵙고 자세한 얘기를 나눌 수 있기를 바랍니다!
물론, 모바일은 여전히 우리의 최우선 관심사이므로 앞으로 몇 개월에 걸쳐 이러한 핵심 모바일 시나리오에 많은 투자가 이루어질 것으로 기대하셔도 좋습니다.
결론
Flutter 1.0의 출시와 함께, 우리는 기존의 베타, 개발 및 마스터 채널 외에도 새로운 '안정' 채널을 마련했습니다. 안정 채널은 다른 채널보다는 업데이트 빈도가 덜하겠지만, 다른 채널을 통해 이미 빌드에 대한 검사를 마쳤으므로 품질에 관해서는 더욱 확신하는 바입니다. 분기마다 가장 엄격한 테스트를 거친 빌드로 안정 채널을 업데이트할 것으로 예상합니다.
https://flutter.io
웹사이트에서 Flutter 1.0을 다운로드할 수 있으며, 이곳에서
다른 프레임워크에서 전환하는 개발자를 위한 문서
,
코드 랩
,
공통 샘플 설명서
,
기술 동영상
도 찾아보실 수 있습니다.
지금까지의 여정에서 우리와 함께 한 얼리 어답터가 특히 많은 기여를 해주셨습니다. 그분들은 적극적으로 피드백을 제공하고 문제를 파악하고 콘텐츠를 만들고 제품의 전반적인 형태를 잡아주는 등 큰 역할을 해주셨습니다. Flutter 커뮤니티는 하나의 프로젝트로서 우리가 가진 최대의 자산 중 하나입니다. 커뮤니티에 속한 모든 분 역시 이 오픈소스 프로젝트에 대한 관심이 크시므로, 사심 없이 자발적으로 활동하며 많은 도움을 주시는 개인들이 모인 다양하고 따뜻한 분위기의 커뮤니티입니다.
여러분을 위해 Flutter가 준비되어 있습니다. 무엇을 빌드하시겠습니까?
Contents
ML/Tensorflow
Android
Flutter
Web/Chrome
Cloud
Google Play
Community
Game
Firebase
검색
Tag
인디게임페스티벌
정책 세미나
창구프로그램
AdMob
AI
Android
Android 12
Android 12L
Android 13
Android 14
Android Assistant
Android Auto
Android Games
Android Jetpack
Android Machine Learning
Android Privacy
Android Studio
Android TV
Android Wear
App Bundle
bootcamp
Business
Chrome
Cloud
Community
compose
Firebase
Flutter
Foldables
Game
gdg
GDSC
google
Google Developer Student Clubs
Google Play
Google Play Games
Interview
Jetpack
Jetpack Compose
kotlin
Large Screens
Library
ma
Material Design
Material You
ML/Tensorflow
mobile games
Now in Android
PC
Play Console
Policy
priva
wa
wear
Wearables
Web
Web/Chrome
Weeklyupdates
WorkManager
Archive
2024
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2023
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2022
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2021
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2020
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2019
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2018
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2017
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2016
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2015
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2014
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2013
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2012
12월
11월
10월
9월
8월
7월
6월
5월
3월
2월
1월
2011
12월
11월
Feed