Macの環境をdotfilesでセットアップしてみた改
こんにちは、つくぼし(tsukuboshi0755)です!
皆さんは、dotfilesを作って管理していますでしょうか。
元々はホームディレクトリに存在するドット(.)から始まる設定ファイルを管理するリポジトリを指しますが、現在ではPCのセットアップ用のスクリプト群を格納する事が多いです。
私はMacを使用しているのですが、Mac用のdotfilesを作成し、以前以下のブログで公開しています。
こちらのdotfilesのコードを色々改良しアップグレードしてみたので、本記事で続編として公開したいと思います!
dotfiles の中身
$ tree
.
├── .github # GitHub Actions用の設定ファイル
│ └── workflows
│ └── main.yml
├── Makefile # セットアップ自動化用のMakefile
├── README.md
├── common # セットアップスクリプトと設定ファイル群
│ ├── .Brewfile
│ ├── .gitconfig
│ ├── .gitignore_global
│ ├── .zlogin
│ ├── .zshrc
│ ├── brew.sh
│ ├── defaults.sh
│ ├── link.sh
│ └── xcode.sh
├── editor # エディタ(VSCode等)の設定ファイル
│ ├── README.md
│ ├── extensions
│ ├── settings.json
│ └── setup.sh
├── launcher # ランチャー(Raycast等)の設定ファイル
│ ├── README.md
│ └── Raycast.rayconfig
├── llm # AIエージェント(claude code等)の設定ファイル
│ ├── AGENTS.md
│ ├── commands
│ │ ├── check-job.md
│ │ ├── create-pr.md
│ │ ├── create-repo.md
│ │ ├── review-pr.md
│ │ └── update-prompt.md
│ ├── mcp.json
│ ├── README.md
│ ├── settings.json
│ └── setup.sh
├── runtime # ランタイム管理(mise等)の設定ファイル
│ ├── README.md
│ ├── mise.toml
│ └── setup.sh
└── sleepwatcher # スリープ関連(sleepwatcher等)の設定ファイル
├── README.md
└── setup.sh
以下ではセットアップ用スクリプト、及びソフトウェア用設定ファイルに分けて解説します!
セットアップ用スクリプト
本項目では、Macにのdotfilesに格納されているファイルを用いてセットアップする際に使用するスクリプトについて説明します。
セットアップ自動化スクリプト(Makefile)
本dotfilesのルートディレクトリでmakeコマンドを叩く事で、Makefileに記載のあるスクリプトが全て実行され、セットアップを自動で実施します。
なおmake xcode、make link、make defaults、make brewコマンドにより、各々のスクリプト(xcode.sh, link.sh, brew.sh, defaults.sh)を個別で実行できます。
Xcode設定スクリプト(common/xcode.sh)
xcode.shは、Xcodeのセットアップを実施します。
XcodeはMacにおいて様々なコマンド及びアプリケーションに必須となるツールであるため、一番最初に実行する必要があります。
シンボリックリンク作成スクリプト(common/link.sh)
link.shは、ホームディレクトリに対してドットから始める設定ファイルのシンボリックリンクを作成します。
なお.gitや.github、.DS_storeといったシンボリックリンクの作成の必要がないファイルについては、あらかじめ除外します。
追加コマンド/アプリ導入スクリプト(common/brew.sh)
brew.shは、Macに追加で必要なコマンドツールやデスクトップアプリをインストールします。
追加で必要なコマンド及びアプリを.Brewfileに予め記載した上で、このスクリプトを実行すると一括インストールが可能です。
.Brewfileには、追加したいコマンド及びアプリを一覧で記載します。
Mac環境設定スクリプト(common/defaults.sh)
defaults.shは、Mac自体の環境設定を操作します。
なお一部のdefaultsコマンドは、実行後にPC再起動が必要となるため注意してください。
本ファイルで記載しているdefaultsコマンドについては、主に以下の記事を参考にしています。
テスト自動化スクリプト(.github/workflows/main.yml)
main.ymlには、GitHub Actionsを用いて、Githubリポジトリにpushした際、自動で処理されるテストの内容を記載します。
本dotfilesではMacOSにおけるmakeコマンドのテストのみ実施していますが、他のコマンドを追記してテストする事も可能です。
ソフトウェア設定ファイル
以下では、ソフトウェアの設定が記載されているファイルについて説明します。
シェル 設定ファイル(common/.zshrc & common/.zlogin)
.zshrc及び.zloginには、Macのターミナル上にてデフォルトで使用するシェルであるZshの設定が記載されています。
.zshrcは、主にシステム全体に影響する環境変数の設定(PATH、LANG等)や、補完定義の設定(complete/source)を記載します。
対して、.zloginは主にターミナルで用いるコマンド群を、引数を持たないaliasと、引数を持つfunctionに分けて記載しています。
なお今回の.zshrcと.zloginの使い分け方は好みの問題なので、どちらに記載しても構いません。
Git 設定ファイル(common/.gitconfig & common/.gitignore_global)
.gitconfigには、Gitの設定が記載されています。
GitHubの認証情報となるパスワードやトークンは記載してはならず、git-credential-osxkeychainヘルパーを使って安全な認証管理を実施します。
またGitHubで使用するメールアドレスは個人情報となるため直接記載せず、代わりに以下を参考にコミットメールアドレスを別で設定する事を推奨します。
.gitignore_globalには、Gitによる追跡から除外するファイルが記載されています。
GitHub公式から、.gitignoreのテンプレートがサービス毎に提供されているので、参考にしながら自分用にカスタマイズすると良いです。
エディター設定ファイル(editor/配下)
settings.jsonにはVSCode及びCursorの設定が記載されています。
対してextensionには、VSCode拡張機能の名称が記載されており、どのvscode拡張機能が導入されているかを一目で確認できます。
そしてsetup.shを実行する事で、settings.jsonのシンボリックリンクの作成、及びextensionsに記載されている拡張機能のインストールを合わせて実施できます。
ちなみに.bashrcに記載されている以下のコマンドで、現在VSCodeに導入されている拡張機能を上記のextensionsのように一覧で出力できます。
alias vle='code --list-extensions'
ランチャー設定ファイル(launcher/配下)
Raycast.rayconfigにはRaycastの設定が記載されており、RaycastのImport機能で取り込み可能です。
(バイナリファイルのためファイル内容は記載しません)
Importのやり方は以下を参照してください。
LLMエージェント設定ファイル(llm/配下)
AGENTS.mdには、Claude Codeにおける基本的な振る舞いに関するプロンプトが記載されています。
なおセットアップ時にCLAUDE.mdとしてファイル名を変更してリンクする事で、Claude Codeで自動読み込みができるようにします。
settings.jsonには、Claude Codeにおける権限設定が記載されており、Bash/Read等のツール実行時の許可/拒否を制御できます。
commands/配下には、Claude Codeで使用できるカスタムスラッシュコマンドを定義します。
そしてsetup.shを実行する事で、上記の設定ファイル群を~/.claude/配下にシンボリックリンクとして配置できます。
ランタイム管理設定ファイル(runtime/配下)
config.tomlにはmiseの設定が記載されており、miseコマンドで複数ランタイムを簡単に導入/切り替えが可能です。
miseの始め方は以下を参照してください。
そしてsetup.shを実行する事で、config.tomlのシンボリックリンクの作成、及びconfig.tomlに記載されているランタイムのインストールを合わせて実施できます。
dotfilesを始めよう
今回は自身のMac用のdotfilesを公開してみました。
スクリプトを作成する事でシェルを学べたり、GitHubリポジトリにバックアップとしてアップロードする事でGitの勉強にもなるので、エンジニア初心者がこの辺りの技術を学ぶにはちょうど良い教材だと思います。
万が一自身のPCに何かが起きた際の設定のバックアップになるので、ぜひ簡単なdotfilesを作ってみてください!
以上、つくぼし(tsukuboshi0755)でした!
Discussion