主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

指导の移行策

R2019bにおいてMathWorks®は将来のリリースで指导を削除することを発表しました。指导は,MATLAB®でアプリを作成するための独自のドラッグアンドドロップ環境です。指南が削除された後も、既存の GUIDE アプリ (GUI) は引き続き MATLAB で動作します。また、アプリの動作を変更する必要がある場合は、アプリ プログラム ファイルの編集も引き続き可能です。

既存の指导アプリの”“レイアウトの編集を続けつつ,将来のMATLABリリースとの互換性を維持するには,次の表にリストされた推奨移行策のいずれかを使用しなければなりません。

アプリ開発でのニーズ 移行策 移行のやり方
場合によって行われる編集 アプリを単一のMATLABファイルにエクスポートし,MATLAB関数を使用してアプリのレイアウトとコードを管理します。 指导でアプリを開き,[ファイル](MATLABファイルにエクスポート]を選択します。
継続的な開発 アプリを应用设计师に移行します。 mathworks.comにあるMATLABの指导から应用设计师への移行ツールを使用します。

指导アプリをMATLABファイルにエクスポート

指导アプリをエクスポートすると,指导の无花果ファイルおよびプログラムファイルが単一のMATLABプログラムファイルで再作成されて,このアプリがプログラムアプリに変換されます。

このオプションは,次の計画がある場合に使用します。

  • アプリのレイアウトまたは動作に小さな変更を行う。

  • アプリの開発を対話的にではなくプログラムにより行う。

アプリをエクスポートするには,アプリを指导で開き,[ファイル](MATLABファイルにエクスポート]を選択します。MATLABはプログラム ファイルを作成し、ファイル名の末尾に_exportを付加します。新しいファイルには,元のコールバックコードに加え,アプリの作成とレイアウトを処理する自動生成された関数が含まれます。このようにして追加された関数の例を以下に示します。

程序设计师への指导アプリの移行

指导アプリを应用设计师に移行すると,アプリのレイアウトを引き続き対話的に開発できます。また,強化されたUIコンポーネントセットおよび自動リフローオプションなどの機能を活用して,アプリを画面サイズの変化に対応させることもできます。さらに,アプリをWebアプリとして作成したり,共有したりすることもできますMATLAB编译器™が必要)。

MATLAB対応の指导から应用设计师への移行ツールは,変換プロセスを簡単にするために,R2018aで初めてリリースされました。これは,MATLABデスクトップのアドオンエクスプローラー,またはMATLAB中央™の文件交换から入手できます。

R2020a以降,この移行ツールは大幅に改善され,软件设计师でアプリを実行するために必要な時間と手動でのコード更新回数が劇的に削減されています。これらの機能拡張の詳細については,コールバックコードを参照してください。

このオプションは,大規模または継続的な機能開発を必要とする指导アプリに使用します。

初めに使用する環境に応じて,アプリを移行する方法はいくつかあります。

  • (指导のクイックスタート]ダイアログで,(既存のGUIを開く]タブをクリックします。次に,无花果ファイルを選択し,(应用程序设计师に移行)をクリックします。指南から App Designer への移行ツールがインストールされている場合は、このツールが開きます。まだインストールされていない場合は、まずこのツールをダウンロードしてインストールするように要求するダイアログ ボックスが表示されます。移行ツールで、正しい FIG ファイルが移行対象として選択されていることを確認してから、[移行]をクリックします。アプリが移行され,软件设计师で自動的に開きます。

  • 程序设计师の[デザイナー]タブに移動します。[ファイル]セクションで,[開く](指导から应用设计师への移行ツールを開く]をクリックします。

移行ツールの機能

移行ツールは,指导の无花果ファイルを読み取り,等価の应用设计师のコンポーネントとレイアウトをMLAPPファイル内に自動生成することによって,アプリの変換に役立ちます。指导のコールバックコードとその他のユーザー定義関数は,MLAPPファイルにコピーされます。この半自動コード変換では移行レポートも作成され,必要とされる手動のコード更新に関するアクションが提案されます。このツールの機能の一部を以下の表に示します。

移行ツールの機能 説明
ファイル変換 指导の无花果ファイルと関連コードを読み取ってから,应用设计师のMLAPPファイルを生成します。程序设计师ファイルの名前はguideFileName_App.mlappの形式になります。
コンポーネントとアプリレイアウト

コンポーネントとプロパティ構成を应用设计师の等価物に変換し,アプリのレイアウトを保持します。

コールバックコード 指导のコールバックコードのコピーおよびユーザー定義関数をMLAPPファイルに保持します。
チュートリアル 移行したアプリに対する変更をステップ実行します。
移行レポート 移行ツールで正常に完了したアクションをまとめます。アプリ固有の制限またはサポートされていない機能をリストし,推奨アクションがあれば併せて記載します。

コールバックコード

指导スタイルのコールバックコードをアプリの应用程序UI设计师のコンポーネントに対応させるために,移行ツールはconvertToGUIDECallbackArgumentsという関数を使用します。この関数は,软件设计师のコールバック引数を,コードに必要な指导スタイルのコールバック引数に変換します。関数convertToGUIDECallbackArgumentsは,移行された各コールバック関数の先頭に追加されます。この関数は应用设计师のコールバック引数应用程序および事件を取り,指导スタイルのコールバック引数hObjecteventdataおよび处理を返します。以下に例を示します。

hObjectは,コールバックの実行対象のオブジェクトのハンドルです。指导アプリのコンポーネントがUIControlオブジェクトまたはButtonGroupオブジェクトであった場合,hObjectUIControlPropertiesConverterオブジェクトまたはButtonGroupPropertiesConverterオブジェクトへのハンドルです。これらのオブジェクトは,指导スタイルのコードが应用设计师のコールバック関数内で機能するように作成されています。

通常、eventdataは空ですが,コールバックイベントに関する特定の情報を格納する構造体にすることもできます。

处理は,“标签”プロパティの値セットのある,UI图の移行済みの子コンポーネントを格納する構造体です。指导アプリでUIControlオブジェクトであった子コンポーネントは,移行後のアプリでUIControlPropertiesConverterオブジェクトになります。同様に子ButtonGroupオブジェクトは,移行後のアプリでButtonGroupPropertiesConverterオブジェクトになります。

UIControlPropertiesConverterオブジェクトおよびButtonGroupPropertiesConverterオブジェクトは,指导スタイルのコードと应用设计师のコンポーネントおよびコールバックとの間でアダプターのように機能します。UIControlPropertiesConverterオブジェクトは,指导アプリでUIControlオブジェクトであったコンポーネントごとに作成されます。これらのコンバーターオブジェクトは,移行したアプリ内で应用程序UI设计师のコンポーネントに関連付けられます。コンバーターオブジェクトには,指导アプリにあった元のUIControlと同じプロパティおよび値がありますが,それらは関連付けられている应用程序UI设计师のコンポーネントに適用されます。

同様に,指导のButtonGroupオブジェクトについては,で程序设计师ButtonGroupPropertiesConverterオブジェクトが作成されます。このオブジェクトを使用すると,SelectedObjectプロパティをUIControlPropertiesConverterオブジェクトに設定できます。これにより,ボタン グループのSelectionChangedFcnコールバックロジックが機能します。

特別な考慮事項

場合によっては,アプリの移行の前後に特別な手順が必要です。次の表に,特別な手順や手動でのコード更新が必要となる一般的なシナリオとコーディングパターンを示します。この表は,包括的なリストを意図していません。

指导アプリの機能 説明 推奨アクション
マルチウィンドウアプリ(データを共有する複数のアプリ) マルチウィンドウアプリでは,各アプリを個別に移行する必要があります。移行したアプリのファイル名には_Appが追加されます。他のアプリからのこれらのアプリに対する呼び出しを更新しなければなりません。 各アプリを個別に移行します。呼び出し元のアプリで,呼び出し先のアプリの名前を新しいファイル名に更新します。
ラジオボタン,およびラジオボタンのコールバック

移行ツールは,ラジオボタングループを親にもたないラジオボタン,または個別のラジオボタンのコールバック関数を移行しません。

程序设计师でボタングループを作成し,それにラジオボタンを追加します。ラジオボタンの選択の変更時に動作を実行するには,ボタングループのSelectionChangedFcnコールバック関数を作成します。詳細については,uiradiobuttonButtonGroupのプロパティを参照してください。
clfgco电影,およびuistack 程序设计师でのこれらの関数の呼び出しはサポートされていません。 移行する前に,この機能がアプリにとって重要であるかどうかを判別します。程序设计师での回避方法はありません。
findobjfindallおよびgcbo

findobjfindallまたはgcboを使用してコンポーネントの参照およびプロパティの設定を行うと,エラーが発生する場合があります。UIControlオブジェクトは,同等の应用程序UI设计师のコンポーネントに移行されます。これらの移行済みのコンポーネントのプロパティにアクセスして設定するには,UIControlPropertiesConverterオブジェクトに対して設定しなければなりません。または、関連付けられた App Designer のコンポーネント、プロパティおよび値を使用するようにコードを更新できます。

代わりに处理構造体を使用してコンポーネントを参照するか,関連付けられた应用设计师のコンポーネント,プロパティおよび値を使用するようにコードを更新します。
输入参数个数およびnargchk 補助関数はアプリメソッドに移行され,应用程序を追加の入力引数として取ります。これにより,输入参数个数またはnargchkのロジックが誤ったものになる場合があります。 チェック値を1だけインクリメントします。
OutputFcn (varargout)および数字出力

程序设计师には相当する機能がありません。

移行された应用设计师アプリをインスタンス化する場合,出力は数字オブジェクトではなく,必ずアプリオブジェクトになります。

関数OutputFcnに,アプリに重要な初期化コードが含まれる場合,代わりにOpeningFcnの末尾にこれを追加します。

関数OutputFcnが,アプリをインスタンス化するときに出力(数字オブジェクトなど)をワークスペースに割り当てるよう指定している場合は,アプリをインスタンス化する関数を作成する必要があります。以下に例を示します。

函数out = MyGUIDEApp(varargin) app = MyMigratedApp(varargin{:});= app.UIFigure;结束

指导アプリで,actxcontrolなどの関数を使用してサードパーティコンポーネントが統合されている場合は,使用Java和ActiveX的MATLAB应用程序推荐を参照してください。

新規機能の追加または应用设计师のコードスタイルを完全採用するための補足情報

程序设计师と指导では,コードの構造,コールバックの構文,そしてUIコンポーネントへのアクセスとデータ共有のための手法に違いがあります。移行後のアプリに应用设计师の新しい機能を追加する場合,または应用设计师のコードのスタイルと規則を使用するようにアプリを更新する場合に,これらの違いを理解していると役立ちます。次の表は,これらの違いの一部をまとめています。

相違点 指南 程序设计师 詳細
图とグラフィックスの使用

指导では,関数数字を呼び出してアプリウィンドウを作成します。

指导では,関数を呼び出して,プロットを表示するための座標軸を作成します。

すべてのMATLABグラフィックス関数がサポートされています。ターゲットの座標軸を指定する必要はありません。

程序设计师では,関数uifigureを呼び出してアプリウィンドウを作成します。

程序设计师では,関数uiaxesを呼び出して,プロットを表示するための座標軸を作成します。

ほとんどのMATLABグラフィックス関数がサポートされています。

程序设计师でのグラフィックスの表示
コンポーネントの使用

指导では,関数uicontrolを使用してほとんどのコンポーネントを作成します。使用可能なコンポーネントは多くありません。

程序设计师では,独自の専用関数を使ってそれぞれのUIコンポーネントを作成します。TabGroupDatePickerなど,より多くのコンポーネントが使用できます。

アプリ作成コンポーネント
コンポーネントのプロパティへのアクセス

指导では,得到を使用してコンポーネントプロパティにアクセスし,处理を使用してコンポーネントを指定します。

例:
name =得到(handles.Fig '名称')

程序设计师では得到がサポートされていますが,コンポーネントプロパティへのアクセスにはドット表記の使用が推奨され,コンポーネントの指定には应用程序を使用します。

例:
name = app.UIFigure.Name

程序设计师でコールバックを記述する
アプリコードの管理

コードは,ローカル関数を呼び出すことのできるメイン関数として定義されます。すべてのコードが編集可能です。

コードはMATLABクラスとして定義されています。コールバック,補助関数およびカスタムプロパティのみが編集可能です。

程序设计师コードビューでのコードの管理
コールバックの作成

コールバックで必須の入力引数は,处理hObject,およびeventdataです。

例:
myCallback (hObject evendata处理)

コールバックで必須の入力引数は,应用程序および事件です。

例:
myCallback(应用程序、事件)

程序设计师でコールバックを記述する
データの共有

コールバックと関数の間でデータの保存と共有を行うには,用户数据プロパティ,处理構造体、関数guidata、関数setappdataまたは関数getappdataを使用します。

例:
句柄。currSelection =选择;
guidata (hObject处理);

コールバックと関数の間でデータの保管と共有を行うには,カスタムプロパティを使用して変数を作成します。

例:
app.currSelection =选择

程序设计师アプリ内でのデータの共有

関連するトピック