[ 앱 개발자 도전기 : Flutter InterView 준비 ]
Flutter 면접 질문 대비 공부하기 - [1]
∇ Flutter 면접 질문 대비 공부하기.
목 차
1. Flutter의 장점은?
2. Flutter Architechture ( 아키텍쳐 )
3. Flutter의 주요 특징.
4. Flutter의 Build Mode
Ⅰ . Flutter의 장점은?
1. 개발 시간 단축 [ Hot Reload ] : Hot Reload 기능으로 개발 시간을 단축 가능합니다.
2. 크로스 플랫폼 개발 가능 : 현재 Android, IOS, Web, Windows, macOS, Linux 지원.
3. Live and Hot Reloading : 파일이 수정되거나 업데이트 되었을 때,
Hot Reloading이 진행되면서 앱 개발 프로세스를 단축시킬 수 있습니다.
4. 풍부한 UI Widget : 유연하고 다양한 UI Widget을 제공하기 때문에 UI 작업을 간소화해줍니다.
5. 활발한 커뮤니티와 질 좋은 documents
Ⅱ . Flutter Architechture ( 아키텍쳐 )
※ Flutter의 구조는 세 개의 레이어로 구성됩니다.
1. Framework ( Upper Layers )
: Dart 기반 레이어로, 개발자가 가장 많이 상호작용하는 부분입니다.
구성요소는 다음과 같습니다.
- Material 라이브러리 : Material 디자인 가이드라인을 따르는 위젯들의 집합입니다.
- 안드로이드 스타일의 앱을 빠르게 개발할 때 매우 유용합니다.
- 특히, 테마 / 라우팅 / 로케일 등을 쉽게 관리할 수 있습니다.
§ 주요 특징.
- Android 스타일의 UI 컴포넌트 제공.
- Material 디자인 규칙을 따르는 애니메이션과 레이아웃
- 'MaterialApp' , 'Scaffold' , 'AppBar' 등의 위젯 포함.
- Cupertino 라이브러리 : IOS 디자인 가이드라인을 따르는 위젯들의 집합입니다.
- ios 사용자에게 친숙한 UI를 제공하고자 할 때 사용합니다.
§ 주요 특징.
- IOS 스타일의 UI 컴포넌트 제공.
- Apple의 HIG ( Human Interface Guidelines )를 따르는 디자인.
- 'CupertinoApp' , 'CupertinoNavigationBar' , 'CupertinoButton' 등의 위젯 포함.
Material 이나 Cupertino 위젯을 기반으로, 앱의 고유한 디자인 시스템을 구축하는 것도 가능합니다.
이러한 유연성이 Flutter의 큰 장점 중 하나입니다.
- App Widgets : Flutter의 모든 UI요소는 위젯입니다.
- StatelessWidget 과 StatefulWidget 이 여기에 속합니다.
- Rendering : Flutter의 레이아웃을 처리하고 위젯 트리를 실제 화면에 그리는 역할을 합니다.
- Animation : 부드러운 UI 전환을 위한 애니메이션 시스템을 제공합니다.
- Painting : 캔버스 API를 통해 커스텀 그래픽을 그릴 수 있게 해줍니다.
- Gestures: 터치 이벤트를 처리합니다.\
- Foundation: Framework 레이어에서 가장 기본적인 부분입니다.
- Flutter 애플리케이션을 구축하는 데 필요한 기본적인 클래스와 함수들을 제공합니다.
- 실무에서 거의 모든 Flutter 코드의 기반이 됩니다.
setState() 메서드나, BuildContext와 같은 핵심 개념들이 여기에 포함됩니다.
§ 주요 기능.
- 컬렉션 (List, Map 등)
- 입출력 영상
- 비동기 프로그래밍 지원 ( Future, Stream )
- 기본적인 데이터 구조와 유틸리티 함수,
2. Engine Layers
: C ++ 로 작성된 이 레이어는 Flutter의 핵심 기능을 담당합니다.
실무레벨에서는 해당 레이어와 직접 상호작용할 일은 거의 없지만,
새로 화면을 그릴 때마다 화면을 레스터화 해주는 기능을 담당하기 때문에
성능을 결정짓는 요소라는 것은 알아두어야 합니다.
3. Embedder Layers
: Flutter를 각 플랫폼(Ios, Android, Web 등등) 에 통합시키는 역할을 수행합니다.
> 플랫폼별 입력 이벤트를 Flutter 이벤트로 변환.
> 플랫폼의 네이티브 UI 요소와 Flutter UI의 통합.
> 플랫폼별 API 접근 제공.
◎ 실무에서의 아키텍쳐 적용.
1. Presentation Layer : 위젯과 화면 구성.
2. Business Logic Layer : 상태관리 (Provider, Bloc 등 사용 )
3. Data Layer : API 통신, 로컬 데이터 저장 등
이러한 구조를 통해 코드의 재사용성을 높이고, 유지보수를 용이하게 할 수 있습니다.
Ⅲ . Flutter의 주요 특징.
◎ Flutter의 주요 특징은 크게 다섯가지로 요약 가능합니다.
A. 크로스 플랫폼 개발
: Flutter를 사용하면 하나의 코드베이스로 IOS, Android, 웹, 데스크톱 앱 등을 개발할 수 있습니다.
이는 개발 시간과 비용을 크게 절감시켜줍니다.
B. 핫 리로드(Hot Reload)
: 코드의 변경사항을 실시간으로 앱에 반영할 수 있게 해줍니다.
이를 통해서 개발 속도가 크게 향상되고, UI 조정이나 버그 수정이 매우 빠르게 이루어질 수 있습니다.
C. 위젯 기반 UI
: Flutter의 (거의) 모든 UI 요소는위젯으로 구성됩니다.
이 위젯 기반 접근 방식은 일관된 UI를 구축하고 커스터마이징하는데 매우 효과적입니다.
D. 고성능 애니메이션 렌더링
: Flutter는 Skia 그래픽 엔진을 사용하여, UI를 직접 렌더링합니다.
이로 인해서 네이티브 앱에 준하는 뛰어난 성능을 제공합니다.
E. 풍부한 라이브러리와 도구.
: Flutter는 Material Design과 Cupertino 스타일의 위젯을 기본으로 제공하며,
pub,dev를 통해 다양한 서드파티 패키지를 쉽게 활용 가능합니다.
Ⅳ . Flutter의 Build Mode
◎ Flutter의 Build Mode는 크게 3가지로 구분됩니다.
1. Debug 모드
2. Release 모드
3. Profile 모드.
1. Debug Mode : 실기기, 애뮬레이터, 시뮬레이터에서 앱을 디버깅 할 수 있습니다.
- Assertions와 Service Extension이 활성화됩니다.
- 컴파일을 최적화하여 빠른 배포를 수행합니다.
√ 개발 중에 주로 사용됩니다.
√ Hot Reload 기능을 지원하여, 빠른 개발이 가능합니다.
√ 상세한 에러 메시지와 스택 트레이스를 제공합니다.
√ 성능 최적화가 되어 있지 않아서 실행 속도가 상대적으로 느립니다.
√ flutter run 명령어로 실행.
2. Release Mode : 앱을 배포할 때, 릴리즈 모드는 설치 공간 크기를 최소화하고 최적화를 극대화합니다.
- Debugging, Aseertions, Service extensions는 여기서 사용할 수 없습니다.
- 빠른 시작, 빠른 실행, 작은 크기가 핵심 기능입니다.
- flutter run --release // flutter build<platform> 명령어로 실행.
√ 앱 출시를 위한 최종 빌드에 사용됩니다.
√ 앱 크기가 가장 작습니다.
√ 성능이 최적화되어 있어서 실행 속도가 가장 빠릅니다.
√ 디버깅 기능이 비활성화되어 있습니다.
√ 코드 최소화(minification) 와 트리 쉐이킹(tree shaking)이 적용됩니다.
3. Profile Mode : 앱의 성능을 분석하기에 충분할 정도의 일부 디버깅 기능이 유지됩니다.
- 추적 및 일부 확장이 활성화되지만,
애뮬레이터와 시뮬레이터에서 프로필 모드는 동작이 실제 성능을 재현하지 않기 때문에 사용할 수 없습니다.
- flutter run --profile명령어로 실행.
√ 앱의 성능을 분석하고 프로파일링할 때 사용됩니다.
√ Release 모드와 유사하지만, 일부 디버깅 기능이 활성화되어 있습니다.
√ 성능 오버레이 등의 프로파일링 도구를 사용할 수 있습니다.
√ 에뮬레이터나 시뮬레이터에서는 사용할 수 없고, 실제 디바이스에서만 사용 가능합니다.