macOSのdotfiles管理:なぜ「~/Library/Application Support」は避けるべきか

[PR]記事内のアフィリエイトリンクから収入を得る場合があります
  • URLをコピーしました!

macOSでCLIツールの設定ファイル(通称dotfiles)をどこに置くべきか悩んだ開発者の方は多いかもしれません。

Rebecca氏のブログ記事「macOS dotfiles should not go in ~/Library/Application Support」は、この問題に切り込み、多くのツールが~/Library/Application Supportを使っているものの、それはユーザー体験を損ない、技術的にも誤っているとの主張を展開しています。

記事によると、~/Library/Application SupportはGUIアプリ向けのフォルダで、CLIツールにはそぐわないものとのこと。多くの言語ライブラリ(Pythonのplatformdirs、JavaScriptのenv-pathsなど)がmacOSの「標準」としてこのパスを返すものの、それは設計上の誤解に基づいています。dotfilesはユーザーが手動で管理するものであり、「アプリが自動で管理する設定ファイル」とは性質が異なるものなのです。

目次

XDG Base Directory Specificationを使うべき理由

CLIツールの設定ファイルの保存場所として適しているのは、XDG Base Directory Specificationで定められた、~/.configです。Git、Emacs、Neovimなど多くのUnix系ツールで採用されいてる事実上の標準で、ユーザーが設定ファイルをバージョン管理しやすく、予測可能な構造を提供します。

設定ファイルの保存場所は、「驚き最小の原則(Principle of Least Astonishment)」に従い、ユーザーの期待に沿った設計が望ましいのです。

また、人気のdotfile管理ツールを調査し、以下のような結果を示しています。

ツール名 ~/Library/Application Support
chezmoi 対応なし
dotbot 対応なし
yadm 対応なし
rcm 対応なし
GNU Stow 対応なし

これらのツールは、macOSでも~/.configを前提としており、現場の運用がAppleのGUI向けガイドラインとは異なることを示しています。

Appleのガイドラインの誤解

macOSでこのような状態になっているのは、Appleの「Standard Directories」ガイドラインの誤解にあるとのこと。これはGUIアプリ向けで、CLIツールには適用されないものだと考えられます。

CLIツールはバンドルIDを持たず、/Applicationsにインストールされることもないため、~/Library/Application Supportを使う根拠にはならないのです。

結論:CLIツールはXDG仕様に従うべき

Rebecca氏の主張は明快です。macOSでもCLIツールは~/.configを使うべきであり、~/Library/Application SupportはGUIアプリ専用の領域だというものです。ユーザーの期待、ツールの一貫性、そして保守性を考えるなら、XDG Base Directory Specificationの採用が最も合理的な選択だと強調しています。

なお、Hacker Newsでもこの記事が議論されていて、多くの開発者が、CLIツールの設定ファイルの保存先をライブラリ(例:Rustのdirs crate)に委ねているため、その結果として~/Library/Application Supportが使われてしまうと訴えています。一部ユーザーは、ライブラリのメンテナーに改善を求めているものの、受け入れられていないという不満もあるようです。

多くのコメントは、XDG Base Directory Specification(特に~/.config)の採用を支持していますが、一方で、XDG仕様の曖昧さや内部矛盾(特に$XDG_CONFIG_HOMEと$XDG_DATA_HOMEの使い分け)に言及する声もあり、仕様の明確化を求める意見もあります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次