Main Content

GUIDE 마이그레이션 전략

R2019b에서 MathWorks®는 MATLAB®에서 GUIDE가 향후 릴리스에서 제거될 예정임을 발표했습니다. GUIDE는 최초의 끌어서 놓기 방식의 앱 작성 환경입니다. GUIDE가 제거된 후에도 기존 GUIDE 앱(GUI)은 MATLAB에서 계속 실행할 수 있으며 앱의 동작을 변경해야 할 경우에도 앱 프로그램 파일을 계속 편집할 수 있습니다.

기존 GUIDE 앱의 레이아웃을 계속 편집하고 향후 MATLAB 릴리스와의 호환성을 유지하려면 다음 표에 나와 있는 권장 마이그레이션 전략 중 하나를 사용해야 합니다.

앱 개발 요구 사항마이그레이션 전략마이그레이션 방법
개발 작업이 지속적임앱을 앱 디자이너로 마이그레이션하기GUIDE에서 앱을 열고 파일 > 앱 디자이너로 마이그레이션을 선택합니다. GUIDE 변환 옵션 대화 상자에서 마이그레이션을 클릭합니다.
편집이 간헐적임MATLAB 함수를 사용하여 앱 레이아웃과 코드를 관리할 수 있도록 앱을 단일 MATLAB 파일로 내보내기GUIDE에서 앱을 열고 파일 > MATLAB 파일로 내보내기를 선택합니다. GUIDE 변환 옵션 대화 상자에서 내보내기를 클릭합니다.

GUIDE 앱을 앱 디자이너로 마이그레이션하기

GUIDE 앱을 앱 디자이너로 마이그레이션하면 앱의 레이아웃을 대화형 방식으로 계속 개발할 수 있습니다. 또한 향상된 UI 컴포넌트 집합 및 자동 재배치 옵션과 같은 기능을 활용하여 앱이 화면 크기의 변화에 반응하도록 할 수 있습니다. 앱을 만들어 웹 앱으로 공유할 수도 있습니다(MATLAB Compiler™ 필요).

이 옵션은 상당한 또는 지속적인 기능 개발을 필요로 하는 GUIDE 앱에 사용하십시오.

GUIDE to App Designer Migration Tool for MATLAB은 변환 과정을 용이하게 하기 위해 R2018a에서 처음 도입되었습니다. GUIDE to App Designer Migration Tool for MATLAB은 MATLAB 데스크탑의 애드온 탐색기나 MATLAB Central™의 File Exchange를 통해 사용할 수 있습니다.

R2020a부터 마이그레이션 툴은 앱 디자이너에서 앱을 실행하는 데 필요한 시간과 수동 코드 업데이트 수를 극적으로 줄이며 크게 개선되었습니다. 이러한 향상된 기능에 대한 자세한 내용은 콜백 코드 항목을 참조하십시오.

앱을 마이그레이션하는 방법은 사용자가 시작하는 환경에 따라 여러 가지일 수 있습니다.

  • GUIDE에서 앱을 열고 파일 > 앱 디자이너로 마이그레이션을 선택합니다.

    • 아직 GUIDE to App Designer Migration Tool을 설치하지 않았다면 지원 패키지 설치를 클릭합니다. 그러면 애드온 탐색기가 열리며 여기서 마이그레이션 툴을 설치할 수 있습니다. 툴을 설치한 후에는 GUIDE 변환 옵션 대화 상자를 다시 엽니다.

    • GUIDE to App Designer Migration Tool을 설치한 후에는 올바른 FIG 파일을 선택하고 마이그레이션을 클릭합니다. 앱이 마이그레이션되고 앱 디자이너에서 자동으로 열립니다.

  • 앱 디자이너에서 앱을 열고 디자이너 탭으로 이동합니다. 파일 섹션에서 열기 > GUIDE to App Designer Migration Tool 열기를 클릭합니다.

  • MATLAB 명령 창에서 appmigration.migrateGUIDEApp 함수를 호출합니다. 이 함수를 사용하여 여러 GUIDE 앱을 일괄 처리로 마이그레이션할 수 있습니다.

마이그레이션 툴의 기능

마이그레이션 툴은 GUIDE FIG 파일을 읽어 들인 후 상응하는 앱 디자이너 컴포넌트 및 레이아웃을 자동으로 MLAPP 파일로 생성하여 앱을 변환할 수 있게 도와줍니다. GUIDE 콜백 코드와 다른 사용자 정의 함수는 MLAPP 파일로 복사됩니다. 이 반자동적인 코드 변환 단계에서는 수동 코드 업데이트가 필요한 경우 이에 대한 조치를 제안하는 마이그레이션 리포트도 생성해 줍니다. 다음 표에는 툴의 일부 기능이 설명되어 있습니다.

마이그레이션 툴 기능설명
파일 변환GUIDE FIG 파일 및 관련 코드를 읽어 들인 후 앱 디자이너 MLAPP 파일을 생성합니다. 앱 디자이너 파일 이름의 형식은 guideFileName_App.mlapp입니다.
컴포넌트 및 앱 레이아웃

컴포넌트와 속성 구성을 이에 상응하는 앱 디자이너 컴포넌트 및 속성 구성으로 변환하고 앱의 레이아웃을 보존합니다.

A GUIDE app and an App Designer app to calculate mass. The layout and functionality of each app is the same. There are minor visual differences, such as the color of the buttons.

콜백 코드GUIDE 콜백 코드 및 사용자 정의 함수의 복사본을 MLAPP 파일에 보존합니다.
튜토리얼마이그레이션된 앱에 대한 변경 사항을 순차적으로 확인합니다.
마이그레이션 리포트마이그레이션 툴을 통해 성공적으로 완료된 작업을 요약합니다. 앱과 관련한 제한 사항 또는 지원되지 않는 기능을 나열하고 제안된 조치가 있는 경우 이를 표시합니다.

콜백 코드

GUIDE 스타일의 콜백 코드가 사용자 앱의 앱 디자이너 UI 컴포넌트와 호환되도록 하기 위해 마이그레이션 툴은 convertToGUIDECallbackArguments라는 함수를 사용합니다. 이 함수는 앱 디자이너 콜백 인수를 사용자 코드에 필요한 GUIDE 스타일의 콜백 인수로 변환합니다. convertToGUIDECallbackArguments 함수는 마이그레이션된 각 콜백 함수의 시작 부분에 추가됩니다. 이 함수는 앱 디자이너 콜백 인수 appevent를 받고 GUIDE 스타일의 콜백 인수 hObject, eventdata, handles를 반환합니다. 예를 들면 다음과 같습니다.

Example of a call to the convertToGUIDECallbackArguments function inside an App Designer callback

GUIDE 스타일의 콜백 인수는 각각 다른 용도로 사용됩니다.

  • hObject는 콜백이 실행되고 있는 객체의 핸들입니다. GUIDE 앱의 컴포넌트 UIControl 객체 또는 ButtonGroup 객체의 경우 hObjectUIControlPropertiesConverter 객체 또는 ButtonGroupPropertiesConverter 객체에 대한 핸들입니다. 이러한 객체는 GUIDE 스타일의 코드가 앱 디자이너 콜백 함수에서 작동하도록 하기 위해 생성되었습니다.

  • eventdata는 대개 비어 있지만 콜백 이벤트에 대한 특정 정보를 포함하는 구조체일 수 있습니다.

  • handles는 UI Figure의 마이그레이션된 자식 컴포넌트를 포함하는 구조체입니다. 이들 자식 컴포넌트는 'Tag' 속성값 집합을 가집니다. GUIDE 앱의 자식 컴포넌트 UIControl 객체는 마이그레이션된 앱에서 UIControlPropertiesConverter 객체에 해당합니다. 마찬가지로, 자식 ButtonGroup 객체는 마이그레이션된 앱에서 ButtonGroupPropertiesConverter 객체에 해당합니다.

UIControlPropertiesConverter 객체 및 ButtonGroupPropertiesConverter 객체는 GUIDE 스타일의 코드와 앱 디자이너 컴포넌트 및 콜백 사이에서 어댑터처럼 동작합니다. UIControlPropertiesConverter 객체는 GUIDE 앱의 각 컴포넌트 UIControl 객체에 대해 생성됩니다. 이러한 converter 객체는 마이그레이션된 앱에서 앱 디자이너 UI 컴포넌트와 연결됩니다. converter 객체는 GUIDE 앱의 원래 UIControl과 동일한 속성, 동일한 값을 가지지만 연결된 앱 디자이너 UI 컴포넌트에 이러한 속성과 값을 적용합니다.

마찬가지로, GUIDE의 ButtonGroup 객체에 대해서는 ButtonGroupPropertiesConverter 객체가 앱 디자이너에 생성됩니다. 이 객체를 사용하면 SelectedObject 속성을 UIControlPropertiesConverter 객체로 설정하여 버튼 그룹 SelectionChangedFcn 콜백 논리가 작동하도록 할 수 있습니다.

특별 고려 사항

경우에 따라, 앱을 마이그레이션하기 전이나 후에 추가 단계를 수행해야 합니다. 다음 표에는 추가 단계나 수동 코드 업데이트가 필요한 일반 시나리오 및 코딩 패턴이 나와 있습니다. 이는 모든 것이 포함된 종합적인 목록이 아닙니다.

GUIDE 앱 특징설명제안된 조치
다중 창 앱(즉, 데이터를 공유하는 두 개 이상의 앱)다중 창 앱에서는 각 앱을 개별적으로 마이그레이션해야 합니다. 마이그레이션된 앱 파일 이름의 끝에는 _App이 추가됩니다. 다른 앱에서 이러한 앱 호출 시 업데이트가 필요합니다.각 앱을 개별적으로 마이그레이션합니다. 호출하는 앱에서 호출되는 앱의 이름을 새 파일 이름으로 업데이트합니다.
라디오 버튼 및 라디오 버튼 콜백

마이그레이션 툴은 라디오 버튼 그룹을 부모로 갖지 않는 라디오 버튼이나 개별 라디오 버튼에 대한 콜백 함수를 마이그레이션하지 않습니다.

앱 디자이너에서 버튼 그룹을 만들어 이 버튼 그룹에 라디오 버튼을 추가합니다. 라디오 버튼 선택이 변경될 경우 동작을 실행하려면 해당 버튼 그룹에 대한 SelectionChangedFcn 콜백 함수를 생성하십시오. 자세한 내용은 uiradiobutton 항목과 ButtonGroup Properties 항목을 참조하십시오.
uistack앱 디자이너에서는 이 함수를 호출할 수 없습니다.마이그레이션을 수행하기 전에 이 함수가 앱에 중요한지 확인합니다. 앱 디자이너에는 해결 방법이 없습니다.
findobj, findall, gcbo

findobj, findall 또는 gcbo를 사용하여 컴포넌트를 참조하거나 속성을 설정하면 오류가 발생할 수 있습니다. UIControl 객체는 상응하는 앱 디자이너 UI 컴포넌트로 마이그레이션됩니다. 이 마이그레이션된 컴포넌트에 대한 속성에 액세스하거나 설정하려면 UIControlPropertiesConverter 객체에 대해 이를 설정해야 합니다. 또는 연결된 앱 디자이너 컴포넌트, 속성, 값을 사용하도록 코드를 업데이트할 수 있습니다.

handles 구조체를 대신 사용하여 컴포넌트를 참조하거나 연결된 앱 디자이너 컴포넌트, 속성, 값을 사용하도록 코드를 업데이트합니다.
narginnargchk헬퍼 함수는 앱 메서드로 마이그레이션되고 추가 입력 인수로 app을 가집니다. 이로 인해 nargin 또는 nargchk 논리가 잘못될 수 있습니다.검사 값을 1씩 증분시킵니다.
OutputFcn(varargout)Figure 출력값

앱 디자이너에는 이에 상응하는 기능이 없습니다.

마이그레이션된, 앱 디자이너로 만든 앱을 인스턴스화할 경우 출력값은 Figure 객체가 아니라 항상 앱 객체입니다.

OutputFcn 함수에 앱에 중요한 초기화 코드가 포함된 경우 대신 OpeningFcn의 끝부분에 이 초기화 코드를 추가합니다.

앱을 인스턴스화할 때 OutputFcn 함수가 작업 공간에 할당될 출력값(예: Figure 객체)을 지정하는 경우, 앱을 인스턴스화하는 함수를 생성해야 합니다. 예를 들어, 다음과 같이 합니다.

function out = MyGUIDEApp(varargin)
    app = MyMigratedApp(varargin{:});
    out = app.UIFigure;            
end

GUIDE 앱이 actxcontrol과 같은 함수를 사용하여 타사 컴포넌트를 통합하는 경우 Recommendations for MATLAB Apps Using Java and ActiveX를 참조하십시오.

GUIDE 코드와 앱 디자이너 코드의 차이점

앱 디자이너와 GUIDE는 코드 구조 및 콜백 구문이 다르며, UI 컴포넌트에 액세스하고 데이터를 공유하는 기법이 서로 다릅니다. 이러한 차이점을 이해하면 앱 디자이너의 새로운 기능을 마이그레이션된 앱에 추가하거나 앱 디자이너 코드 스타일 및 규칙을 사용하도록 앱을 업데이트하려는 경우에 유용합니다. 다음 표에는 이러한 차이점 중 일부가 요약되어 있습니다.

차이점GUIDE 앱 디자이너추가 정보
Figure와 그래픽스 사용

GUIDE는 figure 함수를 호출하여 앱 창을 만듭니다.

GUIDE는 axes 함수를 호출하여 플롯을 표시할 좌표축을 만듭니다.

모든 MATLAB 그래픽스 함수가 지원됩니다. 대상 좌표축을 지정할 필요가 없습니다.

앱 디자이너는 uifigure 함수를 호출하여 앱 창을 만듭니다.

앱 디자이너는 uiaxes 함수를 호출하여 플롯을 표시할 좌표축을 만듭니다.

대부분의 MATLAB 그래픽스 함수가 지원됩니다.

앱 디자이너에서 그래픽스 표시하기
컴포넌트 사용

GUIDE는 uicontrol 함수로 대부분의 컴포넌트를 만듭니다. 사용 가능한 컴포넌트가 더 적습니다.

앱 디자이너는 고유한 전용 함수로 각 UI 컴포넌트를 만듭니다. Tree, Gauge, TabGroup, DatePicker를 포함하여 사용 가능한 컴포넌트가 더 많습니다.

앱 작성 구성요소
Update UIControl Objects and Callbacks
컴포넌트 속성 액세스

GUIDE는 setget을 사용하여 컴포넌트 속성에 액세스하고 handles를 사용하여 컴포넌트를 지정합니다.

예:
name = get(handles.Fig,'Name')

앱 디자이너는 setget을 지원하지만 점 표기법을 사용하여 컴포넌트 속성에 액세스하는 것을 권장하며, app을 사용하여 컴포넌트를 지정합니다.

예:
name = app.UIFigure.Name

앱 디자이너에서 콜백 사용하기
앱 코드 관리

코드는 로컬 함수를 호출할 수 있는 메인 함수로 정의됩니다. 모든 코드는 편집 가능합니다.

코드는 MATLAB 클래스로 정의됩니다. 콜백, 헬퍼 함수, 사용자 지정 속성만 편집 가능합니다.

앱 디자이너 코드 보기에서 코드 관리하기
콜백 작성

필수 콜백 입력 인수는 handles, hObjecteventdata입니다.

예:
myCallback(hObject,eventdata,handles)

필수 콜백 입력 인수는 appevent입니다.

예:
myCallback(app,event)

앱 디자이너에서 콜백 사용하기
데이터 공유

데이터를 저장하고 이 데이터를 콜백과 함수 간에 공유하려면 UserData 속성, handles 구조체, guidata 함수, setappdata 함수 또는 getappdata 함수를 사용하십시오.

예:
handles.currSelection = selection;
guidata(hObject,handles);

데이터를 저장하고 이 데이터를 콜백과 함수 간에 공유하려면 사용자 지정 속성을 사용하여 변수를 생성하십시오.

예:
app.currSelection = selection

앱 디자이너로 만든 앱 내부에서 데이터 공유하기

마이그레이션된 앱의 콜백 코드 업데이트하기

마이그레이션된 앱은 GUIDE 스타일의 객체와 코드 규칙을 사용합니다. 앱 디자이너의 객체와 코드 규칙을 사용하도록 마이그레이션된 앱에서 콜백 코드를 업데이트하는 것이 좋습니다. 콜백 코드를 업데이트하면 최신 앱 작성 기능이 지원되고 앱을 더 쉽게 유지할 수 있습니다. 코드를 업데이트하려면 다음 단계를 따르십시오.

  1. 앱 디자이너 UI 컴포넌트 사용 — 콜백 함수에서 app 객체를 대신 사용하도록 handles 구조체에 대한 참조를 업데이트합니다. handles 구조체는 GUIDE 앱에서 UIControl 객체를 나타내는 converter 객체에 대한 액세스를 제공하는 반면, app 객체는 앱 디자이너 앱에서 UI 컴포넌트에 대한 액세스를 제공합니다.

    예를 들어, GUIDE 스타일의 콜백은 다음 코드를 사용하여 누름 버튼 스타일의 UIControl 객체에 대한 배경색을 설정합니다.

    handles.pushbutton1.BackgroundColor = 'red';

    다음 코드를 업데이트하여 버튼 UI 컴포넌트의 배경색을 직접 설정합니다.

    app.pushbutton1.BackgroundColor = 'red';

  2. UI 컴포넌트 속성 업데이트 — 콜백 코드가 설정하는 속성을 업데이트합니다. 일반적으로, UIControl 객체와 그에 상응하는 UI 컴포넌트 객체는 동일한 속성을 많이 가집니다. 하지만 속성 이름이나 속성이 받는 값 유형은 다릅니다. UIControl 및 UI 컴포넌트 객체 및 속성 간 비교를 보고 UI 컴포넌트를 사용하도록 코드를 업데이트하는 방법을 알아보려면 Update UIControl Objects and Callbacks 항목을 참조하십시오.

  3. 사용되지 않는 코드 삭제 — 콜백 함수가 hObject, eventdatahandles 인수를 더 이상 사용하지 않으면 이러한 인수를 생성하는 마이그레이션 툴이 추가한 코드 라인을 삭제합니다.

    [hObject,eventdata,handles] = convertToGUIDECallbackArguments(app,event);

앱이 errordlg 또는 warndlg와 같은 함수를 사용하여 대화 상자를 만들도록 되어 있는 경우 uialertuiconfirm과 같이 앱 작성을 위해 특별히 도입된 최신 대화 상자를 활용하도록 코드를 업데이트해 볼 수 있습니다. 자세한 내용은 대화 상자 업데이트하기 항목을 참조하십시오.

GUIDE 앱을 MATLAB 파일로 내보내기

GUIDE 앱을 내보내면 GUIDE FIG 파일과 프로그램 파일이 단일 MATLAB 프로그램 파일로 다시 생성되어 프로그래밍 방식 앱으로 변환됩니다.

다음을 수행하려는 경우 이 옵션을 사용하십시오.

  • 앱의 레이아웃 또는 동작을 약간 변경하려는 경우.

  • 대화형 방식이 아니라 프로그래밍 방식으로 앱을 개발하려는 경우.

앱을 내보내려면 GUIDE에서 앱을 열고 파일 > MATLAB 파일로 내보내기를 선택하거나 MATLAB 현재 폴더 브라우저에서 FIG 파일을 마우스 오른쪽 버튼으로 클릭한 후 MATLAB 파일로 내보내기를 선택하십시오. 그러면 GUIDE 변환 옵션 대화 상자가 표시됩니다. 올바른 FIG 파일이 선택되었는지 확인한 다음 내보내기를 클릭하십시오. MATLAB은 파일 이름에 _export가 추가된 이름으로 프로그램 파일을 만듭니다. 새 파일에는 원래 콜백 코드와 앱의 생성 및 레이아웃을 처리하는 자동 생성 함수가 포함되어 있습니다. 다음은 이렇게 추가된 함수의 한 예입니다.

Generated function code to handle app creation.

참고 항목

관련 항목