💻

Macの環境をdotfilesでセットアップしてみた改

に公開

こんにちは、つくぼし(tsukuboshi0755)です!

皆さんは、dotfilesを作って管理していますでしょうか。

元々はホームディレクトリに存在するドット(.)から始まる設定ファイルを管理するリポジトリを指しますが、現在ではPCのセットアップ用のスクリプト群を格納する事が多いです。

私はMacを使用しているのですが、Mac用のdotfilesを作成し、以前以下のブログで公開しています。

https://dev.classmethod.jp/articles/joined-mac-dotfiles-customize/

こちらのdotfilesのコードを色々改良しアップグレードしてみたので、本記事で続編として公開したいと思います!

https://github.com/tsukuboshi/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 xcodemake linkmake defaultsmake brewコマンドにより、各々のスクリプト(xcode.sh, link.sh, brew.sh, defaults.sh)を個別で実行できます。

https://github.com/tsukuboshi/dotfiles/blob/main/Makefile

Xcode設定スクリプト(common/xcode.sh)

xcode.shは、Xcodeのセットアップを実施します。

XcodeはMacにおいて様々なコマンド及びアプリケーションに必須となるツールであるため、一番最初に実行する必要があります。

https://github.com/tsukuboshi/dotfiles/blob/main/common/xcode.sh

シンボリックリンク作成スクリプト(common/link.sh)

link.shは、ホームディレクトリに対してドットから始める設定ファイルのシンボリックリンクを作成します。

なお.git.github.DS_storeといったシンボリックリンクの作成の必要がないファイルについては、あらかじめ除外します。

https://github.com/tsukuboshi/dotfiles/blob/main/common/link.sh

追加コマンド/アプリ導入スクリプト(common/brew.sh)

brew.shは、Macに追加で必要なコマンドツールやデスクトップアプリをインストールします。

追加で必要なコマンド及びアプリを.Brewfileに予め記載した上で、このスクリプトを実行すると一括インストールが可能です。

https://github.com/tsukuboshi/dotfiles/blob/main/common/brew.sh

.Brewfileには、追加したいコマンド及びアプリを一覧で記載します。

https://github.com/tsukuboshi/dotfiles/blob/main/common/.Brewfile

Mac環境設定スクリプト(common/defaults.sh)

defaults.shは、Mac自体の環境設定を操作します。

https://github.com/tsukuboshi/dotfiles/blob/main/common/defaults.sh

なお一部のdefaultsコマンドは、実行後にPC再起動が必要となるため注意してください。

本ファイルで記載しているdefaultsコマンドについては、主に以下の記事を参考にしています。

https://qiita.com/djmonta/items/17531dde1e82d9786816

https://qiita.com/keitean/items/bf82da152fd587fa29ef

https://qiita.com/dodonki1223/items/2bb296111e561c93035e

テスト自動化スクリプト(.github/workflows/main.yml)

main.ymlには、GitHub Actionsを用いて、Githubリポジトリにpushした際、自動で処理されるテストの内容を記載します。

本dotfilesではMacOSにおけるmakeコマンドのテストのみ実施していますが、他のコマンドを追記してテストする事も可能です。

https://github.com/tsukuboshi/dotfiles/blob/main/.github/workflows/main.yml

ソフトウェア設定ファイル

以下では、ソフトウェアの設定が記載されているファイルについて説明します。

シェル 設定ファイル(common/.zshrc & common/.zlogin)

.zshrc及び.zloginには、Macのターミナル上にてデフォルトで使用するシェルであるZshの設定が記載されています。

.zshrcは、主にシステム全体に影響する環境変数の設定(PATHLANG等)や、補完定義の設定(complete/source)を記載します。

https://github.com/tsukuboshi/dotfiles/blob/main/common/.zshrc

対して、.zloginは主にターミナルで用いるコマンド群を、引数を持たないaliasと、引数を持つfunctionに分けて記載しています。

https://github.com/tsukuboshi/dotfiles/blob/main/common/.zlogin#L1-L200

なお今回の.zshrc.zloginの使い分け方は好みの問題なので、どちらに記載しても構いません。

Git 設定ファイル(common/.gitconfig & common/.gitignore_global)

.gitconfigには、Gitの設定が記載されています。

https://github.com/tsukuboshi/dotfiles/blob/main/common/.gitconfig

GitHubの認証情報となるパスワードやトークンは記載してはならず、git-credential-osxkeychainヘルパーを使って安全な認証管理を実施します。

https://docs.github.com/ja/get-started/git-basics/updating-credentials-from-the-macos-keychain

またGitHubで使用するメールアドレスは個人情報となるため直接記載せず、代わりに以下を参考にコミットメールアドレスを別で設定する事を推奨します。

https://docs.github.com/ja/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address

.gitignore_globalには、Gitによる追跡から除外するファイルが記載されています。

GitHub公式から、.gitignoreのテンプレートがサービス毎に提供されているので、参考にしながら自分用にカスタマイズすると良いです。

https://github.com/github/gitignore

https://github.com/tsukuboshi/dotfiles/blob/main/common/.gitignore_global

エディター設定ファイル(editor/配下)

settings.jsonにはVSCode及びCursorの設定が記載されています。

https://github.com/tsukuboshi/dotfiles/blob/main/editor/settings.json

対してextensionには、VSCode拡張機能の名称が記載されており、どのvscode拡張機能が導入されているかを一目で確認できます。

https://github.com/tsukuboshi/dotfiles/blob/main/editor/extensions

そしてsetup.shを実行する事で、settings.jsonのシンボリックリンクの作成、及びextensionsに記載されている拡張機能のインストールを合わせて実施できます。

https://github.com/tsukuboshi/dotfiles/blob/main/editor/setup.sh

ちなみに.bashrcに記載されている以下のコマンドで、現在VSCodeに導入されている拡張機能を上記のextensionsのように一覧で出力できます。

.bashrc
alias vle='code --list-extensions'

ランチャー設定ファイル(launcher/配下)

Raycast.rayconfigにはRaycastの設定が記載されており、RaycastのImport機能で取り込み可能です。

(バイナリファイルのためファイル内容は記載しません)

Importのやり方は以下を参照してください。

https://www.raycast.com/changelog/1-22-0

LLMエージェント設定ファイル(llm/配下)

AGENTS.mdには、Claude Codeにおける基本的な振る舞いに関するプロンプトが記載されています。

なおセットアップ時にCLAUDE.mdとしてファイル名を変更してリンクする事で、Claude Codeで自動読み込みができるようにします。

https://github.com/tsukuboshi/dotfiles/blob/main/llm/AGENTS.md

settings.jsonには、Claude Codeにおける権限設定が記載されており、Bash/Read等のツール実行時の許可/拒否を制御できます。

https://github.com/tsukuboshi/dotfiles/blob/main/llm/settings.json

commands/配下には、Claude Codeで使用できるカスタムスラッシュコマンドを定義します。

そしてsetup.shを実行する事で、上記の設定ファイル群を~/.claude/配下にシンボリックリンクとして配置できます。

https://github.com/tsukuboshi/dotfiles/blob/main/llm/setup.sh

ランタイム管理設定ファイル(runtime/配下)

config.tomlにはmiseの設定が記載されており、miseコマンドで複数ランタイムを簡単に導入/切り替えが可能です。

https://github.com/tsukuboshi/dotfiles/blob/main/runtime/config.toml

miseの始め方は以下を参照してください。

https://mise.jdx.dev/getting-started.html#homebrew

そしてsetup.shを実行する事で、config.tomlのシンボリックリンクの作成、及びconfig.tomlに記載されているランタイムのインストールを合わせて実施できます。

https://github.com/tsukuboshi/dotfiles/blob/main/runtime/setup.sh

dotfilesを始めよう

今回は自身のMac用のdotfilesを公開してみました。

スクリプトを作成する事でシェルを学べたり、GitHubリポジトリにバックアップとしてアップロードする事でGitの勉強にもなるので、エンジニア初心者がこの辺りの技術を学ぶにはちょうど良い教材だと思います。

万が一自身のPCに何かが起きた際の設定のバックアップになるので、ぜひ簡単なdotfilesを作ってみてください!

以上、つくぼし(tsukuboshi0755)でした!

Discussion