책소개
핵심 원리부터 개발 패러다임, 설계 패턴까지실무 역량을 키우는 올인원 가이드플러터는 구글이 개발한 오픈 소스 프레임워크로, 하나의 코드베이스로 안드로이드, iOS, 웹, 데스크톱 등 다양한 플랫폼의 애플리케이션을 개발할 수 있게 해줍니다. 다트 언어를 기반으로네이티브에 가까운 성능을 구현할 수 있어, 개발 생산성을 높이고 완성도 높은 결과물을 빠르게 만들어낼 수 있다는 장점이 있습니다.하지만 플러터로 애플리케이션을 개발하다 보면 단순한 구현을 넘어 아키텍처, 품질 관리, 보안 등 다양한 문제에 직면하게 됩니다. 이 책은 이러한 실무적 고민에 답하기 위해 플러터의 기본 원리부터 아키텍처 스타일, 설계 패턴, 상태 관리, 동시성 처리까지 폭넓게 다룹니다. 더 나아가 시니어 개발자로 성장하는 데 필요한 엔지니어링 관점과 함께 반응형·적응형 UI, 국제화, 테마, 셰이더 같은 고급 주제도 소개하여 실무에 곧바로 적용할 수 있도록 도와줍니다.공식 문서에서 접했던 개념들을 다시 꼼꼼히 짚어주고, 다양한 예제와 사례를 통해 실무 문제 해결 능력을 기를 수 있게 구성했습니다. 이 책은 단순한 플러터 사용법을 넘어, 견고하고 확장 가능한 애플리케이션을 만들기 위한 소프트웨어 공학적 통찰까지 담고 있습니다.
저자소개
국내 플러터 개발자 생태계의 성장을 위해 커뮤니티 활동을 이어가고 있습니다. 플러터 서울과 플러터 인천의 운영진으로서 밋업과 세미나를 꾸준히 열며, 개발자들이 함께 배우고 성장하는 기반을 만드는 데 힘쓰고 있습니다. 또한 캐나다 몬트리올에서 활동하는 플러터 및 다트 구글 디벨로퍼스 엑스퍼트(GDE) Jhin Lee(이진석)와 협력하여, 현업 경험과 글로벌 인사이트를 번역 작업에 녹여내고자 했습니다. 커뮤니티에서 얻은 지식과 경험을 독자와 나누며 더 많은 개발자가 플러터를 친근하게 접할 수 있기를 바랍니다.
목차
[PART 1 플러터 엔지니어링 기초]CHAPTER 1 플러터 엔지니어링 핵심 개념_1.1 플러터의 소프트웨어 엔지니어링_1.2 핵심 원칙 파헤치기_1.3 플러터 개발 생명주기_1.4 플러터 엔지니어링 대 프로그래밍_1.5 기술 진화 속 플러터의 위치_1.6 결론CHAPTER 2 플러터 아키텍처 및 엔지니어링 개요_2.1 플러터의 내부 구조의 중요성_2.2 플러터의 반응형 및 선언형 특징_2.3 플러터의 모토_2.4 주요 구성 요소와 프레임워크_2.5 그래픽, 렌더링, 시각화_2.6 위젯과 애플리케이션의 생명주기 탐색하기_2.7 플러터 UI에서 제약 조건 관리하기_2.8 플러터에서 키의 중요성과 사용법_2.9 결론CHAPTER 3 플러터와 네이티브 플랫폼 통합_3.1 플랫폼 채널_3.2 다트 FFI_3.3 FFIgen_3.4 JNIgen_3.5 결론CHAPTER 4 플러터에 엔지니어링 원칙 적용하기_4.1 객체 지향 프로그래밍 분석_4.2 클래식 소프트웨어 원칙 적용하기_4.3 결론CHAPTER 5 플러터 디자인 패턴_5.1 디자인 패턴의 역할_5.2 생성적 패턴_5.3 구조적 패턴_5.4 행동 패턴 역할에 대한 이해_5.5 결론[PART 2 아키텍처]CHAPTER 6 아키텍처 입문_6.1 설계적 결정의 핵심 역할_6.2 소프트웨어 설계적 선택에 영향을 주는 변수_6.3 아키텍처 생태계 파악하기_6.4 설계적 사고 기르기_6.5 반복 설계_6.6 단순성과 복잡성 사이에서 균형 잡기_6.7 결론CHAPTER 7 아키텍처 스타일 소개_7.1 아키텍처 스타일의 이해_7.2 계층형 스타일_7.3 이벤트 기반 아키텍처_7.4 마이크로커널(플러그인) 아키텍처_7.5 기타 아키텍처 방식과 패러다임_7.6 결론CHAPTER 8 UI 아키텍처 패턴_8.1 UI 아키텍처의 배경_8.2 주목할 만한 플러터 아키텍처들_8.3 플러터 표준 외의 아키텍처들_8.4 클린 아키텍처_8.5 기회비용 고려하기_8.6 플러터 아키텍처 커스터마이징_8.7 결론CHAPTER 9 동시성과 병렬성_9.1 동시성과 병렬성 이해하기_9.2 효율적인 작업 처리의 중요성_9.3 플러터의 단일 UI 스레드 원칙_9.4 비동기 프로그래밍 삼총사_9.5 비동기 데이터 흐름 관리하기_9.6 isolate로 범위 확장하기_9.7 결론CHAPTER 10 플러터의 오프라인 기능_10.1 오프라인 대응의 장점과 도전 과제_10.2 오프라인 우선 아키텍처_10.3 연결 상태 변경 모니터링 및 처리_10.4 백그라운드 동기화 중 데이터 무결성 보장_10.5 캐싱 패턴_10.6 결론CHAPTER 11 상태 관리_11.1 애플리케이션 상태 이해하기_11.2 로컬 상태와 전역 상태: 효과적인 범위 지정 방법_11.3 플러터의 내장 상태 관리 접근 방식_11.4 최선의 솔루션 선택하기_11.5 플러터의 유연성: 교체 및 반복_11.6 결론CHAPTER 12 플러터의 의존성 주입_12.1 의존성 주입의 원칙_12.2 분리된 코드의 이점_12.3 플러터에서 의존성 주입 구현하기_12.4 플러터의 의존성 주입 패키지 살펴보기_12.5 결론[PART 3 프로세스]CHAPTER 13 규칙 및 스타일 가이드라인_13.1 규칙의 근거_13.2 의미 있는 가이드라인 정의하기_13.3 규칙 준수 보장하기_13.4 자동화로 일관성 확보하기_13.5 린터와 dartfmt_13.6 결론CHAPTER 14 개발 협업_14.1 버전 관리 필수 사항_14.2 플러터 개발에 CI/CD 도입하기_14.3 효과적인 코드 리뷰_14.4 결론CHAPTER 15 문서화의 미학_15.1 소프트웨어 개발 문서화의 스펙트럼_15.2 플러터의 문서화 철학_15.3 살아있는 문서_15.4 오래된 문서의 위험성_15.5 결론CHAPTER 16 플러터의 테스트_16.1 테스트의 중요성_16.2 플러터 테스트 단계 이해하기_16.3 단위 테스트와 위젯 테스트 핵심 원칙_16.4 테스트 더블_16.5 플러터에서의 테스트 더블_16.6 통합 테스트와 골든 테스트의 세계_16.7 결론CHAPTER 17 환경과 플레이버_17.1 다중 환경과 플레이버의 필요성_17.2 원활한 CI/CD 통합_17.3 결론[PART 4 윤리적 엔지니어링]CHAPTER 18 플러터의 보안 우선순위_18.1 보안의 기본 원칙_18.2 CIA 삼각형: 기밀성, 무결성, 가용성_18.3 OWASP Top 10 대응_18.4 정적 분석 및 동적 분석_18.5 플러터 보안 모범 사례_18.5 결론CHAPTER 19 플러터의 암호화_19.1 암호화 방식의 차이_19.2 해싱의 기본_19.3 디지털 서명을 통한 데이터 무결성 보장_19.4 결론CHAPTER 20 사용자 개인 정보 보호_20.1 주요 개인 정보 용어 이해하기_20.2 개인 정보 보호 설계 철학 수용하기_20.3 사용자 개인 정보 보호 모범 사례_20.4 국제 데이터 보호 규정_20.5 결론CHAPTER 21 모두를 위한 접근성 보장하기_21.1 다양한 장애 인지하기_21.2 포용적 애플리케이션 디자인의 명백한 이점_21.3 접근성의 네 가지 요소_21.4 접근성을 높이는 도구와 위젯_21.5 플러터 접근성 진단_21.6 결론[PART 5 고급 UI 개발]CHAPTER 22 적응형 UI 구축_22.1 플랫폼별 UI 고려 사항_22.2 고유한 플랫폼 기능 활용하기_22.3 결론CHAPTER 23 반응형 UI 기법_23.1 반응형 디자인의 원칙_23.2 플러터에서의 반응성 접근 방식_23.3 화면 방향에 따른 UI 조정_23.4 결론CHAPTER 24 i18n과 l10n_24.1 i18n와 l10n의 주요 차이점_24.2 플러터에서 국제화 구현하기_24.3 RTL 언어 환경을 위한 UI 설계_24.4 결론CHAPTER 25 플러터에서 테마 활용하기_25.1 플러터 테마_25.2 커스텀 테마 기법_25.3 다크 테마와 라이트 테마 관리하기_25.4 머티리얼 애플리케이션 테마 만들기 단계_25.5 테마 만들기 도구_25.6 결론CHAPTER 26 커스텀 페인터와 셰이더_26.1 커스텀 페인터의 기술_26.2 셰이더 탐구_26.3 플러터에서 셰이더 사용하기_26.4 결론