DevOpsエンジニアにとって、作業環境はパフォーマンスに直結する武器だ。毎日何百回もタイプするコマンド、何時間も見つめるターミナル画面、設定ファイルの一行一行が生産性を左右する。この記事では、筆者が5年以上かけて磨き上げてきた作業環境を公開する。ターミナル、エディタ、シェル設定、そしてdotfilesの管理方法まで、すべてをお見せする。
ターミナル: Ghostty
2026年現在、筆者のメインターミナルはGhosttyだ。以前はAlacritty、iTerm2を使っていたが、Ghosttyに乗り換えてからは戻れなくなった。
Ghosttyを選んだ理由
- GPUレンダリングによる圧倒的な描画速度。大量のログを流しても一切カクつかない
- ネイティブのタブ・分割機能。tmuxなしでも基本的なウィンドウ管理ができる
- 設定ファイルがシンプル。TOMLベースで直感的に書ける
- フォントレンダリングが美しい。特に日本語フォントの描画品質が高い
- macOS / Linux両対応。サーバーでも同じ環境を再現できる
Ghosttyの設定
# ~/.config/ghostty/config
font-family = "JetBrains Mono"
font-size = 14
font-feature = calt
font-feature = liga
theme = catppuccin-mocha
window-padding-x = 12
window-padding-y = 8
window-decoration = false
cursor-style = block
cursor-style-blink = false
shell-integration = zsh
shell-integration-features = cursor,sudo,title
copy-on-select = clipboard
confirm-close-surface = false
keybind = super+d=new_split:right
keybind = super+shift+d=new_split:down
keybind = super+w=close_surface
keybind = super+shift+enter=toggle_fullscreen
シェル: Zsh + Starship
シェルはZsh一択だ。プロンプトにはStarshipを使っている。Oh My Zshは重すぎるので使っていない。必要なプラグインだけを手動で管理する方がシェルの起動が速い。
.zshrcの構成
# ~/.zshrc
# --- 基本設定 ---
export EDITOR="nvim"
export LANG="en_US.UTF-8"
export HISTSIZE=50000
export SAVEHIST=50000
export HISTFILE=~/.zsh_history
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_SAVE_NO_DUPS
setopt SHARE_HISTORY
setopt AUTO_CD
# --- プラグイン(手動管理) ---
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source ~/.zsh/zsh-completions/zsh-completions.plugin.zsh
# --- fzf ---
eval "$(fzf --zsh)"
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
export FZF_ALT_C_COMMAND='fd --type d --hidden --follow --exclude .git'
# --- Starship プロンプト ---
eval "$(starship init zsh)"
# --- エイリアス ---
alias k="kubectl"
alias kx="kubectx"
alias kn="kubens"
alias tf="terraform"
alias tg="terragrunt"
alias d="docker"
alias dc="docker compose"
alias g="git"
alias lg="lazygit"
alias v="nvim"
alias cat="bat"
alias ls="eza --icons"
alias ll="eza --icons -la"
alias tree="eza --icons --tree"
# --- kubectl補完 ---
source <(kubectl completion zsh)
# --- AWS/GCP ---
export AWS_PAGER=""
source "$(brew --prefix)/share/google-cloud-sdk/path.zsh.inc"
source "$(brew --prefix)/share/google-cloud-sdk/completion.zsh.inc"
Starship設定
# ~/.config/starship.toml
format = """
$directory
$git_branch
$git_status
$kubernetes
$terraform
$aws
$gcloud
$line_break
$character"""
[directory]
truncation_length = 3
style = "bold cyan"
[git_branch]
symbol = " "
style = "bold purple"
[git_status]
ahead = "⇡${count}"
behind = "⇣${count}"
diverged = "⇕⇡${ahead_count}⇣${behind_count}"
[kubernetes]
disabled = false
symbol = "⎈ "
format = '[$symbol$context( ($namespace))]($style) '
style = "bold blue"
[terraform]
symbol = "💠 "
format = '[$symbol$workspace]($style) '
[character]
success_symbol = "[❯](bold green)"
error_symbol = "[❯](bold red)"
エディタ: Neovim + LazyVim
メインエディタはNeovimだ。ディストリビューションはLazyVimを使っている。VSCodeも併用するが、サーバー上での作業やちょっとしたファイル編集はNeovimの方が圧倒的に速い。
LazyVimのカスタマイズ
-- ~/.config/nvim/lua/plugins/devops.lua
return {
-- Terraform
{
"hashivim/vim-terraform",
ft = "terraform",
config = function()
vim.g.terraform_fmt_on_save = 1
vim.g.terraform_align = 1
end,
},
-- Kubernetes YAML
{
"someone-stole-my-name/yaml-companion.nvim",
dependencies = {
"neovim/nvim-lspconfig",
"nvim-telescope/telescope.nvim",
},
ft = "yaml",
},
-- Dockerfile
{ "ekalinin/Dockerfile.vim", ft = "dockerfile" },
-- GitHub Copilot
{
"zbirenbaum/copilot.lua",
opts = {
suggestion = { enabled = true, auto_trigger = true },
panel = { enabled = false },
},
},
-- Colorscheme
{
"catppuccin/nvim",
name = "catppuccin",
priority = 1000,
opts = {
flavour = "mocha",
transparent_background = true,
},
},
}
CLIツール群
DevOpsエンジニアの生産性を支えるCLIツールを紹介する。
必須ツール
- bat: catの代替。シンタックスハイライト、行番号、Git差分表示
- eza: lsの代替。アイコン表示、Gitステータス、ツリー表示
- fd: findの代替。直感的な構文、高速検索
- ripgrep (rg): grepの代替。圧倒的な検索速度
- fzf: ファジーファインダー。ファイル選択、コマンド履歴検索に必須
- jq / yq: JSON/YAMLのパースと変換
- delta: gitのdiff表示をリッチに
- lazygit: TUIのGitクライアント。コミット、ブランチ操作が爆速
- htop / btop: プロセスモニタリング
- dust: duの代替。ディスク使用量の可視化
Kubernetes関連ツール
- kubectl: 言わずもがな
- kubectx / kubens: コンテキストとネームスペースの高速切り替え
- k9s: TUIのKubernetesダッシュボード。Podのログ、exec、削除がキーボードだけでできる
- stern: 複数Podのログを同時にtailする
- kubent: 非推奨APIの検出
- helm: パッケージマネージャ
- kustomize: マニフェストのカスタマイズ
インフラ関連ツール
- terraform: IaCの定番
- terragrunt: Terraformのラッパー。DRYな設定管理
- aws-cli / gcloud: クラウドプロバイダCLI
- ansible: 構成管理
- packer: マシンイメージのビルド
dotfiles管理: chezmoi
dotfilesの管理にはchezmoiを使っている。以前はGitベアリポジトリやGNU Stowを使っていたが、chezmoiはテンプレート機能があり、マシンごとの差分を吸収できる点が優れている。
# chezmoiの初期化
chezmoi init
# ファイルの追加
chezmoi add ~/.zshrc
chezmoi add ~/.config/nvim/
chezmoi add ~/.config/ghostty/config
chezmoi add ~/.config/starship.toml
chezmoi add ~/.gitconfig
# リモートリポジトリとの連携
chezmoi cd
git remote add origin git@github.com:username/dotfiles.git
git push -u origin main
# 別マシンでの適用
chezmoi init --apply git@github.com:username/dotfiles.git
テンプレートによるマシン別設定
# ~/.local/share/chezmoi/dot_zshrc.tmpl
{{ if eq .chezmoi.os "darwin" -}}
# macOS固有の設定
eval "$(/opt/homebrew/bin/brew shellenv)"
export PATH="/opt/homebrew/opt/postgresql@16/bin:$PATH"
{{ else if eq .chezmoi.os "linux" -}}
# Linux固有の設定
export PATH="/usr/local/go/bin:$PATH"
{{ end -}}
# 共通設定
export EDITOR="nvim"
alias k="kubectl"
Git設定
# ~/.gitconfig
[user]
name = Your Name
email = your@email.com
signingkey = ~/.ssh/id_ed25519.pub
[commit]
gpgsign = true
[gpg]
format = ssh
[core]
editor = nvim
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true
side-by-side = true
line-numbers = true
syntax-theme = Catppuccin Mocha
[alias]
co = checkout
br = branch
ci = commit
st = status
lg = log --oneline --graph --decorate --all
unstage = reset HEAD --
last = log -1 HEAD
wip = !git add -A && git commit -m "WIP"
[pull]
rebase = true
[push]
autoSetupRemote = true
[init]
defaultBranch = main
[rerere]
enabled = true
1Passwordによるシークレット管理
SSH鍵、APIトークン、各種認証情報は1Password CLIで管理している。dotfilesにシークレットをハードコードする必要がなくなる。
# SSH鍵を1Passwordで管理
# ~/.ssh/config
Host *
IdentityAgent "~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"
# 環境変数にシークレットを注入
export AWS_ACCESS_KEY_ID=$(op read "op://DevOps/AWS/access-key-id")
export AWS_SECRET_ACCESS_KEY=$(op read "op://DevOps/AWS/secret-access-key")
まとめ: 環境構築は継続的な投資
作業環境の最適化は、一度やって終わりではない。新しいツールが登場し、ワークフローが変わるたびに見直す必要がある。大切なのは以下の3点だ。
- dotfilesをバージョン管理する。環境の再現性を担保する
- 定期的に新しいツールを試す。ただし、本当に生産性が上がるものだけを採用する
- チームで知見を共有する。良い作業環境はチーム全体の生産性を底上げする
最高の道具は、存在を意識させない道具だ。ターミナルもエディタも、思考の邪魔をしないように設定することが、最良のカスタマイズだ。
この記事で紹介した設定ファイルは、GitHubリポジトリで公開している。自分の環境に合わせてカスタマイズして使ってほしい。








# comment