ぶていのログでぶログ

思い出したが吉日

作業環境のやりなおし

この記事は🎅GMOペパボ エンジニア Advent Calendar 2025の7日目の記事です


今年の4月に育児休暇から復帰し、新しい作業PCが割り当てられた。 いつもどおりセットアップしようと思ったが、今までのdotfilesを捨てて心機一転した!…部分もあるのでブログで紹介する*1

前提

作業PCとして私が利用しているOSはWindows11 25H2で、その上にWSLをインストールして利用している。 WSLではUbuntu 24.04なイメージをインストールしたあとにUbuntu 25.10までアップグレードしている。 Windows側は作業用途ではほぼ使わず、WSL上で作業を行っている。

使用しているCLIツール

mise

mise.jdx.dev

コマンドのバージョン管理ツール。CLIツールのインストールに利用していて、aptなどのディストリビューション提供のパッケージ以外のインストールは全てmiseで行っている。 miseはrtx時代から使っているが、かなり機能が追加されていて便利になっているので個人的におすすめの使い方を紹介する。

mise-plugin以外のツールをインストールする

デフォルトではmise公式が運用しているmise-pluginからインストールされる。 しかし、mise-pluginにはないツールをインストールしたいときがある。 その場合、以前は自分でプラグインを書く必要があったが、最近のバージョンではaqua registryなど他ツールのregistryも参照できるようになっている。

mise.jdx.dev

特にaqua-registry(miseではaquaバックエンドと呼ばれる)は圧倒的に登録数が多いため、インストールできるツールが増えるので便利である。また、githubバックエンドgoバックエンドあたりも便利でよい。 ちなみに、rubygemsを参照するgemバックエンドもあるが、miseでrubyコマンドをインストールしている場合、このgemバックエンドで入れたツールがmiseのrubyコマンドを参照するためrubyコマンドをバージョンアップすると、gemバックエンドでインストールしたツールが使えなくなる。 そのため、rubyコマンドをアップグレードしたあと、 mise install -f "gem:*"する必要がある。

プライベート環境と会社の環境で設定をわける

プライベート環境と会社の環境で同じdotfilesを使用しているが、会社でしか使わないツールは含めたくないということがある。 miseでは複数のパスから設定ファイルを読み込む機能があるのでそれを利用することで、環境ごとの設定を分けることができる。 具体的には以下のパスから設定ファイルが読み込まれるhttps://mise.jdx.dev/configuration.html

  • mise.local.toml
  • mise.toml
  • mise/config.toml
  • .mise/config.toml
  • .config/mise.toml
  • .config/mise/config.toml
  • .config/mise/conf.d/*.toml

ここで一番下のパスが複数読み込めることがわかるので、この配下にそれぞれ共通設定と会社用の設定をいれている。具体的には以下のような感じ。

  • .config/mise/conf.d/common.toml <-- 共通設定
  • .config/mise/conf.d/pepabo.toml <-- 会社用の設定

common.tomlにはプライベート、会社環境で共通で使うツールを定義している。pepabo.tomlには、会社での使うツールのみ定義している。 dotfilesで管理するときはcommon.tomlのみ管理し、会社用の設定はignoreしておくとよい。

この運用の欠点は、共通設定と会社用の設定どちらにも定義がないツールをmise use -gすると .config/mise/config.tomlに設定が書き込まれることである。 そのため、毎回適切にどちらにファイルかに追記しないといけないのと、.config/mise/config.tomlを迂闊にdotfilesに含められない点である。悩ましい。

mitamae

github.com

CLIツールのインストールはmiseで行っているが、そのmiseのインストールを行うブートストラップやOS設定などはmitamaeを使っている。 miseにもタスクという機能があって同様のこともできるが、シェルスクリプトを作るのも面倒なので、mitamaeを使っている。

chezmoi

www.chezmoi.io

dotfilesの管理に以前はrcmをつかっていたが、rcmのコマンド体系を毎回忘れググっていたりと、あまり私との相性が良くなかったのでchezmoiに乗り換えた。 ちなみに、心の中でチェズモイと呼んでいたけど、本当はシェモアと呼ぶんですね…。 chezmoiもプライベートと会社用の設定で分けているのでその方法を紹介。

プライベートと会社用の設定をわける

chezmoiでは-S / --sourceオプションで設定ファイルの位置を変更できる。 これを使い、デフォルト(-Sを指定しない)のchezmoiコマンドはプライベート用として使用し、会社用には-Sを指定したchezmoiラッパーコマンドを用意している。 具体的には、会社用を ~/.local/share/chezmoi.pepabo/ 配下を指定した以下のようなコマンドにしている。

#!/bin/bash
# ~/.local/bin/chezmoi.pepabo

exec chezmoi -S ~/.local/share/chezmoi.pepabo "$@"

bat

github.com

catの代わりにbatを使っている。 MarkdownやJSON、YAMLの色付けから、lessの代わりまですべてこれで代替している。 個人的には以下の設定を行いヘッダーなどを非表示にしている。

alias cat='bat -p'
export BAT_PAGER="less -FXR"

lessで-Xを指定するとlessが終了したときに、ターミナルをリセットしないのでおすすめ。 また、batを実行したときにpagerが出るのが邪魔なときはbatに-Pを付けるとよい。

GitHub CLI

GitHubやGitHub Enterprise ServerなどをCLIから使うのに重宝している。 主に使っているコマンドは

  • gh pr checkout
  • gh browse openをラップした自作ツール
  • gh run watch
  • gh api

などなど。 拡張なども入れているがここでは長くなるので別の記事にする…かもしれない。

fzf

pecoから乗り換え。 乗り換え前からfzfも併用していたのだが、--tmuxオプションでtmuxのウインドウとして表示できることを知ってからこっちを使っている。 fzfは$FZF_DEFAULT_OPTS_FILEを設定することで、デフォルトのオプションをファイルで指定することができる。 私は export FZF_DEFAULT_OPTS_FILE=$HOME/.config/fzf/optsと設定していて、optsには以下を設定している。

--height 10
--cycle
--layout=reverse
--bind 'ctrl-t:toggle+down'

また、fzfを使ってgitのオペレーションの一部をTUI化するツールを作ったのだが、それをブログ記事にしようとして眠っている…。

wsl2-ssh-agent

WSL環境からWindows側の1PasswordのSSHエージェント機能をブリッジするためのツール。 WSLにも1Passwordを入れることが出来るが、Windows Helloを使えなかったりと少し不便なのでこの運用方法にしている。 基本的な使い方は、シェル起動時にwsl2-ssh-agentを起動するだけだが、公式リポジトリにsystemdのunitファイルがあるのでそれを使ってみるのも良さそう。

github.com

余談だが、ssh agentが鍵問い合わせに使うのは秘密鍵または公開鍵であることを知ったので、~/.ssh配下にはid_rsa.pubだけおいておけば良い。

wsshuttle

sshuttleというsshトンネルを掘ってくれる便利なツールがあるのだが、これを使ってもWindows側の通信はトンネルされない。 この問題を解決してくれるのがwsshuttleである。 wsshuttleの使い方は↓に書いたので参照してほしい。

tech.buty4649.net

pass-secret-service

github.com

passコマンド(ググらビリティが低い!!!)をバックエンドにした、キーリングサービスである。 今まではGNOME Keyringを使っていたがインストールするための依存がかなり巨大であるため、依存の少ないキーリングサービスに乗り換えたくなったのでこれを使っている。 実は自分で実装しようかとおもっていたが、これを見つけたので車輪の再発明にならなくてよかった。

rf

私がOSSで開発しているフィルタリングツール。 ドッグフーディング的に使っているが、最近かなり便利なのでは?という感じになってきた。 このコマンドオンリーのアドカレをやっているので、気になった人も気にならなかった人も全員見てください!!

qiita.com

おまけ: UDEV Gothic / PlemolJP

github.com github.com

CLIツールではないがターミナルやエディタのフォントにはUDEV GothicかPlemolJPを使っている。 最近はPlemolJPが多いかな? 個人的にこの2つのフォントは視認性が高く気に入っている。 新しい合成フォントが出るたびに試しているが、この2つが今のところお気に入り。

*1:半年以上経っていてもっと早く出すべきだった…