Flutter를 배워볼까?: Day 1
on
phone app을 만드는 방법은 최소한 하나라도 알고 있는 게 좋지 싶었는데, Google에서 발표한 Flutter가 쓸만한 듯하여 막 시작했다.
사실 이것도 따지고 보면 objective C를 공부해야지 했던 시절로 거슬러 올라가니까 꽤나 긴건데, 생각해보면 이런 저런 제약 조건때문에 이걸로 취미삼긴 쉽지 않았던 것 같다. 무엇보다도 iOS의 경우는 폰에 사재 앱을 넣고 돌려보려면 개발자 등록이 되어있어야 되고 또 (내 소비철학에 반하는)iPhone을 가지고 있어야 하고, 안드로이드로 하려니 별로 좋아하지 않는 Java와 지저분한 개발환경이 걸렸던 것 같다. 안드로이드 스튜디오가 나와서 좋아지긴 했지만 여전히 답답할 뿐더러 자주 쓰지 않을 거라면 딱히 먼길 돌아가는 방법은 배워둘 이유가 없다 생각했던 것도 같다.
그래서 사실 Swift를 생각하기도 했었다. 그런데 역시나 안드로이드 쪽에서 Swift를 받아들이기엔 아직 좀 이른 분위기인 것 같고, 소비철학에도 안맞는 아이폰을 장난감 개발용으로 구입하는 것도 역시나 소비철학에 어긋나는지라 내키지 않았다. 그러다가 Flutter를 알게 되었는데, 역시나 이와 유사한 React Native보단 좀 나아보였달까?
역시나 Flutter를 배우면 좋겠다고 생각한 것은 뭐니 뭐니 해도 한가지만 배우면 단말 운영체제에 상관이 없다는 것이고 Google이 밀고 있다는 것이고, 또 Google IO에 나온 프레젠테이션 때문이었는데, 이걸 보면 거의 내 코드 변경 상황이 바로 옆 시뮬레이터에 그대로 반영되는 것을 볼 수 있다. 여기에 좀 더 보태면 데스크탑용 앱도 만들 수 있다는 것이다. 물론 데스크탑에서 실행하더라도 그 UI는 안드로이드나 iOS상에서 보이는 것과 비슷해서 (사실 다를 수가 없다) 사실상 OS 위에서 해당 어플을 돌릴 수 있는 바탕만 OS 별로 다르게 만들고 그 위에서 상위 개념의 스크립트 수준의 언어가 돌고 있다고 봐야지 싶다.
물론 빠른 PC가 있으면 좋고 기왕이면 Mac인 것이 좋겠다 싶다. Android 용으로 만드려면 Android Studio를 설치해야 되고 iOS용으로 하겠다면 Xcode는 기본이니까 둘 다 하겠다면 MacOS가 어쩔 수 없이 가장 좋은 환경이 된다.
생각보다 설치도 빠르고 빨리 테스트해볼 수 있어서 좋긴하다. 아마도 가장 흔한 환경이 Visual Studio Code + Xcode + Flutter가 아닐까 하는데, 일단 Visual Studio(Fluter용 익스텐션을 설치해야 한다)에서 새로운 flutter project를 만들면 곧바로 그게 iphone simulator에 떠오른다. Debug mode로 만들어놓고 source를 수정하면 그 수정내용이 거의 곧장 반영된다.
조금 더 뜯어보면
- Build 할 때 iOS의 경우 swift로 된 뭔가가 결과 물로 나오고 그게 Xcode를 통해 build된다.
- Runner라는 별도의 app이 있는데 아마도 이게 app에 포함되어 나머지 내용들을 실행하는 것으로 보여진다.
- 다른 OS의 경우도 마찬가지로 해당 OS와 가장 친화적인 runner가 먼저 만들어지고 이것이 dart를 컴파일한 결과물 (그것이 무엇인지는 모르나)을 실행하는 것으로 보여진다.
- dart라는 언어형식은 Java 스러운데 css 같아보이기도 하고 python 스럽기도 한 것으로 보아서 요즘 웹과 모바일에 쓰이는 모든 언어의 짜집기 집합체로 보여진다.
- 뭐니 뭐니 해도 장점은 이것을 가지고 web app도 만들고 mobile app도 만들고 desktop app도 만들 수 있다는 것이다. native로 돌아야 할 app이 아니면 이 정도 기능으로도 충분하지 싶다. 사실 개인이 native로 만들어야 할 app이란 게 있나 싶다. 요즘은 게임 같은 것은 개인이 만들 수 있는 수준의 난이도가 아니니까 말이다.
일단 올해 말까지는 flutter를 좀 파보면서 재미를 찾아야지 싶다.