nyagos では、ヒストリなどを
に保存している。このパスは環境変数を元に生成しているのだが、ここのところで OS ごとに処理を分けるのは可読性を下げるので、できれば標準ライブラリが吸収してくれたらなぁと思った。
標準ライブラリのユーザのディレクトリを教えてくれる関数の結果を確認してみた。
u,_:= "os/user".Current() ; u.HomeDir → %USERPROFILE% or $HOME相当※ dir,_ := "os".UserCacheDir() ; dir → %USERPROFILE%\AppData\Local or $HOME/.cache相当※ (※ 実際は環境変数は展開済み)
結果はちょっと欲しいものとは違ったのだけれども、はて AppData の下の Local とは Roaming 等とはどう違うのだろうか?と今更だが、疑問が湧いてきた。
ぐぐってみたところ、解説ページが見つかった
どうやら
- Roaming(
=%APPDATA%
) … ユーザデータのうち、プロファイルを移動させた時にいっしょに移動させるべきデータ。- あまり大きいものを入れるべきでない
- その PC 固有のものは入れるべきではない
- Local(
os.UserCacheDir()
) … プロセスの信頼レベルが Low より上のもののデータを格納 - LocalLow … プロセスの信頼レベルが Low 以下のもののデータを格納(主に Internet Explorer 用?)
というような使い分けらしい。なるほど