---
title: "모바일 개발을 위한 프로그래밍 기술"
date: "2020-07-01"
categories: 
  - "app-development"
  - "low-code"
  - "mobile-development"
  - "tools"
tags: 
  - "cross-platform-mobile-apps"
  - "cross-platform-mobile-development"
  - "mobile-development-tools"
  - "mobiletogether"
description: MobileTogether에서 제공하는 다양한 프로그래밍 기술을 활용하여 크로스 플랫폼 모바일 앱 개발을 진행하고, 사용자 함수 및 액션 그룹 기능을 통해 앱의 효율성을 향상시키세요.
---
Status: #blog

Tags:  #cross-platform-mobile-apps #cross-platform-mobile-development #mobile-development-tools #mobiletogether

Categories: [mobile-development](/blog/ko/category/mobile-development.md) | [low-code+no-code](/blog/ko/category/low-codeno-code.md) 
# 모바일 개발을 위한 프로그래밍 기술

MobileTogether는 사용하기 쉬운 로우코드 앱 개발 프레임워크로, 하나의 디자인으로 모든 플랫폼용으로 정교한 앱을 만들 수 있습니다.

로우코드(Low-code)는 코드를 전혀 사용하지 않는다는 의미가 아닙니다. 데이터베이스 전문가의 경우, 몇 가지 SQL 쿼리부터 시작하여 MobileTogether의 드래그 앤 드롭 인터페이스를 활용하여 세련된 표와 그래프를 통해 실시간 기업 데이터를 보고하는 앱을 만들 수 있습니다. 반면, 숙련된 개발자는 모바일 개발에 익숙한 프로그래밍 기술을 사용하여 매우 복잡하고 정교한 MobileTogether 솔루션을 구축하는 경우가 많습니다.

개발자는 필요에 따라 사용자 정의 함수, 매개변수, 변수, 반복문 또는 복잡한 데이터 구조를 정의할 수 있습니다. MobileTogether는 카메라, 마이크, GPS, SMS, 필기 인식 등 기기의 모든 기능을 빠르고 쉽게 제어할 수 있도록 지원합니다. MobileTogether를 사용하면 아이디어를 빠르게 구현하고, 매력적인 모바일 앱을 개발하여 폭발적인 인기를 얻을 수 있습니다.

MobileTogether는 업무 효율성을 높이는 데 초점을 맞추고 있으며, 업무 수행 방식을 제한하지 않습니다. MobileTogether 앱에서 사용되는 몇 가지 프로그래밍 기술의 예시를 살펴보겠습니다.

![](/blog/images/single_developer01.jpg)

<!--more-->

MobileTogether Designer는 크로스 플랫폼 모바일 앱을 개발하기 위한 [데스크톱 기반 도구](https://www.altova.com/ko/mobiletogether/app-development)입니다. 무료로 사용할 수 있으며, 사용자가 분석하여 개발 과정을 자세히 살펴볼 수 있는 다양한 예제 앱들이 함께 제공됩니다.

### 패키지 배송 앱의 사용자 기능

"택배 배송" 예제는 실제 택배 배송 앱을 완벽하게 시뮬레이션한 것입니다. 사용자는 뉴저지 주에 있는 창고에서 출발하여 GPS를 통해 뉴욕 시의 여러 목적지로 택배를 배송하는 배송 회사 소속 운전자의 역할을 수행합니다. 디자이너의 시뮬레이터 창에서 이 앱을 실행하면 각 목적지까지의 이동 경로를 실제와 유사하게 확인할 수 있습니다. 사용자가 자신의 스마트폰에서 "택배 배송" 앱을 실행하면, 스마트폰 내장 GPS 기능이 사용됩니다. 하지만 사용자가 실제로 뉴욕에 있지 않다면, 앱은 각 목적지까지의 긴 경로와 예상 소요 시간을 보여줄 것입니다. 사용자는 앱 내의 "현재 위치" 버튼을 클릭하여 경로 추적을 건너뛰고 바로 목적지로 이동할 수 있습니다.

"Parcel Delivery"는 숙련된 개발자가 제작했으며, 사용자 기능에 크게 의존합니다. 예를 들어, 앱은 하루 시작 시 사용자에게 배송 목록을 보여줍니다. 배송이 진행됨에 따라, 사용자는 아래 이미지에서 볼 수 있듯이 안드로이드 폰에서 캡처한 화면처럼, 아직 완료해야 할 작업 목록을 확인하기 위해 해당 페이지로 다시 이동할 수 있습니다

[![패키지 배송 모바일 앱에서 배송 기사에게 할당되는 배송 업무](/blog/images/parcel-delivery-android.png)](parcel-delivery-android.png)

이 앱은 하나의 페이지 디자인에서 두 가지 화면을 모두 생성하며, 정확한 화면 구성은 사용자 기능을 평가하여 결정됩니다. 모바일투게더 디자이너에서 해당 페이지의 모습은 다음과 같습니다

[![앱의 과제 페이지에서 모바일 개발에 사용되는 프로그래밍 기술의 예시를 사용자 함수를 통해 보여줍니다](/blog/images/page-design-1-1.png)](page-design-1-1.png)

개발자는 이 페이지에 두 개의 사용자 함수를 배치했습니다: `PartiallyFinishedDestinations()`와 `RemainingDestinations()`. 더 자세히 살펴보기 전에, 제 추측은 `PartiallyFinishedDestinations()` 앞에 있는 IF 조건문이 참 또는 거짓의 결과를 반환한다는 것입니다. 배송 기사가 아직 어떤 물건이라도 배송을 완료했는지 여부를 나타내는 것 같습니다. 그리고 `RemainingDestions()`은 아직 방문해야 할 모든 장소의 목록일 것입니다.

앱을 시뮬레이터에서 실행해서 제가 맞는지 확인해 보겠습니다. 투두 목록의 첫 번째 시뮬레이터 화면은 다음과 같습니다

[![모바일 개발에서의 프로그래밍 기술을 분석하기 위해 MobileTogether 시뮬레이터를 활용합니다](/blog/images/delivery-list-1-1.png)](delivery-list-1-1.png)

실행은 "배송 시작" 버튼을 클릭해야 시작됩니다. 계속 진행하는 대신, "페이지 소스" 아래에 있는 XPath 도구 버튼을 클릭하여 앱 내부를 분석할 수 있습니다. XPath 버튼을 클릭하면 아래 창이 열리고, 이 창에서 "사용자 정의 함수" 목록에서 "PartiallyFinishedDestinations()"을 선택했습니다

[![식 생성기 창에서 사용자가 정의한 함수](/blog/images/simulator-1.png)](simulator-1.png)

이제 상단 도구 모음에서 "실행(Go)" 버튼 또는 "평가(Evaluator)" 버튼을 클릭하여 함수를 평가할 수 있습니다

[![실행이 일시 중지된 상태에서 표현식을 평가합니다](/blog/images/simulator-2.png)](simulator-2.png)

사용자 함수 실행 결과는 "거짓"입니다. 즉, 배송 기사가 아직 어떤 물건도 배송하지 않았다는 의미입니다. 동일한 단계를 "RemainingDestinations()" 함수에 적용하면 다음과 같은 결과가 나타납니다

[![`RemainingDestinations()` 함수의 기능 평가](/blog/images/simulator-3.png)](simulator-3.png)

사용자 함수 `RemainingDestinations()`의 결과는 목록이며, 이 목록의 각 항목은 목적지에 대한 모든 세부 정보를 담고 있는 데이터 구조입니다.

MobileTogether 디자이너에는 사용자 기능을 위한 주요 메뉴 항목이 있습니다

[![모바일 개발에서의 프로그래밍 기술: 기능 메뉴의 주요 옵션](/blog/images/main-menu.png)](main-menu.png)

이 곳은 개발자가 처음 사용자 함수를 정의한 곳이며, 현재 사용자 함수를 확인하거나 수정하려면 이 곳으로 와야 합니다. "모든 항목의 사용 내역" 메뉴를 선택하면 메시지 창에 보고서가 생성됩니다.

[![모바일 앱 개발 시 사용되는 프로그래밍 기술: 사용자 함수 사용 현황 보고서](/blog/images/function-report.png)](function-report.png)

### 모바일 개발에서의 프로그래밍 기술: 매개변수를 사용하는 서브루틴

MobileTogether에서 액션 그룹은 앱 내에서 필요할 때마다 호출할 수 있는 일련의 동작들을 모아놓은 일종의 서브루틴입니다. 액션 및 액션 그룹에 대해 더 자세히 알아보려면 [자세히 보기](https://www.altova.com/ko/mobiletogether/low-code-app-development#action-trees)를 클릭하거나, [동영상 데모를 시청](https://www.altova.com/ko/mobiletogether/demos#video_Demos)하실 수 있습니다.

고수준 프로그래밍 언어에서 서브루틴을 사용하는 것과 마찬가지로, 때로는 런타임 시에 액션 그룹에 입력 값을 매개변수로 전달하는 것이 가장 효율적일 수 있습니다. 예를 들어, "Air Quality"라는 앱을 살펴보겠습니다. 이 앱은 World Air Quality Index 프로젝트에서 웹 서비스를 호출하여 전 세계에 설치된 센서로부터 데이터를 수집하고 결과를 보고합니다.

대기 질은 산불이나 화산 폭발과 같은 자연재해, 대규모 산업 및 상업 활동, 그리고 요리, 난방, 운전 등 개인의 일상적인 활동에 의해 악화될 수 있습니다. 기상 조건은 특정 장소나 시간에 오염 물질을 집중시키거나 분산시킬 수 있습니다. 이 앱을 사용하면 사용자가 특정 위치 또는 지역을 선택하고, 해당 지역의 최신 대기 질 지수(AQI) 값을 확인할 수 있습니다. 이 앱은 아마추어 개발자가 직접 제작했습니다.

[![시민 개발자가 만든, 대기 질 지수 측정값을 보고할 수 있는 모바일 앱입니다](/blog/images/air-quality-iphone.png)](air-quality-iphone.png)

세계 대기 질 지수 API는 다양한 위치 유형에 대해 별도의 REST 요청을 사용하며, 각 요청에 대한 응답으로 약간씩 다른 데이터 세트가 반환됩니다. 공통적인 점은 각 측정값에 대한 현지 시간이 GMT 시간으로 반환되지만, 시간 오프셋 정보가 함께 제공된다는 것입니다. 사용자가 정확한 현지 시간을 표시하려면 이러한 값을 조정해야 합니다.

날짜 및 시간 계산은 복잡해질 수 있습니다! 직접 해본 적이 없다면 믿어주세요. 또는 저희가 작성한 "[데이터 변환 유효성 검사](https://www.altova.com/blog/validating-data-transformation/)" 관련 게시물을 참고해 보세요. 하지만 액션 그룹을 한 번 구축해 두고 워크플로우의 다양한 지점에서 호출하는 데 매우 유용합니다. 만약 시간과 오프셋 값을 파라미터로 전달한다면, 액션 그룹은 어떤 쿼리 응답으로부터든 현지 시간을 계산하고 형식화하는 데 필요한 단 하나의 작업 세트만 갖추면 됩니다.

다음은 디자이너에서 "액션 그룹" 대화 상자에 정의된 "액션 그룹"의 내용입니다

[![모바일 개발을 위한 프로그래밍 기술: 서브루틴의 매개변수 정의](/blog/images/parameter-definition.png)](parameter-definition.png)

매개변수 정의는 맨 위에 있으며, 개발자가 지정한 이름인 `$time`과 `$adj`가 사용됩니다. "선택 사항" 체크박스가 선택되지 않았으므로, 액션 그룹을 호출할 때마다 두 매개변수 모두 필수적으로 입력해야 합니다.

개발자는 예상보다 더 많은 단계를 액션 그룹 내에 포함시켰습니다. 사실, 모든 시간대가 정확히 GMT로부터 1시간 차이가 나는 것은 아닙니다. 예를 들어, 캐나다의 뉴펀들랜드와 이란의 테헤란은 GMT로부터 30분 플러스 또는 마이너스 차이가 납니다!

다음은 다른 액션 그룹 내에서 호출되는 "Calc Local Time" 기능입니다

[![액션 그룹이 호출될 때, 파라미터에 대한 값을 제공합니다](/blog/images/parameter-provide.png)](parameter-provide.png)

이 단계는 앱이 지도와 정보 페이지를 로드하여 특정 도시의 대기 질 지수(AQI)를 표시하기 전에 마지막으로 수행됩니다. 파라미터는 불필요한 조작 없이 API 쿼리 결과를 직접 참조하여 전달됩니다. 파라미터는 위에서 보여드린 것처럼 개별 값, 배열 또는 객체 형태로 전달할 수 있습니다. 또한, 파라미터를 사용하여 기능 그룹, 하위 페이지, 컨트롤 템플릿을 제어하거나, 하나의 앱을 종료할 때 자동으로 다른 앱을 실행할 수도 있습니다.

이 글에서는 모바일 개발에 사용할 수 있는 MobileTogether와 함께 활용할 수 있는 두 가지 프로그래밍 기술에 대해서만 다룹니다. 여러분의 모든 기술과 도구를 활용하여 가장 효율적인 앱을 가장 빠른 시간 안에 개발해 보세요! 저희의... (이하 내용) [영상 시연 자료](https://www.altova.com/ko/mobiletogether/demos#video_Demos), 더 [샘플 애플리케이션](https://www.altova.com/ko/mobiletogether/demos), 또는 심지어 [온라인 매뉴얼](https://www.altova.com/manual/MobileTogether/mobiletogetherdesigner/) 모든 정보를 한눈에 파악할 수 있도록 상세하게 제공합니다. 이제 여러분이 준비되면, 기록적인 시간 안에 다양한 플랫폼에서 사용할 수 있는 모바일 앱을 직접 개발할 수 있습니다 [MobileTogether 디자이너를 다운로드하세요](https://www.altova.com/ko/mobiletogether/download).
