Upgrade to Pro — share decks privately, control downloads, hide ads and more …

社用PCのdotfiles管理 / dotfiles-in-company

社用PCのdotfiles管理 / dotfiles-in-company

みなさん社用PCのdotfiles管理どうしてますか?
私は社用PCのdotfilesも管理したいと考えていて、公開範囲を制御できるようにファイル分割をしたうえで、複数リポジトリにまたがってdotfilesを管理しています。
(社内のLTとして話したスライドを公開しています。

yammerjp

June 17, 2022
Tweet

More Decks by yammerjp

Other Decks in Programming

Transcript

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

    View full-size slide

  2. 2
    自己紹介
    EC事業部 ECグループ CCXチーム
    2021年 新卒入社
    中山 慶祐 Nakayama Keisuke
    Software Design 6月号にdotfilesの記事を寄稿しまし

    寄稿したときの話は社内ポッドキャストでお話しています
    ● Twitter : @yammerjp

    View full-size slide

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

    View full-size slide

  4. 1. dotfilesの管理
    4

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  9. 2. dotfiles管理の促進
    9

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  12. 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

    View full-size slide

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

    View full-size slide

  14. 3. 社用PCのdotfiles管理
    14

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  19. 4. 公開範囲を制御
    19

    View full-size slide

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

    View full-size slide

  21. 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

    View full-size slide

  22. 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リポジトリ

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  25. 4. おわりに
    25

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide