このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
GUIDE の移行策
GUIDE は MATLAB® でアプリを作成するための独自のドラッグ アンド ドロップ環境であり、R2025a で削除されました。既存の GUIDE アプリは引き続き実行可能であり、アプリの動作を変更する必要がある場合はアプリ プログラム ファイルを引き続き編集できます。
既存の GUIDE アプリで作業を続けつつ、将来の MATLAB リリースとの互換性を維持するには、次の表にリストされた推奨される処理方法のいずれかを使用してください。
アプリ開発でのニーズ | 推奨される処理方法 | 詳細 |
---|---|---|
継続的な開発 | アプリを App Designer に移行します。 | App Designer への GUIDE アプリの移行 |
場合によって行われる編集 | GUIDE で作成された既存のアプリ コード ファイルを使用してアプリを編集します。 | GUIDE アプリのコード ファイルの編集 |
実行のみ | 引き続き GUIDE アプリを実行します。 | 既存の GUIDE アプリを実行するには、アプリに関連付けられているアプリ コード ファイルを実行します。 |
あるいは、GUIDE アプリを単一の MATLAB ファイルにエクスポートできます。ただし、エクスポートしたアプリは、将来 App Designer に移行することはできません。詳細については、GUIDE アプリを MATLAB ファイルにエクスポートを参照してください。
App Designer への GUIDE アプリの移行
メモ
この機能には、GUIDE to App Designer Migration Tool for MATLAB が必要です。
GUIDE アプリを App Designer に移行すると、アプリのレイアウトを引き続き対話的に開発できます。また、強化された UI コンポーネント セットおよび自動リフロー オプションなどの機能を活用して、アプリを画面サイズの変化に対応させることもできます。さらに、アプリを Web アプリとして作成したり、共有したりすることもできます MATLAB Compiler™ が必要)。
このオプションは、大規模または継続的な機能開発を必要とする GUIDE アプリに使用します。GUIDE アプリを移行するには、まず GUIDE to App Designer Migration Tool for MATLAB をダウンロードします。
アプリを移行する方法はいくつかあります。
App Designer で任意のアプリを開き、[デザイナー] タブに移動します。[ファイル] セクションで、[開く] 、 [GUIDE to App Designer Migration Tool を開く] をクリックします。
MATLAB コマンド ウィンドウで関数
appmigration.migrateGUIDEApp
を呼び出します。この関数を使用して複数の GUIDE アプリを一括して移行できます。
移行ツールの機能
移行ツールは、GUIDE の FIG ファイルを読み取り、等価の App Designer のコンポーネントとレイアウトを MLAPP ファイル内に自動生成することによって、アプリの変換に役立ちます。GUIDE のコールバック コードとその他のユーザー定義関数は、MLAPP ファイルにコピーされます。この半自動コード変換では移行レポートも作成され、必要とされる手動のコード更新に関するアクションが提案されます。このツールの機能の一部を以下の表に示します。
移行ツールの機能 | 説明 | |
---|---|---|
ファイル変換 | GUIDE の FIG ファイルと関連コードを読み取ってから、App Designer の MLAPP ファイルを生成します。App Designer ファイルの名前は guideFileName _App.mlapp の形式になります。 | |
コンポーネントとアプリ レイアウト | コンポーネントとプロパティ構成を App Designer の等価物に変換し、アプリのレイアウトを保持します。 | |
コールバック コード | GUIDE のコールバック コードのコピーおよびユーザー定義関数を MLAPP ファイルに保持します。 | |
チュートリアル | 移行したアプリに対する変更をステップ実行します。 | |
移行レポート | 移行ツールで正常に完了したアクションをまとめます。アプリ固有の制限またはサポートされていない機能をリストし、推奨アクションがあれば併せて記載します。 |
コールバック コード
GUIDE スタイルのコールバック コードをアプリの App Designer の UI コンポーネントに対応させるために、移行ツールは convertToGUIDECallbackArguments
という関数を使用します。この関数は、App Designer のコールバック引数を、コードに必要な GUIDE スタイルのコールバック引数に変換します。関数 convertToGUIDECallbackArguments
は、移行された各コールバック関数の先頭に追加されます。この関数は App Designer のコールバック引数 app
および event
を取り、GUIDE スタイルのコールバック引数 hObject
、eventdata
および handles
を返します。以下に例を示します。
GUIDE スタイルのコールバック引数はそれぞれ、次のように異なる目的で使用されます。
hObject
は、コールバックの実行対象のオブジェクトのハンドルです。GUIDE アプリのコンポーネントがUIControl
オブジェクトまたはButtonGroup
オブジェクトであった場合、hObject
はUIControlPropertiesConverter
オブジェクトまたはButtonGroupPropertiesConverter
オブジェクトへのハンドルです。これらのオブジェクトは、GUIDE スタイルのコードが App Designer のコールバック関数内で機能するように作成されています。通常、
eventdata
は空ですが、コールバック イベントに関する特定の情報を格納する構造体にすることもできます。handles
は、'Tag'
プロパティの値セットのある、UI Figure の移行済みの子コンポーネントを格納する構造体です。GUIDE アプリでUIControl
オブジェクトであった子コンポーネントは、移行後のアプリでUIControlPropertiesConverter
オブジェクトになります。同様に、子ButtonGroup
オブジェクトは、移行後のアプリでButtonGroupPropertiesConverter
オブジェクトになります。
UIControlPropertiesConverter
オブジェクトおよび ButtonGroupPropertiesConverter
オブジェクトは、GUIDE スタイルのコードと App Designer のコンポーネントおよびコールバックとの間でアダプターのように機能します。UIControlPropertiesConverter
オブジェクトは、GUIDE アプリで UIControl
オブジェクトであったコンポーネントごとに作成されます。これらのコンバーター オブジェクトは、移行したアプリ内で App Designer の UI コンポーネントに関連付けられます。コンバーター オブジェクトには、GUIDE アプリにあった元の UIControl
と同じプロパティおよび値がありますが、それらは関連付けられている App Designer の UI コンポーネントに適用されます。
同様に、GUIDE の ButtonGroup
オブジェクトについては、App Designer で ButtonGroupPropertiesConverter
オブジェクトが作成されます。このオブジェクトを使用すると、SelectedObject
プロパティを UIControlPropertiesConverter
オブジェクトに設定できます。これにより、ボタン グループの SelectionChangedFcn
コールバック ロジックが機能します。
特別な考慮事項
場合によっては、アプリの移行の前後に特別な手順が必要です。次の表に、特別な手順や手動でのコード更新が必要となる一般的なシナリオとコーディング パターンを示します。この表は、包括的なリストを意図していません。
GUIDE アプリの機能 | 説明 | 推奨アクション |
---|---|---|
マルチウィンドウ アプリ (データを共有する複数のアプリ) | マルチウィンドウ アプリでは、各アプリを個別に移行する必要があります。移行したアプリのファイル名には _App が追加されます。他のアプリからのこれらのアプリに対する呼び出しを更新しなければなりません。 | 各アプリを個別に移行します。呼び出し元のアプリで、呼び出し先のアプリの名前を新しいファイル名に更新します。 あるいは、 |
ラジオ ボタン、およびラジオ ボタンのコールバック | 移行ツールは、ラジオ ボタン グループを親にもたないラジオ ボタン、または個別のラジオ ボタンのコールバック関数を移行しません。 | App Designer でボタン グループを作成し、それにラジオ ボタンを追加します。ラジオ ボタンの選択の変更時に動作を実行するには、ボタン グループの SelectionChangedFcn コールバック関数を作成します。詳細については、uiradiobutton と ButtonGroup を参照してください。 |
ButtonDownFcn コールバック、KeyPressFcn コールバック、および KeyReleaseFcn コールバック | UIControl オブジェクトのボタンダウン コールバックとキー プレス コールバックは、相当するコールバックが App Designer にないため移行ツールで移行されません。 | アプリの移行後、コンポーネントに基づいて新しいコールバックを作成し、動作を再現するようにコードを更新します。たとえば、アプリに編集フィールドが含まれている場合は、コンポーネントの コンポーネントに同等の機能をもつコールバックがない場合は、代わりに UI Figure で function figure1WindowButtonDown(app,event) if app.figure1.CurrentObject == app.listbox1 % Execute callback code end end |
メニュー バーとツール バー | App Designer では、Figure の既定のメニュー バーとツール バーはサポートされていません。 | App Designer のコンポーネント ライブラリにある [メニュー バー] コンポーネントと [ツール バー] コンポーネントを使用して、カスタムのメニュー バーとツール バーを作成します。 アプリが既定のメニュー バーとツール バーに依存している場合は、代わりに App Designer アプリの |
uistack | App Designer に移行された GUIDE スタイルのオブジェクトでは、この関数の呼び出しはサポートされていません。 | App Designer のコンポーネントを使用するようにコードを更新します。その後、それらのオブジェクトで uistack 関数を呼び出すことができます。詳細については、移行後のアプリのコールバック コードの更新を参照してください。 |
findobj 、findall および gcbo |
| 代わりに handles 構造体を使用してコンポーネントを参照するか、関連付けられた App Designer のコンポーネント、プロパティおよび値を使用するようにコードを更新します。 |
nargin および nargchk | 補助関数はアプリ メソッドに移行され、app を追加の入力引数として取ります。これにより、nargin または nargchk のロジックが誤ったものになる場合があります。 | チェック値を 1 だけインクリメントします。 |
OutputFcn(varargout) および Figure 出力 | App Designer には相当する機能がありません。 移行された App Designer アプリをインスタンス化する場合、出力は | 関数 関数 function out = MyGUIDEApp(varargin) app = MyMigratedApp(varargin{:}); out = app.UIFigure; end |
GUIDE アプリで、actxcontrol
などの関数を使用してサードパーティ コンポーネントが統合されている場合は、Recommendations for MATLAB Apps Using Java and ActiveX を参照してください。
GUIDE と App Designer のコードの違い
App Designer と GUIDE では、コードの構造、コールバックの構文、そして UI コンポーネントへのアクセスとデータ共有のための手法に違いがあります。移行後のアプリに App Designer の新しい機能を追加する場合、または App Designer のコードのスタイルと規則を使用するようにアプリを更新する場合に、これらの違いを理解していると役立ちます。次の表は、これらの違いの一部をまとめています。
相違点 | GUIDE | App Designer | 詳細 |
---|---|---|---|
Figure とグラフィックスの使用 | GUIDE では、関数 GUIDE では、関数 すべての MATLAB グラフィックス関数がサポートされています。ターゲットの座標軸を指定する必要はありません。 | App Designer では、関数 App Designer では、関数 ほとんどの MATLAB グラフィックス関数がサポートされています。 | App Designer でのグラフィックスの表示 |
コンポーネントの使用 | GUIDE では、関数 | App Designer では、独自の専用関数を使ってそれぞれの UI コンポーネントを作成します。 | アプリ作成コンポーネント UIControl オブジェクトおよびコールバックの更新 |
コンポーネントのプロパティへのアクセス | GUIDE では、 例: | App Designer では 例: | App Designer のコールバック |
アプリ コードの管理 | コードは、ローカル関数を呼び出すことのできるメイン関数として定義されます。すべてのコードが編集可能です。 | コードは MATLAB クラスとして定義されています。コールバック、補助関数およびカスタム プロパティのみが編集可能です。 | App Designer コード ビューでのコードの管理 |
コールバックの作成 | GUIDE で作成されるコールバック関数には、 例: | App Designer で作成されるコールバック関数には、 例: | App Designer のコールバック |
データの共有 | コールバックと関数の間でデータの保存と共有を行うには、 例: | コールバックと関数の間でデータの保管と共有を行うには、カスタム プロパティを使用して変数を作成します。 | App Designer アプリ内でのデータの共有 |
移行後のアプリのコールバック コードの更新
移行後のアプリは、GUIDE スタイルのオブジェクトとコード規則を使用します。App Designer のオブジェクトとコード規則を使用するように、移行後のアプリのコールバック コードを更新することをお勧めします。コールバック コードを更新すると、最新のアプリ作成機能がサポートされるようになり、またアプリの保守が容易になります。コードを更新するには、以下の手順に従います。
App Designer の UI コンポーネントを使用する — コールバック関数で、代わりに
app
オブジェクトを使用するようにhandles
構造体への参照を更新します。handles
構造体は GUIDE アプリのUIControl
オブジェクトを表すコンバーター オブジェクトへのアクセスを提供するのに対し、app
オブジェクトは App Designer アプリの UI コンポーネントへのアクセスを提供します。たとえば、GUIDE スタイルのコールバックは、次のコードを使用してプッシュ ボタン スタイルの
UIControl
オブジェクトの背景色を設定します。handles.pushbutton1.BackgroundColor = 'red';
このコードを更新して、ボタン UI コンポーネントの背景色を直接設定します。
app.pushbutton1.BackgroundColor = 'red';
UI コンポーネントのプロパティを更新する — コールバック コードが設定するプロパティを更新します。一般に、
UIControl
オブジェクトとそれぞれに相当する UI コンポーネント オブジェクトには同じプロパティが多数あります。ただし、プロパティ名またはプロパティで受け入れる値の型にはいくつかの違いがあります。UIControl
と UI コンポーネント オブジェクトおよびプロパティの比較の詳細と、コードを更新して UI コンポーネントを使用する方法の詳細については、UIControl オブジェクトおよびコールバックの更新を参照してください。使用されないコードを削除する — コールバック関数が
hObject
、eventdata
、およびhandles
の各引数を使用しなくなったら、これらの引数を作成する移行ツールによって追加されたコードの行を削除します。[hObject,eventdata,handles] = convertToGUIDECallbackArguments(app,event);
関数 errordlg
または warndlg
などを使用して、アプリによりダイアログ ボックスが作成される場合は、uialert
や uiconfirm
など、アプリの作成用に特別に作成された最新のダイアログ ボックスを活用するために、コードを更新することもできます。詳細については、ダイアログ ボックスの更新を参照してください。
GUIDE アプリのコード ファイルの編集
GUIDE アプリは 2 つのファイルで構成されます。
FIG ファイル。拡張子は
.fig
です。このファイルには、レイアウトと各コンポーネント (プッシュ ボタン、座標軸、パネル、メニューなど) の記述が含まれています。アプリ コード ファイル。拡張子は
.m
です。このファイルには、アプリの動作を制御する初期化コードとコールバックが含まれています。
将来の MATLAB リリースとの互換性を維持するために軽微な変更を加えるなど、既存の GUIDE アプリを必要なときだけ編集する場合は、MATLAB エディターでコード ファイルを編集してアプリを保守できます。この方法を使用して、アプリの動作とアプリのレイアウトの両方を編集できます。
メモ
FIG ファイルは直接編集しないでください。これを行うと、予期しない動作やエラーの原因になることがあります。
コンポーネントのタグの特定
アプリのコンポーネントの外観やコールバックに変更を加えるには、最初にコンポーネントの Tag
プロパティの値を特定します。GUIDE で生成されるコードでは、このプロパティの値を使用してコンポーネントにアクセスします。たとえば、Tag
の値が pushbutton1
であるボタンの場合、コンポーネントのコールバック関数の名前は pushbutton1_callback
であり、handles.pushbutton1
にアクセスしてオブジェクトを変更できます。
特定のコンポーネントの Tag
の値を調べるには、まず出力引数を指定してアプリを実行し、アプリの Figure
オブジェクトを返します。その後、次のいずれかの方法を使用してコンポーネントにアクセスします。
findobj
関数を呼び出す — 関数にFigure
オブジェクトを渡して、すべてのコンポーネントとそれらのタグのリストを表示します。特定するコンポーネントのプロパティ値を指定すると出力をさらにフィルター処理できます。たとえば、"Click me"
というテキストが付いたプッシュ ボタンのタグを特定するには次のコードを使用します。f = myGUIDEApp; h = findobj(f,"Style","pushbutton","-and","String","Click me")
Figure の
CurrentObject
プロパティを使用する — まず、実行中のアプリでコンポーネントをクリックします。次に、Figure のCurrentObject
プロパティをクエリします。このプロパティは Figure 内で最後にクリックされたオブジェクトを返します。
最後に、コンポーネント オブジェクトへのアクセスが可能になったら、ドット表記を使用してその Tag
プロパティをクエリします。
tag = h.Tag
アプリの動作の編集
GUIDE を使用して作成されたアプリのコンポーネントには、コード ファイルでコールバック関数が関連付けられています。これらの関数により、ユーザーが操作したときのアプリの動作が制御されます。これらのコールバック関数は、アプリを保守するために引き続き編集できます。
たとえば、次の関数の定義は、pushbutton1
というタグのプッシュ ボタンについて GUIDE で生成されるコールバック関数の例です。ユーザーがボタンを押したときに実行されるコードをこの関数に追加できます。
function pushbutton1_Callback(hObject,eventdata,handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) end
myui
の場合、GUIDE では Callback
プロパティの値が次のように設定されます。@(hObject,eventdata)myui('pushbutton1_Callback',hObject,eventdata,guidata(hObject))
pushbutton1_Callback
の参照として機能する無名関数です。この無名関数には入力引数が 4 つあります。最初の引数は、コールバック関数の名前です。最後の 3 つの引数は、GUIDE で作成されたアプリ内のすべてのコールバックが受け入れなければならない引数です。GUIDE で生成されるコールバック関数では、これらの引数は次のとおりです。
hObject
— コールバックをトリガーした UI コンポーネントeventdata
— 特定のマウスやキーボード操作についての詳細情報を含む変数handles
— UI 内のすべてのオブジェクトを含むstruct
。UI では、guidata
関数を使用してこの構造体を格納および保守します。
eventdata
引数は、特定のコールバック関数に詳細情報を表示します。たとえば、アプリのユーザーによって KeyPressFcn
コールバックがトリガーされると、アプリのユーザーが押した特定のキー (またはキーの組み合わせ) に関する情報が MATLAB から提供されます。コールバック関数で使用できる eventdata
がない場合、MATLAB はこれを空の配列として渡します。次の表に、eventdata
を使用するコールバックとコンポーネントを示します。
コールバックのプロパティ名 | コンポーネント |
---|---|
WindowKeyPressFcn WindowKeyReleaseFcn WindowScrollWheelFcn | figure |
KeyPressFcn | figure , uicontrol , uitable |
KeyReleaseFcn | figure , uicontrol , uitable |
SelectionChangedFcn | uibuttongroup |
CellEditCallback CellSelectionCallback | uitable |
アプリのレイアウトの編集
GUIDE を使用して作成されたアプリには、いずれもコード ファイルに
という名前の関数があります。この関数はアプリの実行時に実行されます。アプリのレイアウトを編集するには、この関数にコードを追加します。appname
_OpeningFcn
たとえば、アプリに pushbutton1
というタグのプッシュ ボタンがあるとします。ボタンのテキストを変更してボタンの幅を更新するには、コード ファイルで OpeningFcn
コールバックに次のコードを追加します。
btn = handles.pushbutton1;
btn.String = "Push me";
btn.Position(3) = 30;
アプリのコンポーネントの追加と削除も可能です。コンポーネントを追加または削除するときは、必ず handles
構造体を更新します。さらに、コールバック関数の最後に次のコードを追加し、guidata
関数を使用して構造体を保存します。
guidata(hObject,handles)
たとえば、プッシュ ボタンを削除するには、次のコードを OpeningFcn
コールバックに追加します。
delete(handles.pushbutton1)
handles = rmfield(handles,"pushbutton1");
guidata(hObject,handles);
アプリにチェック ボックスを追加するには、次のコードを OpeningFcn
コールバックに追加します。
cbx = uicontrol(handles.figure1, ... Style="checkbox",Position=[20 10 80 20],Tag="checkbox1"); handles.checkbox1 = cbx; guidata(hObject,handles);
コールバックをもつコンポーネントを追加するには、その動作をアプリに組み込むために、さらにいくつかのコードを追加する必要があります。たとえば、値が変わったときに何らかのテキストを表示するチェック ボックスを追加するには、まず次のコードを OpeningFcn
コールバックに追加します。myui
はアプリ ファイルの名前に置き換えます。このコードは、チェック ボックスを作成して一意のタグを割り当て、checkbox1_Callback
という名前のコールバック関数を指定します。
cbx = uicontrol(handles.figure1, ... Style="checkbox",Position=[20 10 20 20],Tag="checkbox1", ... Callback=@(hObject,eventdata)myui("checkbox1_Callback",hObject,eventdata,guidata(hObject))); handles.checkbox1 = cbx; guidata(hObject,handles);
次に、コールバック関数をコード ファイルに追加します。MATLAB が GUIDE アプリのコールバック関数に渡す 3 つの入力引数を指定します。
% --- Executes on value changed in checkbox1. function checkbox1_Callback(hObject,eventdata,handles) % hObject handle to checkbox1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) disp("Value changed") end
GUIDE アプリを MATLAB ファイルにエクスポート
GUIDE アプリをエクスポートすると、GUIDE の FIG ファイルとアプリ コード ファイルが単一の MATLAB プログラム ファイルで再作成されて、アプリがプログラム アプリに変換されます。ほとんどの場合、アプリを App Designer に移行するか GUIDE アプリのコード ファイルを編集した方がアプリの長期的な保守は簡単になります。ただし、単一のアプリ ファイルを扱う場合はこのオプションが便利です。
アプリをエクスポートするには、App Designer で任意のアプリを開き、ツールストリップの [デザイナー] タブに移動します。[ファイル] セクションで、[開く] 、 [GUIDE to App Designer Migration Tool を開く] を選択します。ダイアログ ボックスで [単一コード ファイルへのエクスポート] パネルを展開し、アプリに関連付けられている FIG ファイルを選択して [エクスポート] をクリックします。ファイル名に _export
が付加されたプログラム ファイルが MATLAB で作成されます。新しいファイルには、元のコールバック コードに加え、アプリの作成とレイアウトを処理する自動生成された関数が含まれます。このようにして追加された関数の例を以下に示します。