Main Content

App Designer 用のカスタム UI コンポーネントの構成

R2021a 以降では、カスタム UI コンポーネントを作成する際に、アプリ作成者がコンポーネントを App Designer で対話形式で使用できるように構成できます。UI コンポーネントの構成後、アプリ作成者は [コンポーネント ライブラリ] にコンポーネントを追加し、App Designer キャンバスおよびプロパティ インスペクターでコンポーネントを操作できます。

この構成手順に従うと、App Designer で対話形式で作成するかプログラムで matlab.ui.componentcontainer.ComponentContainer 基底クラスのサブクラスとして作成したカスタム UI コンポーネントを次のいずれかの方法で使用できるようになります。

  • UI コンポーネントに App Designer の [コンポーネント ライブラリ] からアクセスし、App Designer アプリの作成時に対話形式で使用する。

  • 他のユーザーが App Designer でアプリを作成する際に対話形式で使用できるように UI コンポーネントを共有する。

カスタム UI コンポーネントの作成の詳細については、以下を参照してください。

カスタム UI コンポーネントの前提条件

カスタム UI コンポーネント クラスを App Designer で対話形式で使用できるようにするには、UI コンポーネント クラスが満たさなければならない要件がいくつかあります。

UI コンポーネントを正常に構成するには、UI コンポーネント クラスの setup メソッドに必須の入力引数を含めてはなりません。また、コンポーネント クラスの親コンテナーに追加の UI コンポーネントを動的に追加することはできません。唯一の例外として、ContextMenu コンポーネントだけはクラスの親 Figure に動的に追加できます。

コンポーネント クラスのパブリック プロパティがプロパティ インスペクターに表示されるようにするには、タイプを指定するか既定値を割り当てる必要があります。プロパティが列挙の場合は、タイプの指定と既定値の割り当ての "両方" が必要です。また、プロパティ タイプは App Designer でサポートされるタイプのリストに属していなければなりません。次の表に、許容されるプロパティ タイプとそれらのプロパティ インスペクターでの外観を示します。

プロパティ カテゴリサポートされているデータ型プロパティ インスペクターの入力
数値singledoubleint8int16int32int64uint8uint16uint32uint64 型のスカラーまたは配列編集フィールド
論理値logicalチェック ボックス
テキストstring 型のスカラー、char 型のスカラーまたは行ベクトル、cell 型のスカラーまたはベクトルテキスト エリア
列挙値enumeration編集可能なドロップダウン リスト

プロパティ タイプの指定と既定値の割り当ての詳細については、以下を参照してください。

カスタム UI コンポーネントの構成

App Designer で使用するカスタム UI コンポーネントを構成する方法は、コンポーネントを App Designer で対話形式で作成したか、プログラムで ComponentContainer 基底クラスのサブクラスとして作成したかによって異なります。

  • App Designer で作成したコンポーネント — App Designer でコンポーネントを開きます。[デザイナー] タブの [ファイル] セクションで [構成] をクリックします。

    あるいは、MATLAB® コマンド ウィンドウから関数 appdesigner.customcomponent.configureMetadata を呼び出し、コンポーネントの MLAPP ファイルのパスを渡します。

  • プログラムで作成したコンポーネント — MATLAB コマンド ウィンドウから関数 appdesigner.customcomponent.configureMetadata を呼び出し、コンポーネントのクラス ファイルのパスを渡します。

    たとえば、フォルダー C:\MyComponentsColorSelector.m として保存されているカスタム UI コンポーネントを構成するには、次のコマンドを使用します。

    appdesigner.customcomponent.configureMetadata('C:\MyComponents\ColorSelector.m');

これらの手順に従うと、[カスタム UI コンポーネントの App Designer メタデータ] ダイアログ ボックスが開きます。このダイアログ ボックスでコンポーネントに関するメタデータを指定できます。App Designer では、このメタデータを使用して [コンポーネント ライブラリ] にコンポーネントを表示します。

App Designer Custom UI Component Metadata dialog box for the ColorSelector component

このダイアログ ボックスでは、必要なすべてのメタデータがコンポーネントのクラス定義から事前に入力されます。フォームを使用して事前に入力されたメタデータを編集できます。[OK] を選択して UI コンポーネントを構成します。

[OK] を選択すると、関数によって resources という名前のフォルダーがカスタム コンポーネント ファイルと同じフォルダー内に作成されます。resources フォルダー内には、関数によって生成された appDesigner.json という名前のファイルが含まれています。このファイルに、コンポーネントを App Designer で使用できるようにするために MATLAB で必要な他のメタデータと共に、ダイアログ ボックスで指定したメタデータが格納されます。

メモ

appDesigner.json ファイルは手動で変更しないでください。カスタム UI コンポーネントのメタデータを変更するには、コンポーネントを再構成します。

構成した UI コンポーネントの App Designer での表示

カスタム UI コンポーネントを構成したら、App Designer で表示して使用できます。App Designer の [コンポーネント ライブラリ] に UI コンポーネントが表示されるようにするには、コンポーネント ファイルを含むフォルダーと生成された resources フォルダーを MATLAB パスに追加する必要があります。

たとえば、ColorSelector カスタム コンポーネントを作成して MyComponents という名前のフォルダーに保存している場合、その App Designer メタデータを構成するには、次の手順に従って App Designer でコンポーネントを使用します。

  1. 検索パス上のフォルダーの変更の手順に従って、MyComponents フォルダーを MATLAB パスに追加します。

  2. App Designer を開き、[空のアプリ] を選択します。

  3. コンポーネントを [コンポーネント ライブラリ] から App Designer キャンバスにドラッグします。

コンポーネントのプロパティ インスペクターのリストに、コンポーネントのパブリック プロパティとパブリック コールバックが表示されます。

A ColorSelector UI component on the App Designer canvas. The UI component is selected and editable via the App Designer Component Browser.

メモ

App Designer アプリでコンポーネントを使用している間は、エラーや予期しない動作の原因になる可能性があるため、カスタム コンポーネント ファイルを変更しないでください。

カスタム UI コンポーネントの再構成

次の場合は、前に構成した UI コンポーネントを再構成します。

  • 既存の UI コンポーネントのメタデータを変更し、App Designer の [コンポーネント ライブラリ] でのコンポーネントの表示を更新する。

  • クラス定義で UI コンポーネントの位置またはレイアウトに変更を加えた。

UI コンポーネントを再構成するには、カスタム UI コンポーネントの構成の節と同じ手順に従います。既存のメタデータが事前に入力された状態で [カスタム UI コンポーネントの App Designer メタデータ] ダイアログ ボックスが開きます。

メタデータを更新し、[OK] を選択します。

App Designer Custom UI Component Metadata dialog box for the ColorSelector component with the Category and Author's Name fields edited

App Designer に戻ります。構成オプションの更新が反映されて、コンポーネントが [コンポーネント ライブラリ] に表示されます。

App Designer Component Library with the ColorSelector UI component displayed under the category "Color (Custom)". The mouse cursor is pointing to the component, which displays a message with the component name, version, description, author, and file location.

App Designer からの UI コンポーネントの削除

カスタム UI コンポーネントを App Designer の [コンポーネント ライブラリ] から削除するには、関数 appdesigner.customcomponent.removeMetadata を使用します。

コンポーネント ファイルへのパスを渡して関数を呼び出します。この関数により、resources フォルダー内の appDesigner.json ファイルから UI コンポーネントのメタデータが削除され、App Designer の [コンポーネント ライブラリ] からコンポーネントが削除されます。

appdesigner.customcomponent.removeMetadata('C:\MyComponents\ColorSelector.m');

カスタム UI コンポーネントの App Designer メタデータを削除すると、それを使用する App Designer アプリは正しく読み込まれなくなります。UI コンポーネントを使用するアプリの編集を続けるには、アプリを開く前にコンポーネントを再構成します。

構成した UI コンポーネントの共有

UI コンポーネントを構成した後、他のユーザーが App Designer で使用できるようにコンポーネントを共有できます。関連ファイルを直接共有できるほか、コンポーネントをツールボックスとしてパッケージ化することもできます。いずれの場合も、生成された resources フォルダーを一緒に共有する必要があります。

UI コンポーネントのファイルを直接共有

構成した UI コンポーネントをユーザーと直接共有するには、次の内容を含むフォルダーを作成して共有します。

  • UI コンポーネント クラス ファイル

  • 生成された resources フォルダー

UI コンポーネントを共有するユーザーに、共有フォルダーを MATLAB パスに追加するように伝えます。

UI コンポーネントをツールボックスとしてパッケージ化

ツールボックスの作成と共有の手順に従って、UI コンポーネントをツールボックスとしてパッケージ化します。ツールボックスとしてパッケージ化するフォルダーに次の内容が含まれることを確認してください。

  • UI コンポーネント クラス ファイル

  • 生成された resources フォルダー

得られた .mltbx ファイルをユーザーと直接共有できます。それをインストールするには、MATLAB の [現在のフォルダー] ブラウザーで .mltbx ファイルをダブルクリックしなければなりません。

または、.mltbx ファイルを MATLAB Central File Exchange にアップロードすることによって、UI コンポーネントをアドオンとして共有できます。ユーザーは、次の手順を実行することによって、MATLAB ツールストリップからアドオンを検索してインストールできます。

  1. MATLAB ツールストリップの [ホーム] タブの [環境] セクションで、[アドオン] を選択します。

  2. [アドオン エクスプローラー] ウィンドウの左側で利用可能なカテゴリを参照して、アドオンを見つけます。または、検索バーを使用し、キーワードを使用してアドオンを検索します。

  3. アドオンをクリックして詳細情報ページを開きます。

  4. 情報ページで、[追加] をクリックしてアドオンをインストールします。

カスタム UI コンポーネントが見つからない場合のトラブルシューティング

カスタム UI コンポーネントを含むアプリを開くには、コンポーネント ファイルと生成された resources フォルダーが MATLAB パス上になければなりません。App Designer でカスタム UI コンポーネントを読み込めない場合、アプリを開くときに警告ダイアログ ボックスが表示されます。アプリを開くときにこのダイアログ ボックスが表示された場合は、次の手順に従って見つからないコンポーネントを読み込みます。

  1. UI コンポーネント ファイルとコンポーネントのメタデータを含む生成された resources フォルダーが単一のフォルダーにあることを確認します。

  2. 検索パス上のフォルダーの変更の手順に従って、コンポーネント ファイルを含むフォルダーと resources フォルダーを MATLAB パスに追加します。

  3. カスタム UI コンポーネントを含むアプリをもう一度開きます。これで、アプリとコンポーネントが想定どおりに読み込まれます。

参考

関数

クラス

関連するトピック