概要
これはMacで遊んでいるナード向けのMac整理ルールです。個人的な備忘録の側面が強いですが、皆様からのアドバイス等頂きたいと思いましたので共有します。
カテゴライズ・シミュレーション
最初に頭の中で、今パソコンで扱っているファイルと将来的に扱う可能性のあるファイルがどのようにカテゴライズされるか把握しておくことが肝要です。整理術に関するネット記事はたくさんありますが、開発者やナードでなければ開発環境構築の話は不必要ですし、営業や請負をしていないのであればクライアント用のフォルダを用意する必要もありません。事前に自分専用のおおよそのファイル分類体系を脳内に構築しておきましょう。
$HOME
を乱さない
Unix系のOSではなにかソフトウェアをインストールすると、そのソフトウェアが$HOME
ディレクトリ内にディレクトリを作成しそこをソフトウェアの幹(設定ファイル、コード、依存ライブラリ、キャッシュ etc.)として利用する場合が多いです。これを放置すると$HOME
ディレクトリがそれらディレクトリで溢れ返り、ユーザーの認知負荷が高くなってしまいます。$HOME
ディレクトリから積極的にフォルダを削減するように努めましょう。
XDG
仕様への準拠
例外もありますが、多くのソフトウェアがXDG仕様に準拠しています(または準拠可能な仕様になっています)。積極的にXDG仕様に準拠させることでMac内が整頓されます。
環境変数の利用
XDG仕様に準拠可能な仕様となっているソフトウェアでは、そのソフトウェアが利用するディレクトリを環境変数で設定できるようになっている場合があります。その場合はそれを利用しXDG仕様に準拠させましょう。
xdg-ninja
の利用
$HOME
にあるディレクトリで環境変数によって別の場所へ移動可能なものを教えてくれるソフトウェアです。brew info xdg-ninja
をチェック。
must-have dirs
以下にMac内で設定した方がいいディレクトリを列挙します。
メイン
実際にはソフトウェアをインストールすると勝手に作成されるものが含まれているので、能動的に作成というよりはむしろ、勝手に作成されてしまうディレクトリをその流儀に従う形で積極的に利用してやろうということです。
~/.config
設定ファイルを格納するディレクトリです。~/.local
ここは主にサードパーティソフトウェアが利用するディレクトリです。 go, cargo, bunなどの主要なソフトウェアのディレクトリはここに直接配置し、それ以外のサードバーティソフトウェアは~/.local/optに格納しています。~/.local/share
ソフトウェアが利用するデータが格納されます。~/.local/opt
XDG仕様にはこのディレクトリはありませんが、Macで/optや/usr/local/optが利用されていることに倣って、~/.local配下にoptを設置してそこにサードパーティソフトウェアの本体を格納しています。
~/Library/Application Support
ディレクトリの利用について
MacではサードパーティーアプリがXDG仕様に従い各種ファイルを分散配置(~/.config
, ~/.local/share
etc.)するケースと~/Library/Application Support
にバンドルディレクトリを作成して利用するケースとがあります。ここは統一できませんが、どちらも直接ユーザーがいじる頻度は低いのでそこまで問題ではありません。個人的なアプリ開発でどちらのディレクトリを利用するかという話ですが、私の場合はfoobar
アプリを作成する場合~/Library/Application Supoort
配下にlocal.foobar
のような名前でディレクトリを作り利用しています。
その他
全部紹介しきれてはいません。
~/Developer
昔のMacではデフォルトで作成されていたディレクトリだそうですが、最近のMacではありません。自分で mkdir して利用可能になります。~/Developer ディレクトリはFinderで歯車アイコンで表示されます。個人プロジェクト・個人開発環境用のディレクトリとして用いています。私の場合、ターミナルでの利便性を考え ~/dev にこのディレクトリのシンボリックリンクを貼っています。~/orgs
個人的なファイルと区別するため、組織関係のファイルはここに格納しています。学校や会社の資料など。~/var
~/Documents に格納している各種論文・PDF以外の個人的なデータのほとんどはこのディレクトリに格納しています。各種バックアップなどをここに入れています。
各種bin
の置き場
ターミナルで日常的に使う実行ファイル・対話的コマンドの置き場は、それらの属性に基づいて別々にしておくと混乱を避けられます。まず、/usr/local
はHomebrewに占領されているので、/usr/local/bin
はHomebrewでインストールしたコマンドオンリーにしておくのが無難です。次に、Homebrew以外のサードパーティの実行ファイルは~/.local/bin
に入れることにします。そして、個人開発した実行ファイルは~/dev/bin
に入れて.zshrc
や.bashrc
でパスを通して利用します。
README
ファイルの利用
README.md
でもREADME.txt
でもどちらでも構わないのですが、READMEファイルをディレクトリに配置しておくと都合がいいです。
- 用途が分かる
README
ファイルの存在により、そのディレクトリの用途が一目瞭然になります。 - 長いパス名を避けられる
README
ファイルに用途を書いておけば、多少パス名が短すぎて一見用途が分からなくても問題になりません。
シンボリックリンクの利用
同じファイルやフォルダを複数のプロジェクトから参照したい場合、シンボリックリンク(symlink)は便利です。
Finder で作成できる symlink とターミナル上でln -s
コマンドを用いて作成できる symlink とは仕様が異なっており、それぞれ長所・短所があります。
後者はターミナル上でls -l
コマンドを実行した際に実際のパスがリンク先として表示されて便利な反面、相対パスを設定していた場合、場所を不適切な場所に移動してしまうとその symlink は動かなくなる場合があります。
前者は場所を移動してもリンク先のファイルへの参照が無効になることはありませんが、ターミナル上ではls -l
を実行してもその symlink のリンク先が表示されることはありません。