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 Supportchezmoi対応なし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の使い分け)に言及する声もあり、仕様の明確化を求める意見もあります。