標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

Windows のアプリケーションディレクトリ

nyagos では、ヒストリなどを

  • Windows では %APPDATA%\nyaos_org
  • Linux では $HOME/.nyaos_org

に保存している。このパスは環境変数を元に生成しているのだが、ここのところで 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 用?)

というような使い分けらしい。なるほど