PRS Pro のプロジェクトフォルダ作成場所
目次
問題提起
PRS Pro のプロジェクトフォルダを作成する際に、ドキュメントフォルダやデスクトップフォルダではなく、Cドライブ直下に作業フォルダを作って、その中にプロジェクトを保存するように勧められることがある。これは Windows API で扱えるパス長 (path length) に上限があるので、PRS Pro が扱うファイルのパス長がその上限を超えないようにするために勧められていると考えられる。
しかしCドライブ直下はWindows自体のシステムフォルダが並んでいるところなので、システム管理者以外がアクセスすることは避けるほうが無難である。どうしてもCドライブ直下にアクセスしたいなら「絶対に触ってはいけないWindowsパソコンの6つのファイルとフォルダ」を意識し、誤操作でそれらを書き換えたり消したりしないように気をつける必要がある。そういうことが起こらないように、Windows10以降のOSでは、一般ユーザーに対してCドライブ直下へのアクセス制限がかかっている場合もある。
精神の安らぎのためにCドライブ直下へのアクセスを止めて、ユーザーのドキュメントフォルダやデスクトップフォルダ内に PRS Pro のプロジェクトフォルダを作った場合、フォルダ名をどの長さにすると動作に支障をきたすだろうか。
Windows で扱える絶対パス (absolute path) の長さの上限はAPIの種類によって違うが、短いものは259文字と非表示の終端1文字の合計260文字が上限である。 PRS Pro で扱うファイルの絶対パスのうち一番長くなるものが、259文字以下の長さであれば、正常に動くはずである。この推測が正しいかどうかを実験してみよう。
実験の概要
Windows 11 上のユーザーアカウントのドキュメントフォルダ内に、できるだけ長い名前の作業用フォルダを作り、その中に PRS Pro のプロジェクトフォルダを作成して、正常に動くかどうかを調べる。さらに1文字長い名前の作業用フォルダを作って同様の操作をすると PRS Pro が正常に動かなくなることを確認する。
デスクトップフォルダの絶対パスは C:\Users\[ユーザーアカウント名]\Desktop
であり、ドキュメントフォルダの絶対パス C:\Users\[ユーザーアカウント名]\Documents
より2文字短いため、以下の実験で作る作業フォルダより2文字長くても正常に動作するはずである。気になる方はそれも実験してください。
Windows XP 以前のOSでは、ユーザー用のフォルダまでの絶対パスがもっと複雑だったので、そのOS上でユーザーのドキュメントフォルダ内に作業フォルダを作る場合は、フォルダ名をさらに短くする必要があるだろう。気になる方はそれも実験してください。
実験の準備
この実験では、PRS Pro が扱うファイルの絶対パス長の上限259文字を基準として作業用フォルダの名前を付けるため、まず PRS Pro で扱うプロジェクトフォルダ内のファイル名の文字数を知っておく必要がある。プロジェクトフォルダをエクスプローラで開いてみればわかるが、以下のようにファイルが配置されている。
[プロジェクトフォルダ]
│ a000001.wav
│ ...
│ a.......wav
│ ImdPhrInfo.imph
│ ImdTxtTabl.imtt
│ METADATA.ini
│ ncc.html
│ Ncc.imdn
│ ptk000001.smil
│ ...
│ ptk.......smil
│
└─BackUp
bp00_ImdPhrInfo.imph
bp00_ImdTxtTabl.imtt
bp00_Ncc.imdn
bp01_ImdPhrInfo.imph
bp01_ImdTxtTabl.imtt
bp01_Ncc.imdn
...
ビルドブックをするとプロジェクトフォルダの外側に discinfo.html
と PTRInfo.html
という2つのファイルも生成されるが、これらの絶対パスはプロジェクトフォルダ内のファイルよりも短くなるため、考慮対象から除外する。
PRS Pro でプロジェクトを開いて作業して閉じることを繰り返すと、プロジェクトフォルダ内の入れ子として BackUp フォルダが作成され、その中にバックアップファイルが追加されていく。それらのファイルのうち bpxx_ImdPhrInfo.imph
と bpxx_ImdTxtTabl.imtt
という形式のファイルは、 PRS Pro が扱う最長の絶対パスとなるようだ。
これらのファイルの絶対パス長が 259文字を超えないようにすれば、 PRS Pro は正常に動作するはずである。
ユーザーのドキュメントフォルダ内に作業フォルダを作り、その中に PRS Pro のプロジェクトフォルダを作成した場合、 PRS Pro が扱うファイルの最長の絶対パスは以下のような形式になる。
C:\Users\[ユーザーアカウント名]\Documents\[作業フォルダ名]\[プロジェクトフォルダ名]\BackUp\bpxx_ImdPhrInfo.imph
[ユーザーアカウント名]
は利用者によって異なるが、この実験ではuser
という4文字のアカウント名を使う。
また、 PRS Pro では[プロジェクトフォルダ名]
自体の長さの上限が63文字に規定されている。この実験では test
という4文字のプロジェクトフォルダ名を使うことにする。
この条件下で、絶対パスの長さ調整に使える部分は[作業フォルダ名]
だけである。作業フォルダ名は何でも良いが、ここでは円周率の十進数表示の最初の202桁を使う。そうすると、PRS Pro が扱うファイルの最長の絶対パスは以下の259文字になる。
C:\Users\user\Documents\3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964\test\BackUp\bpxx_ImdPhrInfo.imph
実験1:PRS Pro が扱うファイルの絶対パス長が259文字以下の場合
エクスプローラでドキュメントフォルダ内に、
3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964
という202文字の名前の作業フォルダを作っておく。
PRS Pro を起動し、新規プロジェクトを作成する。その際に上記の202文字のフォルダ内に test という名前のプロジェクトフォルダを作成する。 録音やビルドブックをし、 PRS Pro を終了してから再び起動して、さらに録音や編集やビルドブックをしてみる。
エクスプローラでこのプロジェクトで作成した test フォルダを開き、以下のことを確認する。
- 上記「実験の準備」の節で確認した種類のファイルが揃っている。
- BackUp フォルダができている。
- BackUp フォルダ内に以下の3種類の形式のファイルが揃っている。(
xx
部分は00
,01
などの数字)
bpxx_ImdPhrInfo.imph
bpxx_ImdTxtTabl.imtt
bpxx_Ncc.imdn
この実験の結果、 PRS Pro が扱うファイルの絶対パス長が259文字以下の場合には、問題が見つからなかった。
実験2:PRS Pro が扱うファイルの絶対パス長が259文字を超える場合
エクスプローラでドキュメントフォルダ内に、
31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644
という203文字の名前の作業フォルダを作っておき、そのフォルダ内で実験1と同様の作業を行う。
エクスプローラで BackUp フォルダ内を確認すると、そこに作成されるはずの3種類のファイルのうち、 bpxx_ImdPhrInfo.imph
と bpxx_ImdTxtTabl.imtt
という形式のファイルが作成されないことが分かった。
この実験の結果、 PRS Pro が扱うファイルの絶対パス長が259文字を超える場合には、動作に異常があることが分かった。
結論
ドキュメントフォルダやデスクトップフォルダ内に作業フォルダを作成して PRS Pro のプロジェクトを保存する場合、ユーザーアカウント名や作業フォルダ名が極度に長いと、取り扱うファイルの絶対パス長が259文字を超えてしまい、動作に支障をきたす。ユーザーアカウント名は変えにくいが、作業フォルダ名は自分で付けるものだから、それを100文字以下程度に抑えておくと問題が起こりにくいだろう。
作業フォルダ名をもっと長くしたい場合は、内蔵ハードディスクにパーティションを切ってDドライブを作り、その直下に作業フォルダを作ると問題が起こりにくいだろう。
内蔵ハードディスクにパーティションを切れないが、どうしても200文字を超える作業フォルダ名を付けたいなどの特殊事情があれば、Cドライブ直下に作業フォルダを作らざるを得ない。その場合は、誤操作でシステムを壊さないように慎重に作業すると良いだろう。
Windows XP 以前のOSを使う場合は、やはりユーザーアカウント名の長さにもよるが、ドキュメントフォルダの絶対パスが現代のWindowsよりもっと長くなる。その中に作業フォルダを作る場合は、フォルダ名を半角英数で10文字以下程度に抑えると問題が起こりにくいだろう。