function path = mypath(str)

% 引数の候補
arguments
    str string {mustBeMember(str, ...
        [
        "HOME"
        "ANALYSIS"
        "EXPERIMENTS"
        "EXP1"
        "DATA1"
        "RESULT1"
        "EXP2"
        "DATA2"
        "RESULT2"
        "EXP3"
        "DATA3"
        "RESULT3"
        ])} = "HOME"
end

% strをすべて大文字にする
str = string(upper(str));

switch str
    case "HOME" % ホームディレクトリ
        path = char(java.lang.System.getProperty('user.home'));
        
    case "HDD" % 外付けHDD
        path = fullfile('/Volumes', 'HDD');
        
    case "ANALYSIS" % 解析スクリプト
        path = fullfile(mypath("HOME"), 'Analysis');
        
    case "EXPERIMENTS"  % 実験データ
        path = fullfile(mypath("HOME"), 'Experiments');
        
    case "EXP1"     % 実験1
        path = fullfile(mypath("EXPERIMENTS"), 'Exp1');
        
    case "DATA1"    % 実験1のデータ
        path = fullfile(mypath("EXP1"), 'data');
        
    case "RESULT1"  % 実験1の解析結果
        path = fullfile(mypath("EXP1"), 'result');
        
    case "EXP2"     % 実験2
        path = fullfile(mypath("EXPERIMENTS"), 'Exp2');
        
    case "DATA2"    % 実験2のデータ
        path = fullfile(mypath("EXP2"), 'data');
        
    case "RESULT2"  % 実験2の解析結果
        path = fullfile(mypath("EXP2"), 'result');
        
    case "EXP3"     % 実験3
        path = fullfile(mypath("HDD"), 'Exp2');
        
    case "DATA3"    % 実験3のデータ
        path = fullfile(mypath("EXP3"), 'data');
        
    case "RESULT3"  % 実験3の解析結果
        path = fullfile(mypath("EXP3"), 'result');
        
    otherwise
        error('指定されたフォルダはMyPath関数に登録されていません．')
end

% エラー処理
if exist(path, 'dir') ~= 7
    warning('指定されたフォルダは存在しません．\n%s', path)
end

end
