年収1200万DevOpsエンジニアのターミナルを覗き見する — dotfiles全公開

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リポジトリで公開している。自分の環境に合わせてカスタマイズして使ってほしい。