Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

GUIDE 마이그레이션 전략

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

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

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

GUIDE 앱을 MATLAB 파일로 내보내기

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

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

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

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

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

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

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

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에서 앱을 열고 파일 > 앱 디자이너로 마이그레이션을 선택하거나 MATLAB 현재 폴더 브라우저에서 FIG 파일을 마우스 오른쪽 버튼으로 클릭하고 앱 디자이너로 마이그레이션을 선택하여 GUIDE Removal Options 대화 상자를 엽니다.

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

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

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

마이그레이션 툴의 기능

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

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

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

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

콜백 코드

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

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 항목을 참조하십시오.
'reset' 인수를 사용하는 gco, movie, uistack, clf 앱 디자이너에서는 이러한 함수를 호출할 수 없습니다.마이그레이션을 수행하기 전에 이 함수가 앱에 중요한지 확인합니다. 앱 디자이너에는 해결 방법이 없습니다.
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는 코드 구조 및 콜백 구문이 다르며, UI 구성요소에 액세스하고 데이터를 공유하는 기법이 서로 다릅니다. 이러한 차이점을 이해하면 앱 디자이너의 새로운 기능을 마이그레이션된 앱에 추가하거나 앱 디자이너 코드 스타일 및 규칙을 사용하도록 앱을 업데이트하려는 경우에 유용합니다. 다음 표에는 이러한 차이점 중 일부가 요약되어 있습니다.

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

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

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

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

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

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

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

앱 디자이너에서 그래픽스 표시하기
구성요소 사용

GUIDE는 uicontrol 함수로 대부분의 구성요소를 만듭니다. 사용 가능한 구성요소가 더 적습니다.

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

앱 작성 구성요소
구성요소 속성 액세스

GUIDE는 setget을 사용하여 구성요소 속성에 액세스하고 handles를 사용하여 구성요소를 지정합니다.

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

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

예:
name = app.UIFigure.Name

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

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

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

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

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

예:
myCallback(hObject,evendata,handles)

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

예:
myCallback(app,event)

앱 디자이너에서 콜백 작성하기
데이터 공유

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

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

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

예:
app.currSelection = selection

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

관련 항목