概要
windows PCのPC名の付け方でミスをすると、MATLABのスクリプトエディタでのみ不具合が生じるという現象が発生します。PC名にはアンダーバーを使えないことが要注意ポイントです。
本記事は、「状況・環境・検証・解決方法・結論」の順で構成されます。
私はこの作業中に不具合に気づいただけで、他の方は別の箇所から不具合に気付くかもしれません。その時に検索しやすいように、今回検証した事柄は全て掲載しておきます。
状況:ネットワーク内の共有フォルダ内のファイルがMATLABでだけ開けない
windows11 homeのパソコンA内に共有フォルダを設置し、中にMATLABのスクリプトファイル(.m)やテキストファイルなどを格納しました。ファイル共有の権限等は問題なく、同じネットワーク内の他のパソコンBから、テキストファイルをメモ帳で開いて編集することはできました。このファイル共有は、ネットワークドライブではなく、UNCパスで行いました。(例えば、'¥¥Server-Name¥shared_folder'の形式)
しかしながら、MATLABデスクトップ環境からスクリプト(.m)ファイルを開いてスクリプトエディタに表示することができません。共同作業で編集しようと思っていたので、困りました。
環境
ホストPC: windows 11 home、MATLAB2024b、プライベートネットワークにWiFi接続、外部セキュリティソフトはなし、ノートPC
リモートPC: windows 10 pro、MATLAB2024a、プライベートネットワークにLAN接続、外部セキュリティソフトはなし、デスクトップPC
ホストPC2: windows 10 pro、MATLAB2024a、プライベートネットワークにLAN接続、外部セキュリティソフトはなし、デスクトップPC
検証
1. スクリプトファイルは実行可能
コマンドラインからスクリプトファイルを指定すると、実行はできます。実行はできるのにスクリプトエディタで開くことだけができません。また、スクリプト内の関数一覧はDetails欄にきちんと表示されます。
この時点で、読み取り許可などの問題ではないことがわかります。
2. figure(.fig)ファイルは開いて編集可能
figureを作成し、figure(.fig)ファイルとして保存しました。同様にMATLAB GUI内から開くことを試み、見事表示できました。また、リモート側で編集することも可能でした。
ここから、書き込み権限に問題ないことがわかります。
3. 別のホストPCで同様の操作は可能
別のPPC(ホストPC2)にて、若干環境は違いますが、同様の操作を行いました。スクリプトエディタでスクリプト(.m)ファイルを開くことができ、編集も可能でした。
このことから、windowsやMATLABとしては、UNCパスによるフォルダ共有も問題ないことがわかります。
4. UNCパスをネットワークドライブに変更したら編集可能になった
共有フォルダをネットワークドライブとして登録して、ネットワークドライブ(たとえば、「Z:」など)のパスでMATLAB内から呼び出した場合は、スクリプトエディタで開くことができ編集もできました。
問題は固有のUNCパス内にあったことがわかります。しかし、MATLABで非推奨とされる非ASCII文字はUNCパス内に入っていません。(日本語を含む大体の全角文字は、非ASCII文字です。)
UNCパスは、フォルダ名とPC名から構成されています。そこで、PC名のみネットワークドライブ化して、その下のフォルダを読む形式にしました。(例:「Z:shared_folder」)この場合でも、スクリプトエディタで開くことができ、編集もできました。
原因はホストPCを同定する部分であることが分かりました。
5. ネットワーク探索の権限の許可設定は影響ない
ホストPCでMATLABの一部アクセスがブロックされている可能性もあります。そこで、ホストPCのファイアウォールの規則にMATLABの色々なアプリケーションを追加してみました。しかし、それでも改善しません。ネットワーク探索やファイル共有の権限も全て許可に変更しましたが、それでも改善しませんでした。
考察事項
セキュリティ系の設定は問題ない、フォルダ名は問題ない、でもUNCパス内で問題が発生してる、しかしMATLABの外では影響がない。いったい何が原因なのか。
もう、ホストPCのPC名に非ASCII文字が入っているくらいしか、原因が思いつきません。たとえば、半角大文字アルファベットそっくりの全角文字が混入しているとか。
ホストPCのPC名の設定画面を開いて、1文字ずつ確認しようとしたそのとき、設定画面の一つの注意書きが目に入りました。
解決方法
原因はホストPCのPC名でした。
windowsのPC名の命名規則は、「文字、ハイフン、数字」を組み合わせて使用できます。
アンダーバー「_」は使用できないのです。
ホストPCのPC名のアンダーバーをハイフンに変更して、PCを再起動しました。
フォルダの共有パスを一通り設定しなおしたところ、通常通りスクリプトエディタで開くことができました。
windowsのPC名にアンダーバーが入っていても、windowsは許して通してくれます。普通のフォルダ共有もできて、大体のソフトウェアでファイルを開けます。MATLABのスクリプトエディタで開くことだけができませんでした。
面白いことに、フォルダ名にはアンダーバーが入っても大丈夫です。こうなると、MATLABだけの問題ではないようです。アンダーバーをどこかでハイフンに読み替える処理などしていたのでしょうか。
結論
windowsの初期設定の言葉は、一言一句読み飛ばさずに、しっかりと守って実行しましょう。落とし穴は思わぬところに開いています。まさかフォルダ共有したMATLABスクリプトファイルだけに効力があるとは...