---
title: 神楽坂第2ターミナル 20251215
tags: 
author: [カワリミ人形](https://www.docswell.com/user/kawarimidoll)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/LELWYZDMJR.jpg?width=480
description: https://kagurazaka-terminal.connpass.com/event/377098/
published: December 19, 25
canonical: https://www.docswell.com/s/kawarimidoll/574XVJ-kagurazaka-2025-12-15
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/LELWYZDMJR.jpg)

わたしのdotfiles活用
とりあえず「dotfiles管理してない」状態を脱却しよう
kawarimidoll


# Page. 2

![Page Image](https://bcdn.docswell.com/page/4JM9NVP6EW.jpg)

dotfilesとは
•
•
ホームディレクトリ（など）にある . で始まる設定ファイル群のこと
◦ ls -la ~ すると見られる
◦ .zshrc .vimrc .gitconfig など
由来はUNIXの歴史的経緯
◦ ls の設計中、カレントディレクトリの . を読み飛ばしたくなった
◦ 「最初の1字がドットのファイルは隠しファイルにする」というコードにした
◦ 設定などの隠したいファイルをドット始まりにする文化が生まれた
◦ Rob Pikeは後悔してるっぽい
参考：1つの横着から隠しファイルが生まれた瞬間 (https://mattn.kaoriya.net/etc/20190419120056.htm)
▓▓▓ さらに今回話すのは
•
これらをGitリポジトリで管理する文化（？）
2 / 17


# Page. 3

![Page Image](https://bcdn.docswell.com/page/PJRGD21NE9.jpg)

なぜdotfilesを管理するのか
要するに「なぜ設定ファイルをGitで管理するのか？」
▓▓▓ 短期的なメリット
•
•
•
環境のバックアップ（PCが壊れても安心）
新マシンでの設定復元の簡易化
複数マシンでの設定共有
▓▓▓ 長期的なメリット
•
•
•
履歴管理（git logでいつでも前の設定を見られる）
設定を言語化する習慣がつく
他人のdotfilesを読んで学べる（GitHub上に多数公開）
3 / 17


# Page. 4

![Page Image](https://bcdn.docswell.com/page/PEXX1DY8EX.jpg)

どうdotfilesを管理するのか 甲
▓▓▓ 基本的な構造
設定ファイルはホーム直下にあることが多い（他の場合は後述）
~/
├── .zshrc
├── .vimrc
└── ...
→ とはいえホーム直下のファイルは直接Git管理しづらい
（ホームをそのままGitリポジトリにしたくない）
4 / 17


# Page. 5

![Page Image](https://bcdn.docswell.com/page/3EKW2X3LED.jpg)

どうdotfilesを管理するのか 乙
▓▓▓ 解決策
ホーム直下の設定ファイルはシンボリックリンクにして、実体は別ディレクトリでGit管理する
~/dotfiles/
├── .zshrc
├── .vimrc
└── ...
# Git管理するディレクトリ
# 実体ファイル
~/
# ホームディレクトリ
├── .zshrc -&gt; ~/dotfiles/.zshrc # シンボリックリンク
├── .vimrc -&gt; ~/dotfiles/.vimrc
└── ...
dotfilesの実体を置く場所はどこでもよいけど、ホーム直下が楽
これの配置も自動化している（後述）
5 / 17


# Page. 6

![Page Image](https://bcdn.docswell.com/page/L73145G6J5.jpg)

ホーム直下じゃない設定ファイル
ホーム直下にいろいろ置くと散らかるので、最近はXDG Base Directory仕様に従うツールが多い
▓▓▓ XDG Base Directory
設定ファイルの標準的な配置場所の仕様
環境変数で決めることができるが、一般的には以下
~/.config/ # XDG_CONFIG_HOME（設定ファイル）
~/.cache/
# XDG_CACHE_HOME（キャッシュ）
~/.local/share/ # XDG_DATA_HOME（データ）
~/.local/state/ # XDG_STATE_HOME（状態）
たとえばNeovimの設定ファイルは ~/.config/nvim/init.lua に置く
6 / 17


# Page. 7

![Page Image](https://bcdn.docswell.com/page/87DXQD1MEG.jpg)

わたしのdotfiles構成
ここで見られる：https://github.com/kawarimidoll/dotfiles
~/dotfiles
├── .config/
│ ├── nvim/
│ ├── ghostty/
│ ├── zsh/
│ └── ...
│
├── bin/
├── etc/
│ ├── mac/
│ └── linux/
│
├── .zshenv
├── flake.nix
└── install.sh
•
•
•
•
# XDG準拠の設定群
# Neovim
# ターミナル
# シェル
# 自作スクリプト
# OS別セットアップ
# シェル設定
# Nixパッケージ定義
# セットアップスクリプト
現在はほぼ設定ファイルは .config/ に集約していて、トップレベルにはあまりない
bin/ に自作実行ファイルを配置、 etc/ は雑多なスクリプト置き場
◦ この辺はunixの伝統的なディレクトリ構成を参考にすると迷わない
install.sh でセットアップを自動化（後述）
flake.nix はNixを使ったCLIツール管理
◦ 今回は話さない
◦ 記事に書いている (https://zenn.dev/kawarimidoll/articles/0a4ec8bab8a8ba)
7 / 17


# Page. 8

![Page Image](https://bcdn.docswell.com/page/VJPPLXQQJ8.jpg)

install.sh
別環境でも簡単にセットアップできるようにするためのスクリプト
READMEに書いてるが、以下のコマンド実行で環境を整えられるようにしている
bash -c &quot;$(curl -L bit.ly/kawarimidots)&quot;
この短縮URLは最新の install.sh の実ファイルにリダイレクトされる
（raw.githubusercontent.comが長いため）
3つのフェーズに分離
1. download : dotfilesを取得
2. link : シンボリックリンクを作成
3. setup : アプリケーションのインストール
justfile とかを使う方法もあるが、ブートストラップならシェルスクリプトが楽
8 / 17


# Page. 9

![Page Image](https://bcdn.docswell.com/page/2EV2QL5PEQ.jpg)

実行するとこういうのが出る
❯ sh install.sh
_
_
__ _ _
__| | ___ | |_ / _(_) | ___ ___
/ _` |/ _ \| __| |_| | |/ _ \/ __|
| (_| | (_) | |_| _| | | __/\__ \
\__,_|\___/ \__|_| |_|_|\___||___/
author: @kawarimidoll
repository: https://github.com/kawarimidoll/dotfiles
This script includes:
(1) download dotfiles
(2) link dotfiles
(3) setup applications
Select:
[a] run all above
[d] only download dotfiles
[l] only link dotfiles
[s] only setup applications
You can use multiple choose like &#039;dl&#039;
9 / 17


# Page. 10

![Page Image](https://bcdn.docswell.com/page/57GRWX6QEL.jpg)

install.sh: download機能
これはほんとにPC最初のセットアップでしか使わない
dotfilesのリポジトリ自体を ~/dotfiles/ に持ってくる処理
（ bash -c &quot;$(curl -L bit.ly/kawarimidots)&quot; で実行すると install.sh しかないため）
1. dotfilesが既にあるなら終了
2. gitがあればgit cloneで取得
3. gitがなければcurlかwgetでダウンロードしてtarballを展開
◦
まあ普通はgitがあるはず
4. どれもなければエラー終了
10 / 17


# Page. 11

![Page Image](https://bcdn.docswell.com/page/4EQV384WJP.jpg)

install.sh: link機能
これはよく使う 便利
1 link_dotfiles() {
2 # git管理化のドット始まりのパスを取得してループ
3 for f in $(git ls-files | grep -E &#039;^\.&#039; | grep -vE &#039;\.git&#039;)
4 do
5
mkdir -p &quot;$HOME/$(dirname &quot;$f&quot;)&quot;
6
# die_if_errorは自作エラーチェッカー
7
# ディレクトリを作成できなかったら終了
8
die_if_error &quot;create directory $f&quot;
9
if [ -L &quot;$HOME/$f&quot; ]; then
10
# 既存リンクのリンク先を取得
11
existing_target=$(readlink &quot;$HOME/$f&quot;)
12
if [ &quot;$existing_target&quot; = &quot;$DOT_DIR/$f&quot; ]; then
13
# 既に正しいリンクがあるのでスキップ
14
echo &quot;skip (already exists): $f&quot;
15
continue
16
fi
17
fi
18
# シンボリックリンクを作成
19
ln -sniv &quot;$DOT_DIR/$f&quot; &quot;$HOME/$f&quot;
20 done
21 }
冪等性があるので何度実行しても大丈夫
11 / 17


# Page. 12

![Page Image](https://bcdn.docswell.com/page/KJ4M12Q1E1.jpg)

install.sh: setup機能
こっちも最近は重要性が下がっている
（正直mac環境しか使ってないけど）OSごとのセットアップを分離している
# OS自動判定
OS=&#039;unknown&#039;
if [ &quot;$(uname)&quot; = &quot;Darwin&quot; ]; then
OS=&#039;mac&#039;
elif [ &quot;$(uname)&quot; = &quot;Linux&quot; ]; then
OS=&#039;linux&#039;
fi
# OS別スクリプトを実行
os_install_sh=&quot;${DOT_DIR}/etc/${OS}/install.sh&quot;
[ -f &quot;$os_install_sh&quot; ] &amp;&amp; sh -c &quot;$os_install_sh&quot;
macなら /etc/mac/install.sh が実行される
ここにはツールインストール処理などを書く（次項）
12 / 17


# Page. 13

![Page Image](https://bcdn.docswell.com/page/LE18GMP57G.jpg)

設定だけじゃなくツールも管理
設定が復旧できてもそれを使うツールがなければ意味がない
たとえば macOSならHomebrewでツールをインストールする
brew bundle dump
↑ で Brewfile にインストール済みツールを書き出し、 brew bundle install で再インストールできる
こういうのをOS別セットアップスクリプトに書いておく
なぜ最近重要性が下がっているかというとCLIツールは（ほぼ）Nix管理に移行したから
再掲：
•
homebrewからnixに移行した記事 (https://zenn.dev/kawarimidoll/articles/0a4ec8bab8a8ba)
13 / 17


# Page. 14

![Page Image](https://bcdn.docswell.com/page/GEWZK32WE2.jpg)

あとは自作便利スクリプトはbin/に置いとくと便利
たとえば git コマンドは、 git- で始まる実行ファイルが PATH にあればサブコマンドとして認識する
# ~/dotfiles/bin/git-hello
#!/bin/bash
echo &quot;Hello, git!&quot;
↓ 上のようなファイルがあると
❯ git hello
# Hello, git!
14 / 17


# Page. 15

![Page Image](https://bcdn.docswell.com/page/47Z1ZVD2J3.jpg)

dotfilesを始めよう
▓▓▓ とりあえずdotfiles作ろう
# dotfilesディレクトリを作成して初期化
mkdir ~/dotfiles &amp;&amp; cd ~/dotfiles
git init
# 既存の設定ファイルを移動してシンボリックリンクを作成
mkdir .config
mv ~/.zshrc .zshrc
ln -s ~/dotfiles/.zshrc ~/.zshrc
# コミットを作る
git add .zshrc &amp;&amp; git commit -m &quot;add .zshrc&quot;
▓▓▓ ポイント
•
•
•
•
既にPC触ってるんだから既に設定ファイルはあるはず
◦ まずはそれをホーム以下の構造を保ったまま ~/dotfiles/ に移動してシンボリックリンクを作る
1ファイルから始めて少しずつ育てる
◦ とかいわずにあるやつを可能な限り全部入れよう
秘匿情報を入れないように注意
今後追加するツールの設定は最初からdotfiles管理下に置く
15 / 17


# Page. 16

![Page Image](https://bcdn.docswell.com/page/YJ6LZ536EV.jpg)

Thanks!
16 / 17


# Page. 17

![Page Image](https://bcdn.docswell.com/page/GJ51WYL574.jpg)

17 / 17


