NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    기타 아이폰, 안드로이드폰 매크로 앱 만들기. (with Flutter)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 앱 개발이라곤 아이폰이 세상에 나왔을 때 처음 접해본 Objective-C가 전부인데요. 물론, C나 C++, Java, Python, Spring, Node.js, TypeScript등등... 여러가지 언어들을 사용 해봐서 처음 접하는 플러터(Flutter)도 크게 어렵지는 않을거 같긴합니다. 그렇더라도 회사를 다니면서 엔지엠소프트웨어를 운영해야 하다보니 항상 시간이 부족합니다. 1인 개발자로 2잡과 개발, 고객 응대, 밴치마킹, 회계 처리등등... 시간적인 여유가 없습니다. 회사에서 주력으로 사용하던 Angular를 버리고, 이번에 React로 프로젝트를 진행하다보니 또 새로운 언어를 배워야 합니다. 그래도 뭐~ 여유 있을 때 하나씩 배워두면 언젠가는 써먹을데가 있겠죠?

    o3Lj2T1.png

     

     

    제가 갑자기 플러터를 배우려는 이유는 간단합니다. 엔지엠 RPA 매크로가 윈도우 기반이다보니 스마트폰 모바일앱(안드로이드폰, 아이폰) 자동화를 구현하는데 몇가지 제약이 있기 때문입니다. 요즘에는 여러가지 다양한 OpenAPI와 인터페이스(Interface)가 있어서 불가능한건 아닙니다. 그러나, 시스템을 갖추는데 개발자가 아닌 일반인분들은 혼자 업무 자동화를 만들기가 어려운건 사실입니다. 그래서, 네이티브(Native) 환경(Environment)에서 개발자가 아닌 일반인분들이 쉽게 RPA 매크로를 만들 수 있는 프로그램을 제작해보려고 합니다.

     

    앞서 언급했듯이 회사를 다니면서 엔지엠소프트웨어를 운영하다보니 시간 효율이 저에게는 가장 중요합니다. 2잡을 유지하면서 1인 개발자가 사업을 유지하려면 극강의 효율이 필요합니다. 그래서, Native는 일단 배제하고 React Native와 Flutter를 찾아보며 고민을 많이 했습니다. Dart(다트)라는 새 언어의 러닝 커브(Learning Curve, 학습 곡선)를 감안하더라도 그만큼 장점과 추후 활용 가능성이 높은 플러터로 개발하기로 했습니다. 구글이 지원하기 때문에 비전도 밝지 않을까하는 생각도 있었습니다.

    m1QUMs5.png

     

     

    플러터란? (Flutter)

    플러터는 Cross Platform 프레임워크입니다. 크로스 플랫폼이라는 말은 iOS와 Android 두개의 플랫폼에 사용할 앱을 하나의 코드베이스로 구축할 수 있다는 뜻입니다. 이런 특징은 규모적으로 작은 벤처기업이나 스타트업 또는 저와 같은 1인 개발자 사업에 유리합니다. 스위프트, 코틀린을 각각 개발해서 배포하고 유지한다는건 쉽지 않은 일이기 때문입니다. 구글에서 많은 지원을 하고 있기 때문에 앞으로의 활용 범위도 넓어질 것이고, 네이티브 수준의 퍼포먼스를 보여준다고 하기에 도전해보게 되었습니다. 플러터는 기본적으로 앱 개발을 위한 프레임워크이고, 고도로 모듈화된 위젯들을 이용해 Widget Tree를 쌓으며 User Interface를 구현할 수 있는 환경을 제공해줍니다. 엔지엠 매크로에서 이미지 서치나 마우스 클릭등과 같은 액션을 제공하듯이 개발자도 이런 위젯을 사용하면 원하는 기능을 처음부터 개발하는것보다 빠르고 쉽게 앱을 만들 수 있습니다.

     

    Flutter + Dart?

    플러터는 다트(Dart)라는 프로그래밍 언어를 사용합니다. 아무래도 개발자다보니 여러가지 언어들을 직접 테스트 해보고, 개발도 해봤습니다. 그런데, 다트는 얘기만 들어봤지 실제로 코드 한줄도 작성해보지는 않았는데요. C나 Java와 유사하다고 하니 약간 안심이 되기도 합니다. Dart 언어는 아래와 같은 특징이 있습니다.

    1. Variable안에 넣을 수 있는 모든 것들을 Object로 취급
    2. 제네릭(Generic Type) 형식 지원 (파이썬과 비슷하게 처리 가능)
    3. C#이나 Java의 Strong Type과 같은 Strict 타입 및 var, dynamic과 같이 동적 타입 지원
    4. 접근 제한자(한정자)가 아닌 _function으로 정의
    5. OOP(객체 지향 프로그래밍, Oriented Object Programming) 촤적화

     

    그리고, JIT(Just In Time), AOT(Ahead Of Time) 2가지 컴파일러를 모두 사용 가능하기 때문에 개발 과정에서는 짓(JIT) 컴파일러를 이용해서 빠른 개발이 가능하고, 실제 배포시에는 AOT를 이용해 안정적인 실행을 보장할 수 있습니다. C#, Java와 비슷한 방식을 채택하고 있어서 학습에 크게 어려움은 없을듯합니다.

     

    Flutter Vs. React Native

    크로스 플랫폼은 여러가지가 있었습니다. 대표적으로 마이크로소프트의 자마린(Jamarin)이 있습니다. 초창기에 자마린으로 앱을 만들다가 수익화가 안되어 포기한지 오래되었는데요. 지금은 어느정도 수준까지 발전이 되었는지 궁금하기도 하네요. 크로스 플랫폼 프레임워크의 선두 주자는 React Native입니다. 현재까지는요. 플러터는 Dart를 기반으로 하고, React Native는 JS를 기반으로 합니다. 그리고, 플러터는 구글이 지원하고 Recat Native는 페이스북이 밀고 있죠. 제가 플러터를 선택한 이유는 Skia Graphic Engine을 사용해서 모바일 기기의 화면에 그려지는 모든 픽셀을 자체적으로 컨트롤하기 때문입니다. React Native는 JavaScript Bridge를 이용해 실제 네이티브 위젯으로 컴파일합니다. 플랫폼 요소별 속성이나 구현 가능한 함수가 플랫폼별로 다르기 때문에 완전한 호환이 어렵습니다.

    G3aK3Is.png

     

     

    플러터를 선택한 가장 큰 이유는 페이스북(지금의 메타)이 지원을 줄이고 있고, 서드파티(Third Party)에 대한 의존성이 높기 때문입니다. 서드파티가 지원을 끊으면 문제가 커지기 때문이죠. 그래서, 후발주자인 구글 플러터의 입지가 점점 커지고 있습니다. 개발자 커뮤니티의 성지인 스택 오버플로우(Stack Overflow)의 트렌드를 보면 언어별 질문 비중이 2019년을 기점으로 플러터가 React Native를 넘어섰습니다. 그만큼 관심도가 높고 개발을 진행하면서 질문을 많이 한다는 의미입니다.

    XwcDSNj.png

     

     

    플러터 시작하기

    [ 플러터 홈페이지 ]에서 윈도우용으로 다운로드 받습니다.

    7V0LP9g.png

     

     

    아래 그림과 같이 플러터 SDK(Software Development Kit)를 다운로드 받으려고 하면 Failed가 표시됩니다.

    VG9bWkt.png

     

     

    이렇게 표시되면 원본 사이트로 접속해서 다운로드 받을 수 있습니다.

    [ 플러터 SDK 다운로드 받기 ]

    hHLvDl8.png

     

     

    플러터를 실행하기 위해서는 Android Studio, Xcode, Chrome등등... 추가적으로 필요한 것들이 많습니다. 이런것들을 하나씩 모두 처리하기는 힘듭니다. 뭐가 빠져서 동작이 안되는지 알기가 어렵기 때문이죠. 그래서, 플러터를 설치한 위치에서 flutter doctor를 이용해서 쉽게 확인이 가능합니다. 우선, 다운로드 받은 플러터를 D드라이브에 압축을 풀어주세요.

    Zc8zbSQ.png

     

     

    플러터 콘솔을 관리자 권한으로 실행하세요.

    Jfx6B5X.png

     

     

    콘솔에서 fluter doctor를 입력하세요.

    f8LkhDD.png

     

     

    X 표시된 부분에서 문제가 있습니다. 각자의 컴퓨터 환경에 따라서 X표시가 다를겁니다. 이 부분은 [ 여기 ]에서 에러 또는 버그에 대해 해결 방법들을 확인할 수 있습니다. 연재 형식으로 아이폰용 매크로앱과 안드로이드용 매크로앱을 제작해볼건데요. 문제가 발생할때마다 개발자는 어떻게 해결하고 프로그램을 만들어가는지 알려드릴 수 있는 기회가 되면 좋겠네요. 회사 프로젝트도 리액트로 진행해야 해서 이것도 비교해가면서 글을 작성하면 많은 도움이 될거 같습니다. 그럼~ 다음 시간에 다시 올께요^^

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.