Top

플러터 실무 개발 [3가지 애플리케이션을 만들면서 배우는]

  • 원서명Practical Flutter: Improve your Mobile Development with Google’s Latest Open-Source SDK (ISBN 9781484249710)
  • 지은이프랭크 자메티(Frank Zammetti)
  • 옮긴이김성일
  • ISBN : 9791161754468
  • 30,000원
  • 2020년 08월 31일 펴냄
  • 페이퍼백 | 476쪽 | 188*235mm
  • 시리즈 : 모바일 프로그래밍

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/practical-flutter

요약

구글의 최신 오픈소스 SDK인 플러터(Flutter)를 활용해 아이폰과 안드로이드를 하나의 코드 베이스로 개발할 수 있도록 안내한다. 플러터의 핵심언어인 다트(Dart)의 기본 문법을 소개하고 실제 앱을 만들어가면서 실무에 바로 활용할 수 있도록 여러 가지 팁을 제공한다. 특히 독자의 흥미를 끌 수 있도록 앱과 통신하는 간단한 서버 개발과 게임 개발까지 포함하고 있어 즐겁게 읽을 수 있으리라 생각한다. 해외에서는 벌써부터 플러터가 인기 있는 주제지만 국내에는 아직 모르는 개발자가 많다. 이 책이 플러터를 시작하고 스타트업부터 개발에 관심 있는 많은 사람들에게 도움이 될 것이다.

이 책에서 다루는 내용

플러터의 개념과 활용 방법을 다룬다. 모바일 개발은 빠른 속도로 발전하고 있다. 구글이 만든 플러터를 활용해 안드로이드와 iOS용 애플리케이션을 개발할 수 있다. 이 책은 크게 모바일 기기에 설치하고 실제로 실행할 수 있는 세 가지 애플리케이션(개인정보 관리자, 채팅 시스템, 게임 프로젝트)의 개발로 구성돼 있다. 이를 통해 플러터의 탄탄한 기초를 쌓고, 실제로 애플리케이션을 구축해볼 수 있다.

저자/역자 소개

지은이의 말

이 책에서는 개념을 설명하는 초반 예제 몇 개를 제외하면 지나치게 단순하거나 억지로 만든 예제가 아닌 진짜 앱 두 개를 만들면서 플러터를 배운다. 함께 만들 앱은 단순히 기술을 보여주는 앱이 아니라 원한다면 실제로도 사용할 수 있는 실용적인 앱이다. 그리고 앱을 만드는 동안 저자가 개발 과정에서 겪었던 문제점을 포함해 앱 개발의 다양한 측면을 볼 수 있다. 이러한 과정은 나중에 자신의 앱을 만들 때를 대비해서 실제 개발 방식으로 플러터를 경험해볼 수 있는 기회가 될 것이다.
또한 노드js(Node.js)와 웹소켓(WebSocket)을 사용해 서버를 구축하는 등 앱을 구축할 때 중요한 사항을 알려준다. 이런 소중한 보너스 지식을 플러터 개발에 활용할 수도 있다.
또 처음 두 앱과 완전히 다른 세 번째 앱도 준비돼 있다. 바로 게임이다. 처음 두 앱이 전혀 다루지 않는 플러터의 부가적인 기능을 강조하려는 이유도 있고 플러터를 다른 각도에서 볼 기회를 줘서 최대한 시야를 넓혀주고 싶었다. 게임은 어떤 의미로는 ‘실용적’이지 않을 수 있지만, 확실히 만들기 재미있고 작은 재미는 누구도 다치게 하지 않는다.
결국 플러터를 잘 다룰 수 있게 될 것이며, 이를 통해 멋진 앱을 만들 수 있는 훌륭한 위치에 서게 될 것이다.
무엇을 배우는 가장 좋은 방법은 직접 수행하는 것임을 잊지 말자. 코드에 확실히 빠져들어 예제와 앱을 해킹하고 변경하면서 어떻게 되는지 확인하라. 각 앱과 관련된 장을 다 읽었을 때 하나 또는 두 개의 기능을 추가해보자. 플러터가 가진 힘으로 인해 작은 변화만으로도 화면에 나타나는 내용에 큰 차이가 생길 수 있다는 것을 곧 알게 될 것이다.

지은이 소개

프랭크 자메티(Frank Zammetti)

아주 작다는 의미로 ‘약간의’ 명성이 있는기술 저자다. 거의 40년 동안 프로그래머였고 그중 25년은 전문적으로 일했다. 요즘에는 명함에 아키텍트라고 쓰지만 여전히 개발자로 일하며 거의 매일 코드를 다룬다. 전문 용어로 표현하면 최상급 괴짜다. 사악한 명령을 따르는 코드를 만들지 않을 때는 공상 과학 영화를 보거나 공상 과학 소설을 읽고 쓴다. 또한 레일건, 테슬라 코일 등 언젠가 자신의 생명을 앗아갈지도 모를 장치를 만들기도 한다. 단순히 좋아한다는 이유로 뜬금없이 「전함 바빌론 5(Babylon 5)」, 「반지의 제왕(Lord of the Rings)」, 「리딕 - 헬리온 최후의 빛(Chronicles of Riddick)」, 「21세기 두뇌 게임(Real Genius)」의 대사를 인용할 때도 있다. 또한 우주의 영웅인 척하는 게임이나 기타 히어로(guitar hero) 부류의 게임을 주로 즐긴다. 키보드를 연주하는 프로그레시브 록 뮤지션이며, 피자와 모든 탄수화물을 열렬히 섭취하는 사람이다. 아내, 자녀, 반려견과 함께 지낸다는 점이 더욱 굉장하다. 시간 계획을 세울 때면 항상 일어나서 “그리고 내 도끼도!”라고 외친다. 앞서 말했지만 별 이유없이 「반지의 제왕」에서 인용한 대사다. 정말 괴짜다.

옮긴이의 말

새로운 것을 배우는 것은 항상 신나는 일이다. 하루가 멀다고 여러 기술이 나오지만, 그중에서 최근에 가장 눈에 띄는 것은 플러터다. 이미 미국에서는 정말 뜨거운 반응을 그대로 느낄 수 있다. 우연한 기회에 플러터를 접했고, 기존 하이브리드 앱 개발 기술에 많이 실망했던 터라 그냥 지나갈 뻔했지만, 구글이 만들었다는 이야기에 다시 한 번 눈이 가기 시작했다. 인터넷에 있는 많은 플러터 샘플 앱을 본다면 가장 처음 느끼는 감정은 ‘예쁘다’일 것이다. 디자인에도 신경을 많이 써서 성능뿐만 아니라 감성도 고려한 프레임워크라는 생각이 들 것이다. 이런 감정을 느끼던 시기에 우연히 번역 의뢰를 받았고, 그 당시에는 플러터에 관한 책이 한국에 한 권도 없었기에 사람들에게 큰 도움이 될 것이라 생각하고 선뜻 번역을 시작했다. 이런저런 이유로 작업 기간이 늘어지면서 비록 국내 1호 플러터 책이 되지는 못했지만 책 내용만큼은 훌륭하다고 생각한다. 다트라는 새로운 언어를 사용해야 한다는 부담감은 있겠지만 실용적인 예제를 함께 만들어가면서 책을 끝마칠 때쯤이면 플러터 앱 몇 개를 완성하게 될 것이다. 이 책은 개발 초심자가 따라 하기는 조금 어려울 수 있지만, 안드로이드나 iOS 개발을 1년 이상 해본 경험이 있다면, 쉽게 따라 할 수 있을 것이다. 플러터가 앱 개발 시장에서 어떻게 자리매김할지는 아무도 모를 일이다. 중요한 것은 지금까지 나온 하이브리드 앱 개발 프레임워크 중에서 플러터가 가장 완성도 있고 미래가 기대된다는 점이다. 이 책을 통해 여러분이 다른 사람보다 먼저 미래를 경험하길 바란다.

옮긴이 소개

김성일

전자공학을 전공했지만 소프트웨어에 대한 호기심이 많다. 대학 시절 프리랜서로 공공기관과 기업 SI를 통해 실무 경험을 쌓았다. 디자인에도 관심이 많아 웹 디자이너 생활도 했으며, 중소기업청 예비기술창업 중점 과제에 선정돼 ‘모바일 광고 플랫폼’ 스타트업 대표로 활동했다. 이후 삼성 SDS 연구소를 거쳐 지금은 LGU+ 빅데이터 담당에서 데이터엔지니어로 근무 중이다. 모든 것은 하나로 통한다는 신념으로 다양한 경험을 즐기며, 언젠가 올 그날을 위해 항상 준비하고 공부하는 중이다. 에이콘출판사에서 출간한 『리액티브 안드로이드 프로그래밍』(2018), 『MariaDB 성능 분석과 최적화』(2015), 『반응형 안드로이드 앱 UI 개발』(2015)을 번역했다.

목차

목차
  • 1장. 플러터: 가벼운 소개
    • 심연에 관한 명상
    • 바보 같은 이름에는 무엇이 있는가?
    • 다트: 신들의 언어?
    • 왼쪽에 위젯, 오른쪽에도 위젯
    • 기본 사항: 플러터의 장단점
    • 말은 그만하고, 플러터를 써보자
      • 플러터 SDK
      • 안드로이드 스튜디오
    • (약간 덜) 전형적인 ‘Hello, World!’ 앱
  • 핫 리로드: 이것을 좋아할 것이다.
  • 기본 플러터 애플리케이션 구조
  • 약간의 추가 세부 사항
  • 요약

  • 2장. 다트를 제대로 알아보기
    • 꼭 알아야 하는 것
      • 노코멘트: 주석에 관해
      • 변수
      • 데이터 타입(자료형)
      • 열거형
      • as와 is 키워드
      • 흐름 제어(및 논리) 구조
      • void
      • 연산자
      • 다트에서의 객체지향
      • 함수와 놀기
      • 어써션
      • 시간 초과: 비동기
      • 라이브러리(및 가시성)
      • 예외 처리
      • 제너레이터
      • 메타데이터
      • 제네릭
    • 요약

  • 3장. 플러터, 파트 I
    • 위젯 뷔페
      • 레이아웃
      • 내비게이션
      • 입력
      • 다이얼로그, 팝업, 메시지
    • 요약

  • 4장. 플러터, 파트 II
    • 위젯 스타일링
      • Theme와 ThemeData
      • Opacity
      • DecoratedBox
      • Transform
    • 애니메이션과 트랜지션
      • AnimatedContainer
      • AnimatedCrossFade
      • AnimatedDefaultTextStyle
      • 기타: AnimatedOpacity, AnimatedPositioned, PositionedTransition, SlideTransition,
  • AnimatedSize, ScaleTransition, SizeTransition, RotationTransition
    • 드래그 앤 드롭
    • 데이터 뷰
      • Table
      • DataTable
      • GridView
      • ListView와 ListTile
    • 기타 위젯
      • CircularProgressIndicator(CupertinoActivityIndicator)와 LinearProgressIndicator
      • Icon
      • Image
      • Chip
      • FloatingActionButton
      • PopupMenuButton
    • API
      • 핵심 플러터 프레임워크 라이브러리
      • 다트 라이브러리
      • 기타(지원) 라이브러리
    • 요약

  • 5장. 플러터북, 파트 I
    • 무엇을 만들 것인가?
    • 프로젝트 시작
    • 구성과 플러그인
    • UI 구조
    • 앱 코드 구조
    • 출발선
    • 전역 유틸리티
    • 상태 관리
    • 쉬운 것부터 시작: 메모
      • 시작점: Notes.dart
      • 모델: NotesModel.dart
      • 데이터베이스 계층: NotesDBWorker.dart
      • 리스트 화면: NotesList.dart
      • 입력 화면: NotesEntry.dart
    • 요약

  • 6장. 플러터북, 파트 II
    • 작업
      • TasksModel.dart
      • TasksDBWorker.dart
      • Tasks.dart
      • TasksList.dart
      • TasksEntry.dart
    • 날짜 정하기: 일정
      • AppointmentsModel.dart
      • AppointmentsDBWorker.dart
      • Appointments.dart
      • AppointementsList.dart
      • AppointmentsEntry.dart
    • 연락처
      • ContactsModel.dart
      • ContactsDBWorker.dart
      • Contacts.dart
      • ContactsList.dart
      • ContactsEntry.dart
    • 요약

  • 7장. 플러터챗, 파트 I: 서버
    • 그것을 만들 수 있을까? 물론 만들 수 있다. 하지만 무엇을 말인가?
    • 노드
    • 통신 회선 개방 유지: socket.io
    • 플러터챗 서버 코드
      • 상태와 객체 소개
      • 메시지
    • 요약

  • 8장. 플러터챗, 파트 II: 클라이언트
    • Model.dart
    • Connector.dart
      • 서버 바운드 메시지 함수
      • 클라이언트 바운드 메시지 핸들러
    • main.dart
    • LoginDialog.dart
      • 기존 사용자 로그인
    • Home.dart
    • AppDrawer.dart
    • Lobby.dart
    • CreateRoom.dart
      • Form 구성
    • UserList.dart
    • Room.dart
      • 대화방 기능 메뉴
      • 메인 화면 내용
      • 사용자 초대 또는 쫓아내기
    • 요약

  • 9장. 플러터히어로: 플러터 게임
    • 지금까지의 이야기
    • 기본 레이아웃
    • 디렉터리 구조와 구성 요소 소스 파일
    • 구성: pubspec.yaml
    • GameObject 클래스
    • GameObject에서 확장: Enemy 클래스
    • GameObject에서 확장: Player 클래스
    • 모든 것이 시작되는 곳: main.dart
    • 메인 게임 루프와 핵심 게임 로직
      • 킥오프
      • 최초 초기화
      • 게임 상태 재설정
      • 메인 게임 루프
      • 충돌 확인
      • 객체의 무작위 배치
      • 에너지 전달
    • 제어: InputController.dart
    • 요약
  • 도서 오류 신고

    도서 오류 신고

    에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

    오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

    (예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

    정오표

    정오표

    [p.93 : 아래에서 3행]
    lass Hero {
    ->
    Class Hero {