はじめに
アドベントカレンダー2025 開始します!
この記事は、BBSakura Networks アドベントカレンダー 2025の1日目の記事です。
こんにちは、BBSakura Networksの外山です。 2025年も残り1ヶ月となり、時の流れの早さに驚いています。 さて、12月に入ったということで、今年もBBSakuraではアドベントカレンダーを実施します!
5回目となる今年は、毎日異なるメンバーに執筆いただく予定で、どんな個性あふれる記事が集まるか、今からワクワクしています!
過去のアドベントカレンダーはこちらです。
- BBSakura Networks Advent Calendar 2024 - Adventar
- BBSakura Networks Advent Calendar 2023 - Adventar
- BBSakura Networks Advent Calendar 2022 - Adventar
- BBSakura Networks Advent Calendar 2019 - Adventar
ここから本題
シンボリックリンクについて知った
業務でアプリケーションをデプロイする際、リバースプロキシとしてNginxの設定を入れることがあります。
その際、sites-availableに作った設定ファイルを有効化するために以下のコマンドを実行します。
sudo ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled/
無心で何度かこのコマンドを叩いていましたが、ふとした折に、このコマンドがシンボリックリンクを作成するためのコマンドだということを知りました。
シンボリックリンクとは、リンクされた実体のある他のファイルやディレクトリを指し示すファイルのことで、Windowsにおけるショートカットのようなものです。
先ほどのコマンドでは、sites-available内に作成したconfigの実体へのシンボリックリンクをsites-enabled内に作成し、Nginxが設定を読み込めるようにしています。
この話を知人にしたところ「dotfiles管理で使うから知っていたよ」というフィードバックを受け、PCの設定やライブラリが混沌としてきており整理したかったので、私も試してみることにしました。
dotfilesとは
dotfilesとは、ドットから始まる設定ファイル(~/.zshrcや~/.gitconfig)を管理するためのGitレポジトリのことです。
シンボリックリンクのおかげで元のファイル配置を壊さずに設定ファイルを一元管理することができます。
色々な人が自分のdotfilesを公開しているので、何を管理できるのか、どんなカスタマイズができるのか、を見ることができます。
私が行った手順
レポジトリを作成
GitHub上で「dotfiles」というレポジトリを作成し、ホームディレクトリにcloneします。
zshの設定を管理する
.zshrcや.zprofileがあることを確認
ls -lha
zsh用のディレクトリを作成し、.zshrcや.zprofileをcopy
cd dotfiles mkdir zsh cp ~/.zshrc zsh/zshrc cp ~/.zprofile zsh/zprofile
シンボリックリンクを張り、元ファイルを上書きするためのshellを作成
~/dotfiles/link.sh
#!/usr/bin/env bash SCRIPT_DIR=$(dirname "$(realpath "$0")") HOME_DIR=$HOME # zsh ln -sfv $SCRIPT_DIR/zsh/zshrc $HOME_DIR/.zshrc ln -sfv $SCRIPT_DIR/zsh/zprofile $HOME_DIR/.zprofile
shellを実行
chmod +x link.sh link.sh
シンボリックリンクが正しく張られていることを確認
ls -lha ~ lrwxr-xr-x@ 1 youruser staff 41B 11 15 17:23 .zprofile -> /Users/youruser/dotfiles/zsh/zprofile -rw-------@ 1 youruser staff 76K 12 1 09:15 .zsh_history drwx------ 7 youruser staff 224B 11 28 11:47 .zsh_sessions lrwxr-xr-x@ 1 youruser staff 38B 11 15 17:23 .zshrc -> /Users/youruser/dotfiles/zsh/zshrc
gitやvscodeの設定ファイルも同様に管理
最終的に以下のようなlink.shになりました。 現時点では管理対象が多くないこと、リンクの張り方が一目でわかることから、for文などは使わずstaticに記述しています。
link.sh
#!/usr/bin/env bash SCRIPT_DIR=$(dirname "$(realpath "$0")") HOME_DIR=$HOME # zsh ln -sfv $SCRIPT_DIR/zsh/zshrc $HOME_DIR/.zshrc ln -sfv $SCRIPT_DIR/zsh/zprofile $HOME_DIR/.zprofile # git ln -sfv $SCRIPT_DIR/git/config $HOME_DIR/.gitconfig ln -sfv $SCRIPT_DIR/git/ignore $HOME_DIR/.config/git/ignore # vscode ln -sfv $SCRIPT_DIR/vscode/settings.json $HOME_DIR/Library/Application\ Support/Code/User/settings.json # cursor ln -sfv $SCRIPT_DIR/cursor/settings.json $HOME_DIR/Library/Application\ Support/Cursor/User/settings.json ln -sfv $SCRIPT_DIR/cursor/keybindings.json $HOME_DIR/Library/Application\ Support/Cursor/User/keybindings.json # sheldon ln -sfv $SCRIPT_DIR/sheldon/plugins.toml $HOME_DIR/.config/sheldon/plugins.toml
dotfilesのディレクトリ構成はこのような感じです。
dotfiles % tree .
.
├── cursor
│ ├── keybindings.json
│ └── settings.json
├── git
│ ├── config
│ └── ignore
├── iterm2
│ └── com.googlecode.iterm2.plist
├── link.sh
├── README.md
├── sheldon
│ └── plugins.toml
├── vscode
│ └── settings.json
└── zsh
├── zprofile
└── zshrc
ついでに不要なアプリを削除
普段はHomebrewやpipで、その時に必要になったアプリケーションやパッケージをじゃんじゃんinstallしてしまっています。
全貌を把握できておらずなんとなく不安を感じていたので、最後にinstallしているものの中から不要なものをuninstallし、完了です!
今すぐuninstallできるものが思っていたよりも少なく、安心しました。
削除できそうなものの確認用コマンド
brew leaves pip3 list
今後
アプリケーションのセットアップコマンドをsetup.shなどに適切に書いておけばPCを新調した際のセットアップがshellの実行だけで完了できるようになるなど、調べると色々と情報が出てきます。
まずは、時々設定が変わっているかとか、追加できそうな便利機能を入れてみるところから始めてみます!