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