Slide 1

Slide 1 text

社用PCのdotfiles管理 中山 慶祐 (やんまー) / GMO PEPABO inc. 2022.06.10 Pepabo Tech Friday 1

Slide 2

Slide 2 text

2 自己紹介 EC事業部 ECグループ CCXチーム 2021年 新卒入社 中山 慶祐 Nakayama Keisuke Software Design 6月号にdotfilesの記事を寄稿しまし た 寄稿したときの話は社内ポッドキャストでお話しています ● Twitter : @yammerjp

Slide 3

Slide 3 text

3 アジェンダ 1. dotfilesの管理 2. 会社のdotfiles 3. 複数環境をまたぐdotfiles管理 4. おわりに

Slide 4

Slide 4 text

1. dotfilesの管理 4

Slide 5

Slide 5 text

1. dotfilesの管理 5 UnixやLinuxなどにある、アプリケーションごとの設定ファイル群のこと ホームディレクトリに.(ドット)ではじまるものや、~/.config/ 以下などにあるものが多い 例: .bashrc、.zshrc、.vimrc、.gitconfig … dotfilesとは

Slide 6

Slide 6 text

1. dotfilesの管理 6 GitHubへ「dotfiles」というリポジトリを作る - dotfilesがGit管理できる - 履歴管理や共有に役立つ ローカルリポジトリとホームディレクトリ下を シンボリックリンクでつなぐ インストール用のシェルスクリプトを配置する と便利 dotfilesの管理手法の例

Slide 7

Slide 7 text

1. dotfilesの管理 7 インストール用のスクリプトといっても、ひとまず簡単なもので要件を満たせる dotfilesの管理

Slide 8

Slide 8 text

1. dotfilesの管理 8 gitとシンボリックリンク、インストール用のシェルスクリプトを用いた構成には 以下の利点がある - Easy instllation (インストールが容易) - Portability (移植性が高い) - Synchronization (複数コンピュータ間で同期できる ) - Change tracking (変更の追跡ができる) ref: https://missing.csail.mit.edu/2019/dotfiles/ dotfiles管理の利点

Slide 9

Slide 9 text

2. dotfiles管理の促進 9

Slide 10

Slide 10 text

2. dotfiles管理の促進 10 我々はGitに慣れている git add, git commitなどは一日じゅう実行しているのでたいした手間ではないのでは いちいち管理するのは面倒では?

Slide 11

Slide 11 text

2. dotfiles管理の促進 11 とはいえ工夫もしている - 設定ファイルを即座に変更できるように - 設定変更のcommit / pushを忘れないように いちいち管理するのは面倒では?

Slide 12

Slide 12 text

2. dotfiles管理の促進 12 設定ファイルをエディタで開くエイリアスを貼っておく 例えば Pro Gitを読んでいて git diff サブコマンドの --ignore-all-space オプションを 知ったとき、覚えられないので gitの設定にエイリアスを貼っておく - エイリアスを使ってもいいし - メモ代わりにもなるし - 設定を書いているときにオプションが記憶に残る 設定ファイルを即座に変更できるように: git-config-edit https://github.com/yammerjp/dotfiles/blob/322dec5d06b77839a9467301ae3a93d1bc7a193c/.config/zsh/git.zsh#L5 https://github.com/yammerjp/dotfiles/blob/211e71edd5ceb9a3602d3af217c094574ac2d8f8/.config/git/config#L22

Slide 13

Slide 13 text

2. dotfiles管理の促進 13 origin/master との差分があればメッセージを表示する 設定変更のcommit / pushを忘れないように https://github.com/yammerjp/dotfiles/blob/6afb43760368ee9de732a392338da641a6218390/.config/zsh/init.zsh#L32-:L51

Slide 14

Slide 14 text

3. 社用PCのdotfiles管理 14

Slide 15

Slide 15 text

15 みなさん 社用PCのdotfiles管理 どうしてますか?

Slide 16

Slide 16 text

16 yammerは 社用PCのdotfilesも 管理したい

Slide 17

Slide 17 text

3. 社用PCのdotfiles 17 gitとシンボリックリンク、インストール用のシェルスクリプトを用いた構成には 以下の利点がある - Easy instllation (インストールが容易) - Portability (移植性が高い) - Synchronization (複数コンピュータ間で同期できる ) - Change tracking (変更の追跡ができる) ref: https://missing.csail.mit.edu/2019/dotfiles/ (再掲) dotfiles管理の利点

Slide 18

Slide 18 text

3. 社用PCのdotfiles 18 おうちのPCと同じ設定が使える 設定を過去に戻せる (GHESと同期されており) よさげな設定はシュッと共有できる PCの乗り換えが容易 (一定サイクルでやってくるはず) 社用PCの dotfiles管理の利点

Slide 19

Slide 19 text

4. 公開範囲を制御 19

Slide 20

Slide 20 text

4. 公開範囲の制御 20 社用PCのdotfilesには公開できないものも含まれることがある GitHub.comの公開リポジトリにすべてを置くのは難しい - 公開できないものはファイルを分割する - 設定ファイル内で他ファイルを読み込む 公開範囲を変える

Slide 21

Slide 21 text

4. 公開範囲の制御 21 - .zshrc - .gitconfig - .npmrc - お気に入り設定を追記する Shell Scriptを用意している - 公開できない設定が含まれているので直接管理していない 公開範囲を変える https://github.com/yammerjp/dotfiles/blob/322dec5d06b77839a9467301ae3a93d1bc7a193c/.config/git/config#L5-L6 https://github.com/yammerjp/dotfiles/blob/322dec5d06b77839a9467301ae3a93d1bc7a193c/.zshrc#L7-L9

Slide 22

Slide 22 text

4. 公開範囲の制御 22 - GitHub.com上のPublicリポジトリ - https://github.com/yammerjp/dotfiles - なるべくここに寄せる - 下記のリポジトリで管理しているファイルが存在したら読み込む - GHES上のPublicリポジトリ - 会社の設定を記載 - ~/.zshrc.company や ~/.config/git/config-company 等 - GitHub.com上のPrivateリポジトリ - 公開したくないもの - 個人のPCの .ssh/config 等 複数の公開範囲 → 複数のdotfilesリポジトリ

Slide 23

Slide 23 text

4. 公開範囲の制御 23 - 環境ごとに特有の設定を切り出した dotfilesのモジュール (ディレクトリ) を用意 - 複数のモジュールを任意の順番で重ね合わせ、好みの設定を適用できるしくみ 過去の運用例: layeredなdotfiles https://memo.yammer.jp/posts/layered-dotfiles

Slide 24

Slide 24 text

4. 公開範囲の制御 24 - 環境ごとに特有の設定を切り出した dotfilesのモジュール (ディレクトリ) を用意 - 複数のモジュールを任意の順番で重ね合わせ、好みの設定を適用できるしくみ - やりたいことに対して複雑過ぎた - ファイルが分割されすぎていて一覧性が悪い - 設定を書き換えるときにどこに書くかに脳みそを使う - 実際に適用された設定を確認するには、 (頭で重ね合わせを想像するか ) 適用されたPCの設定 を見に行く必要がある - GitHubのWebページを眺めてUbuntuだったらどんな設定してたっけ?というのをぱっと見れない) - 外出先でふとスマホから見たくなるときありませんか? 過去の運用例: layeredなdotfiles

Slide 25

Slide 25 text

4. おわりに 25

Slide 26

Slide 26 text

26 1. セクションタイトル dotfilesを管理するのは楽しい

Slide 27

Slide 27 text

まだまだ話題は尽きない • 複数環境での適用 ← 今日話したこと • Shell起動の高速化 • 便利設定, 便利エイリアス • dotfiles管理ツールの話 (OSS、自作、etc…) • 秘匿情報の扱い • macOSのProperty list、IMEの設定、GUIアプリケーションの設定、etc… • ターミナル何使ってる? • エディタ何使ってる?プラグインは? • ターミナルマルチプレクサの話 4. おわりに 27 27

Slide 28

Slide 28 text

28 みなさん 社用PCのdotfiles管理 どうしてますか?

Slide 29

Slide 29 text

29 みなさん 開発環境 どうしてますか?