OS
プライベートではArch Linux(自作マシンとThinkpad X1 Carbon)、仕事ではmacOS(Macbook Air M4)を使っている. これまで7~8年ほどLinuxをメインで使っていたものの、生成AI周りのネイティブアプリがまずmacOSで出ることが多かったため、 まずは仕事用のみmacOSにした.
基本的には同じツールを使うようにしているが、macOSでは設定をあまり変えていない. 割と郷に入っては郷に従う派で、Arch Linuxはカスタマイズ前提なので自分好みにするが、macOSはカスタマイズをあまり想定していない思想(だと思っている)のため、アップデートで不具合が起きたりといったリスクを避けたい気持ちがある.
プライベート環境では、簡単な作業はラップトップで行うが、Rustを書くときは自作マシンにSSHすることが多い.
エディタ
5年ほど前からNeovimを使っている. その前はVim. Copilotが出た際に軽くVSCode、その後Cursorも試したが結局馴染まずに戻ってきた.

スクショはCoding Agentを動かすサンドボックスを勉強がてら実装しているところ. つい最近まではnvim-lspconfigなどのパッケージを使ってLSPを設定していたが、Neovim本体にvim.lspが組み込まれたのでそちらに移行した.
unsafeブロックもたまに読むことがあり、慣習的に書かれているSAFETYコメントに目が行くようにtree-sitterのクエリを書いたりしている.
; highlight `SAFETY` keyword in comment (for Rust)
((tag
(name) @text.safety @spell
( "(" (user) ")" )? ":" )
(#eq? @text.safety "SAFETY"))

設定ファイルはnvimで管理している.
AI
Claude Codeがメインで、GitHub Copilotもエディタ補完として使っている. Neovimとの統合にはcoder/claudecode.nvimを入れているものの、difitでも十分なことが多く、そこまで使いこなせてない感じがある. CopilotはNESがないと片手落ち(だと思っている)なので、こちらはfolke/sidekick.nvimを使っている.
普段のワークフローとしては要件+設計をNeovimで人間が書いて、Claude Codeに実装させ、手戻りした部分をCLAUDE.mdないしドキュメントに追記して徐々にアラインしていく流れが多い.
ターミナル
Alacritty → WezTerm → Ghosttyと乗り換えた. ただtmuxをずっと使っているので、エミュレータ自体はそこまでこだわりがない.
シェル
多分10年くらいzsh.
プラグインをそこそこ入れており、antidote で管理している.
zsh-users/zsh-completions
zsh-users/zsh-autosuggestions
zsh-users/zsh-syntax-highlighting kind:defer
mollifier/cd-bookmark
mroth/evalcache
MichaelAquilina/zsh-auto-notify
changyuheng/zsh-interactive-cdLinux環境
macOSの方はあとはほぼデフォルトorデファクトのものを使ってる感じ. Arch Linuxの方は以下のような感じ.
WM/DE
i3-wmとpicomを使っている. 一時期はxmonadを使っていたが、Haskellを依存関係に持つのが徐々にしんどくなりi3に戻した. sway/hyprlandも興味があるものの, NVIDIA GPUのopen版のドライバでうまく動かせなかったため移行せずにいる.
パッケージ管理
システムのパッケージ管理にはyayを使い、個々のプロジェクト管理にはNixを使っている. (場合によってはmiseやdockerも)
なんにせよ、極力大本の環境を汚さず、軽量に再現性のある環境を持てるようにしている.
ランチャー
rofiをだいぶ長いこと使っている気がする. カスタマイズの自由度が高く、ランチャー以外にクイックアクションを作成して使ったりしている.
おわり
今年はもうちょいアウトプット増やしたいなと毎年思いつつも、特にここんとこは育児を言い訳にしてしまっている. とはいえ参考にした記事の著者も育児をされているようで、時間のやりくりだなあと思うところ.
Comments