처음 배우는 플러터 - 한빛미디어

728x90

 

예전에 구글 스타트업 센터에서 플러터를 알려주는 행사를 진행했었고, 참여해서 간단한 앱을 만들어 본적이 있다(거의 예제를 복붙하는 방식이긴 했지만...!) 플러터가 다트라는 언어를 이용한 것이고.... 또 크로스 플랫폼이니 해서 안드로이드, ios 전부다 호환이 되어서 앱 개발자에게 유용하고, 또 플러터는 최근(작년 기준)에 구글에서 공식 지정 언어로 선정되었다는 그런 얘기(추가적으로 앵귤러 얘기를 하면서 뒷통수를 조심해야한다는 농담도...)를 들었었다. 웹 개발자를 지향하고 있지만 앱 개발에 흥미가 없는 것은 아니다. 처음 개발자가 되고 싶다고 생각한 이유는 모바일 앱을 만들고 싶어서였다. 아니 정확히는 창업 아이템으로 만들어야 했는데 만들지 못했던 아쉬움이 커서였다.

웹 개발자인 나에게 안드로이드와 ios(swift 같은..?)를 둘다 공부하기에는 너무 시간이 아까웠다. 때마침 '플러터'의 입문책으로 좋은 책과 그 책의 서평 기회를 얻게 되어서, 이렇게 플러터 공부를 시작하게 되었다. 먼저 책 자체의 색상이 하늘(이 시국에 밖에 못 돌아다니는 상황속에서)을 연상케하여 시원한 느낌?이 들어서 좋았다.

먼저 목차부터 살펴보자 


목차

1장. 플러터 입문하기

2장. 처음 만드는 플러터 앱

 

3장. 다트 언어 소개

 

4장. 레이아웃과 위젯

 

5장. 화면 이동과 상태 관리

 

6장. HTTP/JSON 프로그래밍

 

7장. 안드로이드 채널 프로그래밍

 

8장. 테스트 

 


구성을 살펴봤을 때, 5, 6, 7장은 어떤 것을 다루는 것인지 감이 잘 안왔고 8장의 내용은 최근 테스트 코드 작성에 많이 신경쓰고 있던 터라 반가웠다. 그 외에는 목차만 훑어 보아도 입문서의 느낌이 솔솔 풍겨왔다. 이제 곧... 오 ~ 플러터 좀 할 줄 아는 놈이구나 소리를 들을 것만 같은 기분이다. 

이 책에 대한 모든 내용을 요약할까 했지만, 그런 것 보다도 이 글을 읽는 사람들에게 플러터가 적어도 어떤 것인지는 책의 내용을 요약해보고자 한다(다 요약하는 것은 책에 대한 스포일러가 아닌가?). 예상컨데 생각 이상으로 흥미가 생길 것이라 생각이 든다. 

서두에 크로스 플랫폼(cross platform)이라는 말을 했는데, 안드로이드의 경우 java, kotlin , ios의 경우 swift와 objective c를 사용해서 네이티브 앱을 만들었었다. 뭐 그 외에도 다른 방식도 존재했는데, 어쨋거나 앱을 만들 때에는 일반적으로 네이티브 앱을 만드는게 보편적인 개발방법이었다. 하지만 안드로이드와 iOS 모바일 애플리케이션을 단일 소스코드(one source)로 개발할 수 있는 UI 프레임워크가 탄생하였고... 이를 크로스 플랫폼 개발이라고 하고 플러터가 최초는 아니지만 대표적인 기술 중 하나이다. 즉 iOS와 안드로이드 앱을 둘 다 만들어야하는 상황에서 두 OS(이 명칭이 맞을까?)의 네이티브 앱을 각 각 공부해서 제작하는 것 보다 지금 소개하려는 플러터가 좋은 선택이 될 것이다. 

국내에서는 '네이버 지식인 앱'이 플러터로 만들어진 것이라고 하니 플러터의 기술적 문제(?)는 크게 없다고 봐도 무방할 것 같다(추가적으로 기존 크로스 플랫폼과 달리 네이티브 못지않게 가볍고 빠른 성능을 보여준다고 한다). 크로스 플랫폼 개발이 플러터만 있는 것은 아니지만, 다음말은 들으면 조금 이야기가 달라지지 않을까 싶다. 플러터는 구글이 개발한 것이다. 책에서도 자세히 설명이 되어있지만, 요즘 잘나간다고 하는 React도 페이스북이 만든 것이 아닌가..? 금방 납득이 되는 부분이었다. 

또한 플러터는 다트(Dart)라는 언어를 사용한다. 다트는 배우기 쉽고 강력한 기능을 제공하는 언어이고, 그리 깊게 학습하지 않아도 앱을 개발하는 것이 어렵지 않다고 한다.

IDE의 경우에도 안드로이드 스튜디오(같은JetBrain 사의 IntelliJ도 가능)나 MS의 VSCode로 개발이 가능하다. 책에서는 안드로이드 스튜디오로 개발할 것을 권한다.

나 같은 경우에도 이미 공개되어있는 예제를 따라서 쇼핑몰 앱을 만들었던 경험이 있다. 플러터는 많은 예제와 개발자 문서가 공개되어 있어, 구글에서 flutter로 검색하면 수많은 기사와 깃허브 소스코드를 확인할 수도 있다(공식 유튜브 채널도 지원하고 있다). 

플러터는 UI 프레임워크이다(처음 알았다). UI 프레임워크는 사용자가 UI를 만들 수 있도록 위젯과 레이아웃을 제공하는 것을 말한다. 처음부터 전부 개발하는 것이 아니라 화면을 구성하고 그 안에 들어가는 UI 컴포넌트(위젯)를 배치하고 기기와 UI 컴포넌트에서 발생하는 다양한 사용자 이벤트를 처리할 수 있도록 해준다.

저자가 강조하고 있는 부분이 있는데 '모든 것은 위젯이다'라는 것이다. 이 점을 숙지하 상태로 플러터를 공부하면 도움이 될 것이다. 또 플러터를 이용해서 쉽게 앱을 만들 수 있는 이유 중 하나가 다양한 위젯을 기본으로 제공하고 있어 (비교적 적은 노력으로) 멋진 앱을 만들 수 있다.

환경 설정

플러터 개발을 위해서는 플러터 SDK(안드로이드 스튜디오의 Plugin으로 다운받는다)를 추가적으로 설치해야한다. 또한 이 책에서는 안드로이드 스튜디오를 사용하므로 안스의 설치가 필요하고, 안드로이드 SDK도 안깔려 있는 경우에는(나 같은 웹쟁이는 아마도 안깔려있을 것이다... 실은 예전에 깔았던 적이 있지만 싹다 지운것 같다...) 이 또한 다운받아야 한다. 

이후의 학습 내용... 

이 뒤로 책의 구성은 (여느 입문서적과 같이) Hello Flutter 프로젝트를 생성하는 것 부터 시작해서 플러터 앱의 구성 요소와 '핫 리로드'에 대해 설명하고 실습을 진행하고 플러터의 언어인 다트 언어에 대한 소개, 플러터의 구성요소인 위젯의 다양한 종류를 알아본다. 또한 화면을 새로 추가하거나 화면을 이동하는 방법 및 Routes의 개념과 앱의 상태관리(State Management)에 대한 학습도 진행된다. 추가적으로 서버와 통신하여 JSON 데이터를 받아 파싱하고, 공공 API를 연동하여 간단한 앱을 만들어 본다. 아마 이부분이 제일 새롭게 느껴졌는데(예측이 안됐다), 안드로이드 채널 프로그래밍이라는 개념을 배운다. 마지막으로 다트 테스트, 개별 위젯 테스트, 통합 테스트를 배우며 책이 마무리된다. 

이 책의 장점

무엇보다 입문서적으로써 가볍게 볼 수 있고 분량 자체가 적은편(250페이지가 안된다!)이라 넘치는 의욕을 가지고 책을 읽으면 단숨에 읽을 수 있다(물론 실습을 병행하면서 하니까 하루, 이틀만에 완독을 하기에는 힘들것이다!). 두 번째로 예제를 따라하고 그 예제의 결과물을 바로 눈으로 볼 수 있다는 점에서 재미가 붙는다. 이 책을 읽는 몇일 동안은 정해진 스케줄을 잘 지키지 못했다. 왜냐하면 책을 따라 실습을 진행하면 시간 가는 줄 몰라서였다(이렇게 적고 보니까 백엔드와는 달리 안드로이드 스튜디오의 장점인 것 같기도 하다). 또한 다트 언어를 쉽게 익힐 수 있다(자바를 주 언어로 쓰는 나한테는 다트 언어가 그렇게 낯설게 느껴지지는 않았다! 그래서인지 다트 언어를 몰라서 문제된 경우는 별로 없었던 것 같다). 다음으로 이건 나의 주관이 강하지만, 항상 책을 읽다보면 왜? 라는 질문이 많이 떠오른다. 하지만 이 책을 읽으면서 그런게 별로 없었다. 아니 잠.시 있었다. 그 왜?에 대한 질문이 항상 뒤따라 나왔기 때문이다. 책을 읽다보면 구성이 독자에게 친숙하지 않은 책들이 종종 있다(실은 뒤에 이미 답이 있었는데, 궁금증이 생긴 독자 입장에서는 이해를 못해서 구글링을 해서 해당 설명을 찾아 보고 다시 돌아와서 책을 읽어나갔더니 뒤에 더 좋은 설명이 있다던지? 하는 독서의 흐름이 끊기는 구성). 개발자의 길을 들어서기 전만 하더라도 책을 정말 지지리도 안 읽던 터라... 그 습관이 베겨서인지 아직도 책이 잘 안읽어지는 경우가 많다. 내가 책을 쉽게 읽어 나갔다는건 글의 구성적인 측면에서 글의 흐름을 독자가 적절하게 예상하거나 혹은 느낄 수 있다는 것인데, 그게 잘 됐다고 생각한다. 읽기 쉽도록 구성을 잘 짠 책이라 생각한다. 마지막으로 요즘 테스트 코드에 꽂혀있어서인지, 테스트에 대한 설명이 있다는 것이 정말 마음에 들었다(테스트에 대한 설명이 있는 책이 생각보다 별로 없다.. 특히 입문서에서..). 목차만봐도 마음에 들었지만 실제 내용을 보면서도 배워가는게 많았다. 

 

이렇게 간만에 플러터를 공부해보는 시간을 가졌는데, 간만에 웹 아닌 앱을 했더니 가벼운 마음으로 해서 그런가 더 재밌었던것 같다. 취직하고나면 앱으로 뭐 하나 만들어봐야겠다는 생각이 든다. (막상 취직하면 말을 달리할지 모르겠지만... 일단은 다짐해본다) 

728x90