Main Content

カスタム設定の作成

設定では、現在のセッションや複数のセッションで、プログラムによるデータの保存、アクセス、変更を行う方法が提供されます。既定では、MATLAB® および他の MathWorks® 製品には、ツールの外観と動作にアクセスし、それらを変更するために使用できる設定が含まれています。たとえば、MATLAB には特定のコード ツールのフォントをプログラムで変更できるようにする設定が含まれています。

カスタム設定を作成することで、複数のセッションを通して自分のデータを保存し、それにアクセスすることができます。たとえば、設定を作成してシステムにある重要なフォルダーの場所を保存したり、あるファイルの実行回数を記録することができます。

設定グループの追加と削除

設定は、グループに整理することができます。グループ化設定は特定の設定の検索を容易にし、その設定の用途に関する追加コンテキストも提示します。たとえば、matlab.editor 設定グループには、MATLAB エディターに固有の設定がすべて含まれています。設定グループはより大きなグループに整理され、ツリーを形成します。ツリーの最上部には root 設定グループ オブジェクトがあります。

Settings tree hierarchy. At the top of the tree is the root node with two child nodes, matlab and another node labeled with three dots. The matlab node has three child nodes: general, editor, and another node labeled with three dots.

新たな設定グループを追加するには、関数 addGroup を使用します。たとえば、root 設定グループ オブジェクトの下に設定グループ mysettings を作成します。

s = settings;
addGroup(s,'mysettings');
s
s = 
  SettingsGroup with properties:
                   matlab: [1×1 SettingsGroup]
               mysettings: [1×1 SettingsGroup]
    mldrivetripwireaccess: [1×1 SettingsGroup]

たとえば、親の設定グループを表示する際に設定階層に表示されない、非表示の設定グループを作成するには、名前と値のペア 'Hidden' を指定します。非表示の設定グループは親の設定グループ内に表示されませんが、プログラムによってアクセスできます。たとえば、mysettings 内に設定グループ myhiddensettings を作成します。myhiddensettingsmysettings 内に表示されないことに注意してください。

addGroup(s.mysettings,'myhiddensettings','Hidden',true);
s.mysettings
ans = 
  SettingsGroup 'mysettings' with no properties.

設定グループを削除するには、関数 removeGroup を使用します。たとえば、myhiddensettings を削除します。

removeGroup(s,'myhiddensettings');

設定の追加と削除

新たな設定を追加するには、関数 addSetting を使用します。たとえば、設定 MyWorkAddressmysettings 設定グループに追加します。

s = settings;
addGroup(s,'mysettings');
addSetting(s.mysettings,'MyWorkAddress');

メモ

設定をルート設定グループに直接追加することはサポートされていません。

設定を作成したら、それに値を与えることができます。設定にはいくつかの異なった値のタイプがあり、現在のセッションだけに値を設定するか、あるいは個人ユーザー用に複数のセッションにわたり設定することができます。これらの値のタイプの詳細については、設定へのアクセスと変更を参照してください。

設定の値を指定するには、その個人用の値または一時的な値を設定します。カスタム設定に出荷時の値を指定することはできません。たとえば、MyWorkAddress に個人用の値を指定します。

s.mysettings.MyWorkAddress.PersonalValue = '3 Apple Hill Drive';

すると、プログラムにより設定値をコードで使用することができます。

fprintf('I work at %s.\n', s.mysettings.MyWorkAddress.ActiveValue)
I work at 3 Apple Hill Drive.

非表示の設定を追加するには、名前と値のペアの引数 'Hidden' を使用します。非表示の設定は、たとえば親の設定グループを表示するときなどは設定階層に表示されませんが、プログラムによるアクセスが可能です。たとえは、非表示の設定 MyHiddenWorkAddressmysettings 設定グループに追加して、その個人用の値を設定します。

addSetting(s.mysettings,'MyHiddenWorkAddress','Hidden',true, ...
'PersonalValue','1 Lakeside Campus Drive');

また、名前と値のペアの引数 'ReadOnly' を使用して、読み取り専用の設定を追加することもできます。読み取り専用の設定をいったん作成すると、その一時的な値または個人用の値を変更することはできません。したがって、個人用の値は設定の追加時に指定しなければなりません。たとえば、読み取り専用の設定 MyBirthDate を、個人用の値を指定して mysettings 設定グループに追加します。

mydate = datetime('6/1/1990','InputFormat','MM/dd/uuuu');
addSetting(s.mysettings,'MyBirthDate','ReadOnly',true,'PersonalValue',mydate);

関数を使用した設定の検証

設定またはグループに検証関数を指定することにより、設定値に特定の制約を課することができます。検証関数は、設定値候補を引数として受け入れ、その値が特定の要件を満たさない場合はエラーをスローします。

MATLAB では、設定の検証に使用できる有用な検証関数をいくつか定義しています。次の表には、これらの関数、その意味、およびそれらに使用される MATLAB 関数が挙げられています。

名前

意味

入力で呼び出される関数

matlab.settings.mustBeStringScalar(A)

A は string スカラーでなければならない。

isStringScalar

matlab.settings.mustBeLogicalScalar(A)

A は logical スカラーでなければならない。

islogical, isscalar

matlab.settings.mustBeNumericScalar(A)

A は数値スカラーでなければならない。

isnumeric, isscalar

matlab.settings.mustBeIntegerScalar(A)

A は整数スカラーでなければならない。

isinteger, isscalar

mustBePositive(A)

A > 0

gt, isreal, isnumeric, islogical

mustBeNonpositive(A)

A <= 0

ge, isreal, isnumeric, islogical

mustBeFinite(A)

A には、NaN 要素も Inf 要素もない。

isfinite

mustBeNonNan(A)

A には NaN 要素がない。

isnan

mustBeNonnegative(A)

A >= 0

ge, isreal, isnumeric, islogical

mustBeNegative(A)

A < 0

lt, isreal, isnumeric, islogical

mustBeNonzero(A)

A ~= 0

eq, isnumeric, islogical

mustBeNonempty(A)

A は空ではない。

isempty

mustBeNonsparse(A)

A にはスパース要素がない。

issparse

mustBeNumeric(A)

A は数値である。

isnumeric

mustBeNumericOrLogical(A)

A は数値または論理値である。

isnumeric, islogical

mustBeReal(A)

A には虚数部がない。

isreal

mustBeInteger(A)

A == floor(A)

isreal, isfinite, floor, isnumeric, islogical

設定を作成する際に検証関数を指定するには、名前と値のペアの引数 'ValidationFcn' を使用して、関数ハンドルを指定します。たとえば、設定 MyLogicalSettingmysettings 設定グループに追加し、その値が logical スカラーでなければならないと指定します。

s = settings;
addGroup(s,'mysettings');
addSetting(s.mysettings,'MyLogicalSetting','ValidationFcn',@matlab.settings.mustBeLogicalScalar);

MyLogicalSetting の値を logical 値以外に設定しようと試みると、MATLAB はエラーを返します。

s.mysettings.MyLogicalSetting.PersonalValue = 10;
Error setting 'MyLogicalSetting' in group 'mysettings': 
Value must be logical or convertible to logical.

設定グループ全体に検証関数を指定することもできます。指定した検証関数は、グループ内で独自の検証関数が定義されていないすべての設定の値を検証するために使用されます。たとえば、設定グループ mylogicalsettings を作成し、検証関数 matlab.settings.mustBeLogicalScalar を指定します。

addGroup(s.mysettings,'mylogicalsettings','ValidationFcn',@matlab.settings.mustBeLogicalScalar);

設定 MyLogicalSettingmylogicalsettings グループ内に作成し、設定の値を logical 値以外に設定しようと試みます。MATLAB はエラーを返します。

addSetting(s.mysettings.mylogicalsettings,'MyLogicalSetting');
s.mysettings.mylogicalsettings.PersonalValue = 10;
Error setting 'MyLogicalSetting' in group 'mysettings': 
Value must be logical or convertible to logical.

カスタム検証関数の定義

独自の検証関数を作成することも可能です。これらは、MATLAB の検証関数でカバーされないプロパティをチェックすることができます。検証関数は、設定値の検証を目的として設計されている、通常の MATLAB 関数です。それらは以下の条件を満たさなければなりません。

  • 設定値候補を入力引数として受け入れる。

  • 出力引数がない。

  • 検証に失敗した場合はエラーをスローする。

検証関数を MATLAB パスに配置して、利用できるようにします。

たとえば、設定の値が数値かどうかを検証する関数を作成します。

function numericValidationFcn(x)
    errorMsg = 'Value must be numeric.'; 
    assert(isnumeric(x),errorMsg);
end

検証関数を新しい設定に追加します。

s = settings;
addGroup(s,'mysettings');
addSetting(s.mysettings,'MyNumericSetting','ValidationFcn',@numericValidationFcn);

MyNumericSetting の値を数値以外の値に設定します。MATLAB はエラーを返します。

s.mysettings.MyNumericSetting.PersonalValue = 'Hello';
Unable to validate settings data. Error using myvalidationFcn (line 3)
Value must be numeric.

また、mustBeGreaterThanmustBeLessThanmustBeGreaterThanOrEqualmustBeLessThanOrEqualmustBeMember など、複数の入力を必要とする MATLAB 検証関数を利用したカスタム検証関数を作成することもできます。たとえば、次の関数は、設定の値が 4 つの色のいずれかであることを検証します。

function colorValidationFcn(val) 
    mustBeMember(val, ['Black' 'Blue' 'Yellow' 'Green']); 
end

設定または設定グループへの検証関数の追加の詳細については、addSetting および addGroup を参照してください。

参考

| | | | | |

関連するトピック