1. 계기
음 우선 Dart라는 언어와 Flutter라는 UI에 관심을 갖게 된 이유부터 언급하고 넘어가려 한다.
Dart는 요새 유행하는 말로 '풀스택(Full Stack)' (== "GUI 프론트엔드부터 백엔드까지 이르는 모든 소프트웨어 스택을 다룰 줄 아는 ..."을 의미)을 실현할 수 있는 프로그래밍 언어로 안드로이드와 iOS, 서버에 이르기까지를 호환하는 언어이다. Flutter는 Dart와 UI 구축 방식에 있어 가장 잘 맞는 상호보완적 존재로, 둘 중 하나만을 이야기할 수 없는 일종의 '실과 바늘'과 같은 존재가 되었다.

사실 서비스 기획과 마케팅, 창업과 같이 특정 분야로 어느정도 진로를 굳힌 시점에서 굳이(?)라는 생각이 들 수도 있지만, 필자는 '앱'이라는 생태계에도 관심이 굉장히 많았다. 그리고 개인적으로 여러 고민과 막연함에 조언해주었던 같은 학번의 동기 형이 계시는데, 그 분에게도 많은 영향을 받았다. iOS 개발을 하면서 본인이 경험했던 과정들과 스토리를 들어보면 정말 멋있다 못해 대단하다 싶을 정도였다. (어떻게 보면 학교 수업이 전부가 아님을 깨닫게 해주었달까..?) '정해진 교과목과 교수님이 내주신 과제에 그치면 안됨'을 알게 된 계기를 제공함과 동시에, 결국 '본인이 재밌어 하고 잘하는 분야를 나 스스로 찾아야 하는구나'를 깨닫게 되었다.
그렇게 대학교를 재학하면서 웹/파이썬 프로그래밍과 객체지향프로그래밍, 오픈소스sw 관련 수업을 듣고 개발자로써의 기초를 다진 상태에서 "내가 할 수 있는게 뭐가 있지..?" 라는 고민이 문득 떠올랐다. 데이터분석? 인공지능? 등등이 있겠지만 정말 deep하게 뭐 하나에 파고들 정도로 막 관심이 있지 않은 상태에서 단순히 기획과 마케팅이라는 한정된 분야에 머물러 있고 싶지 않았다. 그래서일까? JavaScipt나 자마린 같이 출시된 지 비교적 오래된 언어들을 다루는 것도 좋지만 가장 가볍고 빠른 성능의 개발 프레임워크로 나만의 앱, 프로젝트를 구상해보면 어떨까 고민했다. 그렇게 "한번 도전해보자!" 라며 결정한 것이 바로 Dart/Flutter다.
2. 앱? 웹?
그렇다면 웹/앱/ 서버 개발을 다룸에 있어 가장 보편적이고 널리 알려져 있는 JavaScript를 안 짚고 넘어갈 수 없다.
JavaScript는 개발자가 대화식 웹 페이지를 만들기 위해 사용하는 프로그래밍 언어입니다. 소셜 미디어 피드 새로 고침부터 애니메이션 및 대화형 지도 표시에 이르기까지, JavaScript 기능은 웹사이트의 사용자 경험을 개선할 수 있습니다. 클라이언트 측 스크립팅 언어로서 JavaScript는 월드 와이드 웹의 핵심 기술 중 하나입니다. 예를 들어 인터넷 탐색 시 웹페이지에서 이미지 슬라이드쇼, 클릭하면 표시되는 드롭 다운 메뉴 또는 객체 색상의 동적 변화를 보게 된다면 이는 JavaScript의 효과를 보는 것입니다.
https://aws.amazon.com/ko/what-is/javascript/참고
JavaScript란 무엇인가요? - JavaScript(JS) 설명 - AWS
클라이언트 측 JavaScript는 JavaScript가 브라우저에서 작동하는 방식을 나타냅니다. 이 경우 JavaScript 엔진은 브라우저 코드 내부에 있습니다. 모든 주요 웹 브라우저에는 자체 JavaScript 엔진이 내장
aws.amazon.com
즉 정적인 화면과 지루한 모션의 html/css를 보다 동적이고 활기차게 만들어준 언어가 바로 JavaScript이다. 필자는 아직 Java 영역에 대해 무지한 상태지만 웹 및 모바일 애플리케이션 개발, 반응형 웹 개발, 서버 측 애플리케이션 개발에서 JavaScript의 강력함을 익히 들어 알고 있었다. Node.js 를 이용한 서버 측 오픈 소스 프레임워크도 최근 굉장히 발전하면서 JavaScript를 이용한 서버 앱의 속도나 성능이 많이 좋아졌다고 한다. 하지만 활용 분야별로 파편화된(fragmented) 프레임워크들이 너무 많기도 하고, 학습이 많이 필요한 부분이 마음에 걸렸다. 특히 Script 기반의 언어다보니 JavaScript는 디버깅에 많은 시간을 할애해야 했다.
그런 점에 있어서 객체지향프로그래밍과 C 등이 익숙한 필자에게 Dart는 굉장히 매력적으로 다가왔던 듯 하다. 디버깅, 새로운 언어 학습이 어떨 땐 재밌기도 하지만, 굉장히 지루하고 힘든 과정임을 알 것이다 ㅠㅠㅜ..(무엇보다 발전가능성이 무궁무진하고! 구글이 지원한다는데 안 해볼 수 없지 ㅎㅎ).
# 결론
서론이 다소 길었는데 Flutter의 세계에 발을 디디면서 겪게 될 어려움(많이 사용을 안하니까.. 자료도 부족하고, 아직은 그렇게 인기가 없기도 하고? 재미가 없으려나..)이라던지 여러 난관이 예상된다 ㅎㅋㅋㅋ. 그래도 꾸준히 공부하면서 내용을 정리해보는 식으로 해당 카테고리에 기본 문법부터 개발 일지 등을 포스팅하려 한다.
# 참고문헌
아, 그리고 주된 학습 방법과 참고 서적은 아래 두 교재를 이용할 예정이다. 기타 아카이브 및 레퍼런스들도 자주 언급할텐데 관심 있다면 보고 참고해도 좋을 듯하다.


