MATLABでサクッとプラットフォームの判定をする

2595 ワード

最近、MATLABをWindowsとLinuxで使う機会があり、どちらの環境でも動作するスクリプトを書くにはどうしたらいいのか調べたので、あんまり需要がなさそうですが備忘録として残します。
スクリプトにはプラットフォーム固有の書き方が変わる箇所が含まれていることを前提とします。[1]

実行しているコンピュータの情報を取得する関数

MATLABには、computerという関数があります。
この関数の戻り値を文字列操作して、プラットフォームの判別を行うことができます。

% computer の戻り値を操作したプラットフォーム判定(例)
str = computer();
if contains(str,'WIN') 
  % Windowsのみ行う処理
elseif contains(str,'MAC')
  % Macのみ行う処理
elseif contains(str, 'LNX')
  % Linuxのみ行う処理
else
  % サポートしてないプラットフォーム
end

もうちょっと楽なやり方が

MATLABは以下の便利な関数が用意されています!

  • ispc
  • isunix
  • ismac

これら関数の実行結果は次のようになります。
WindowsはWindows10, Windows11を、LinuxはUbuntu 20.04で動作を確認しています。[2]

ispc isunix ismac
Windows 1 0 0
Mac 0 1 1
Linux 0 1 0

実行環境がMacの場合のみ、ismacisunixで 1 が帰ってくることに注意する必要がありますが、ifの順序を間違えなければ問題ありません。

% isxxx を使ったプラットフォーム判定
if ismac
  % Macのみ行う処理(isunixより先に判定しておく)
elseif isunix
  % Linuxのみ行う処理
elseif ispc
  % Windowsのみ行う処理
else
  % サポートしてないプラットフォーム
end

文字列操作の場合よりも、シンプルな書き方になりました。

まとめ

is***を使うと、サクッと動作しているプラットフォームを判定できる

参考資料

脚注
  1. 例えば読み込む外部ツールのパスが変わるとか ↩︎

  2. (Macを持っていないため、Mac環境での動作が確認できませんでした。Macほしい🫠) ↩︎