カスタム設定の作成
設定では、現在のセッションや複数のセッションで、プログラムによるデータの保存、アクセス、変更を行う方法が提供されます。既定では、MATLAB® および他の MathWorks® 製品には、ツールの外観と動作にアクセスし、それらを変更するために使用できる設定が含まれています。たとえば、MATLAB には特定のコード ツールのフォントをプログラムで変更できるようにする設定が含まれています。
カスタム設定を作成することで、複数のセッションを通して自分のデータを保存し、それにアクセスすることができます。たとえば、設定を作成してシステムにある重要なフォルダーの場所を保存したり、あるファイルの実行回数を記録することができます。
設定グループの追加と削除
設定は、グループに整理することができます。グループ化設定は特定の設定の検索を容易にし、その設定の用途に関する追加コンテキストも提示します。たとえば、matlab.editor
設定グループには、MATLAB エディターに固有の設定がすべて含まれています。設定グループはより大きなグループに整理され、ツリーを形成します。ツリーの最上部には root 設定グループ オブジェクトがあります。
新たな設定グループを追加するには、関数 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
を作成します。myhiddensettings
が mysettings
内に表示されないことに注意してください。
addGroup(s.mysettings,'myhiddensettings','Hidden',true); s.mysettings
ans = SettingsGroup 'mysettings' with no properties.
設定グループを削除するには、関数 removeGroup
を使用します。たとえば、myhiddensettings
を削除します。
removeGroup(s,'myhiddensettings');
設定の追加と削除
新たな設定を追加するには、関数 addSetting
を使用します。たとえば、設定 MyWorkAddress
を mysettings
設定グループに追加します。
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'
を使用します。非表示の設定は、たとえば親の設定グループを表示するときなどは設定階層に表示されませんが、プログラムによるアクセスが可能です。たとえは、非表示の設定 MyHiddenWorkAddress
をmysettings
設定グループに追加して、その個人用の値を設定します。
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 関数が挙げられています。
名前 | 意味 | 入力で呼び出される関数 |
---|---|---|
| ||
| ||
| ||
| ||
| ||
| ||
|
| |
|
| |
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
| |
|
設定を作成する際に検証関数を指定するには、名前と値のペアの引数 'ValidationFcn'
を使用して、関数ハンドルを指定します。たとえば、設定 MyLogicalSetting
を mysettings
設定グループに追加し、その値が 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);
設定 MyLogicalSetting
を mylogicalsettings
グループ内に作成し、設定の値を 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.
また、mustBeGreaterThan
、mustBeLessThan
、mustBeGreaterThanOrEqual
、mustBeLessThanOrEqual
、mustBeMember
など、複数の入力を必要とする MATLAB 検証関数を利用したカスタム検証関数を作成することもできます。たとえば、次の関数は、設定の値が 4 つの色のいずれかであることを検証します。
function colorValidationFcn(val) mustBeMember(val, ['Black' 'Blue' 'Yellow' 'Green']); end
設定または設定グループへの検証関数の追加の詳細については、addSetting
および addGroup
を参照してください。
参考
settings
| addGroup
| removeSetting
| removeGroup
| addSetting
| hasGroup
| hasSetting