楽にgit worktreeを管理!git-gtr・gum・fzfでTUIツールを作った話
💡 はじめに
開発していると、「このコマンド、毎回打つの面倒だな...」「もっと直感的に操作できたらいいのに...」と感じる瞬間、ありませんか?
私もそうでした。でも半年前から Claude Code を使い始めてから、そういった「ちょっとした面倒」を解決するのがとても簡単になりました。
この記事では、Claude Codeを使って日常の開発作業を改善する方法を、具体例を交えてご紹介します。題材として、git worktreeの操作を快適にするTUIツールを作った経験を共有します。
この記事で分かること
- Claude Codeを使った開発環境の改善方法
- 既存のCLIツールを組み合わせて、快適なTUIツールを作る手法
- 実際の開発プロセスと完成したツールの紹介
「面倒な作業」は、AIと一緒に解決できる時代です。ぜひ最後まで読んで、あなたの開発環境も改善してみてください。
😓 ケーススタディ:git worktreeの操作が面倒だった
皆さん、git worktreeを使っていますか?
- 「同時に複数のAIを走らせたい!」
- 「バグ対応で、今の作業を退避させたくない!」
- 「複数のPRを並行でレビューしたい...」
git worktreeは、そんな悩みを解決してくれる便利な機能です。1つのリポジトリで複数の作業ブランチを同時に、別々のディレクトリとして扱えます。
ただ、正直に言うと、コマンドが長くて面倒じゃないですか?私もあまりコードを書いていないせいか、どうしても覚えられませんでした。
# 新しいworktreeを作成
git worktree add ../hotfix-branch -b hotfix-branch
# worktreeの一覧を確認
git worktree list
# worktreeを削除
git worktree remove ../hotfix-branch
毎回パスを指定して、オプションを思い出して...この繰り返しが地味にストレスでした。
そこで、「これ、もっと簡単にできないかな?」と思い、Claude Codeに相談してみることにしました。
🤝 Claude Codeと一緒にツールを作る
きっかけ:git-gtrとの出会い
とある記事で「git-gtr」というツールの存在を知りました。git worktreeのパス管理を自動化してくれる便利なツールです。
早速試してみると、確かに便利。でも、個人的にはもう少し楽なインターフェースが欲しいと感じました。毎回コマンドを打つより、メニュー形式で選択できたら...と。
そこで、以前から使っていた「gum」と「fzf」を組み合わせれば、理想的なTUIが作れるんじゃないか?と思いつきました。
なぜ既存ツールの組み合わせにしたか
まずはじめに、今回は0から作らず、既存ツールを組み合わせるという方針にしました。
理由は、最終的なコード量を自分が把握できるサイズにしたかったからです。
AIに要件だけを指示すると、ゼロから膨大なアプリケーションが完成することがあります。最初に感動はありますが、いざ修正しようとすると、どこを変えればいいのか追えなくなってしまいます。
既存ツールを組み合わせるアプローチなら:
- コードは薄いグルーレイヤーだけ:各ツールをつなぐシェルスクリプトのみ
- メンテナンスしやすい:問題が起きても、どの部分が悪いか特定しやすい
- 理解しやすい:各ツールの役割が明確で、全体像を把握できる
実装プロセス
Claude Codeと会話しながら、バイブコーディング(ペア的なコーディング)で進めました。
- 「gumでメニューを作りたい」
- 「fzfでブランチを選択できるようにしたい」
- 「git-gtrと統合して、パス管理を自動化したい」
こんな感じで、やりたいことを伝えながら、コードを生成してもらいます。
ベースは10分ほどで完成しました。基本的なメニュー選択、ブランチ検索、worktreeの作成・削除が、あっという間に動くようになりました。
その後は、ゆっくりと細かなチューニングを行いました。
- fzfのプレビューでgit logを表示
- master/mainブランチの削除防止
- 確認ダイアログの追加
- エラーハンドリングの改善
こういった「あったらいいな」という機能を、Claude Codeと相談しながら一つずつ追加していきました。
🎉 完成したツール:git-worktree-manager

キーボードショートカット(Option + w)を押すだけで、このメニューが起動します。
面倒だったコマンド入力が、メニュー選択とファジー検索だけで完結するようになりました。
できること
- 📂 Open/Switch: 既存のWorktreeをエディタで開く、またはAIツールで開く
- ✨ New Worktree: 新しいWorktreeを対話的に作成
- 🗑️ Delete Worktree: 不要になったWorktreeを安全に削除
- 📋 List All: すべてのWorktreeを一覧表示
機能1:✨ New Worktree(新規作成)
ブランチの指定方法が選べます。
- 🔍 Search existing branches: ローカルとリモートの全ブランチをfzfでファジー検索できます。git logのプレビュー付きなので、どのブランチか一目瞭然です
- ✏️ Enter new branch name: 新しいブランチ名を直接入力して作成できます
gum confirmを使って、実行前に作成するかどうかを最終確認します。
機能2:📂 Open/Switch & 🗑️ Delete(選択して操作)
fzfを使って、既存のWorktreeを直感的に選択できます。
こちらもgit logのプレビューが表示されるので、どの作業ツリーか迷いません。
開く:
-
git gtr editor: コマンド一発でエディタ(VS Codeなど)が開きます -
git gtr ai: 指定したWorktreeをコンテキストとして、AIツール(例: aide)を起動できます
削除:
- master/mainブランチは間違って消さないように保護されています
- gum confirmによる最終確認で、破壊的操作の事故を防ぎます
🔧 技術的なポイント(参考)
興味のある方向けに、実装の技術的なポイントを簡単に紹介します。
使用したツール
| ツール | 役割 |
|---|---|
| git-gtr | git worktreeのパス管理を自動化 |
| gum | シェルスクリプトで美しいTUIを作成 |
| fzf | ファジー検索でブランチ選択 |
実装の工夫(ハイライト)
fzfでブランチを選択
branch_name=$(echo "$branches" | \
fzf --header "Select branch (local + remote)" \
--reverse \
--height 60% \
--border rounded \
--preview 'git log --oneline --graph --color=always {} 2>/dev/null | head -20' \
--preview-window right:60%)
--preview オプションで、選択中のブランチのコミットログをリアルタイム表示しています。これにより、ブランチ名だけでなく、内容も確認しながら選択できます。
gumでメニューを作成
# メインメニュー
local action=$(gum choose \
--header "Git Worktree Manager" \
--cursor.foreground="212" \
"📂 Open/Switch" \
"✨ New Worktree" \
"🗑️ Delete Worktree" \
"📋 List All")
case "$action" in
"✨ New Worktree")
# ...
;;
# ...
esac
gum choose を使うと、矢印キーで操作できる美しいメニューが簡単に作れます。シェルスクリプトでTUIを作るのが、こんなに簡単だとは思いませんでした。
セットアップ方法
実際に試してみたい方向けに、セットアップ手順を記載しておきます。
# 必要なツールをインストール
brew install gum fzf
# git-gtrをインストール
git clone https://github.com/coderabbitai/git-worktree-runner.git
cd git-worktree-runner
sudo ln -s "$(pwd)/bin/git-gtr" /usr/local/bin/git-gtr
詳細な設定方法や、シェル関数の実装は以下を参照してください。
- git-gtr公式ドキュメント: https://github.com/coderabbitai/git-worktree-runner
- 私の実装例: dotfiles/functions.zsh
🚀 まとめ:AIで開発環境を改善しよう
この記事では、git worktreeの操作を例に、Claude Codeを使った開発改善の流れをご紹介しました。
重要なのは「面倒」に気づくこと
開発していて「面倒だな」と感じたら、それは改善のチャンスです。
- 毎回同じコマンドを打っている
- 複雑なオプションを覚えられない
- 複数のステップを手作業で実行している
こういった「面倒」を見つけたら、Claude Codeに相談してみてください。既存ツールの組み合わせや、シェルスクリプトで解決できることがたくさんあります。
あなたの「面倒」は何ですか?
この記事を読んで、「自分もこれを改善したい!」と思ったことはありませんか?
git worktree以外にも、日々の開発には改善できるポイントがたくさんあるはずです。
- Dockerコマンドの操作
- ログの確認作業
- テストの実行
- デプロイ作業
ぜひClaude Codeを使って、あなただけの開発環境を改善してみてください。
もし面白いツールを作ったり、改善のアイデアがあったら、ぜひコメントで教えてください。一緒により良い開発環境を作っていきましょう。
この記事の一部は、文章の推敲や表現の改善にClaudeを活用しています。
Discussion
なるほど。
既存のツールを改良するというもありですね。
ありがとうございます!