概要
- macOSのCLIツールが ~/Library/Application Support に設定ファイルを置く問題提起
- 本来は XDG Base Directory Specification (~/.config)を使うべきという主張
- 多くの人気ライブラリが誤ったデフォルトパスを採用
- dotfileマネージャ も~/Library/Application Supportを無視
- Apple自身のCLIツールも ~/.config を利用
macOS CLIツールの設定ファイル配置問題
- macOSでCLIツールが ~/Library/Application Support に設定ファイルを置く事例増加
- この挙動は ユーザー体験が悪い だけでなく、公式ドキュメントの意図とも異なる
- 本来、CLIツールは XDG Base Directory Specification に従い、 $XDG_CONFIG_HOME (デフォルトは~/.config)を使うべき
- ~/Library/Application Support に設定ファイルを置くのは、設計というより ライブラリのデフォルト挙動 に依存した結果
- Pythonの platformdirs、JavaScriptの env-paths、Rustの dirs crate、Goの adrg/xdg などが該当
- GUIアプリには適切だが、CLIツールの大半は ~/.config に置くべき
予想外の挙動とユーザー体験
- 設定ファイルが ~/Library/Application Support にあるのは予期しない挙動
- 多くのユーザーが XDG仕様 に慣れており、CLIツールにもそれを期待
- Git, Emacs, Neovim, Tmux など多くのツールがXDG仕様を採用
- 一貫性があることで システム探索性・予測性向上
- 例外的な挙動はユーザーの 混乱と不満 を招く
dotfileマネージャの実態
- 有名なdotfileマネージャ( chezmoi, dotbot, yadm, rcm, GNU Stow)も ~/Library/Application Support を無視
- 明示的に指定すれば可能だが、デフォルトでは対応しない
- dotfile管理の目的は 複数環境間での設定ファイルの一元管理
- ほとんどのユーザーは ~/.config に設定ファイルを期待
macOS標準ディレクトリガイドラインの誤解
- 一部開発者が「macOS標準ディレクトリガイドライン」に従うべきと主張
- しかし、ガイドラインは アプリ(/ApplicationsにインストールされるGUIアプリ) 向け
- CLIツール はアプリとは定義が異なる
- バンドルIDやアイコン、サンドボックス要件等が必要
- ガイドライン内でも /bin はCLIバイナリ用と明記
- ~/Library/Application Support はアプリ専用ディレクトリ
- サブディレクトリ名もバンドルID準拠
- CLIツールは バンドルIDを持たない ため該当しない
- Apple自身のCLIツール( bash, zsh, git, vim)も ~/.config を利用
~/Library/Application Supportを使うべきケース
- 以下の2条件を満たす場合のみ ~/Library/Application Support を利用
- /Applicationsまたは~/ApplicationsにインストールされたGUIアプリ
- 設定ファイルを自動管理し、ユーザーが手動で編集しない場合
まとめ(TL;DR)
- CLIツールが ~/Library/Application Support で設定ファイルを探すのは ユーザーの期待外れ
- dotfileマネージャもこのディレクトリを デフォルトで無視
- よくある正当化理由も CLIツールには当てはまらない
- Apple純正CLIツールも ~/.config を利用
- XDG Base Directory Specification の採用を強く推奨