🌲

楽にgit worktreeを管理!git-gtr・gum・fzfでTUIツールを作った話

に公開1

💡 はじめに

開発していると、「このコマンド、毎回打つの面倒だな...」「もっと直感的に操作できたらいいのに...」と感じる瞬間、ありませんか?

私もそうでした。でも半年前から 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

image

キーボードショートカット(Option + w)を押すだけで、このメニューが起動します。

面倒だったコマンド入力が、メニュー選択とファジー検索だけで完結するようになりました。

できること

  1. 📂 Open/Switch: 既存のWorktreeをエディタで開く、またはAIツールで開く
  2. ✨ New Worktree: 新しいWorktreeを対話的に作成
  3. 🗑️ Delete Worktree: 不要になったWorktreeを安全に削除
  4. 📋 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

詳細な設定方法や、シェル関数の実装は以下を参照してください。

🚀 まとめ:AIで開発環境を改善しよう

この記事では、git worktreeの操作を例に、Claude Codeを使った開発改善の流れをご紹介しました。

重要なのは「面倒」に気づくこと

開発していて「面倒だな」と感じたら、それは改善のチャンスです。

  • 毎回同じコマンドを打っている
  • 複雑なオプションを覚えられない
  • 複数のステップを手作業で実行している

こういった「面倒」を見つけたら、Claude Codeに相談してみてください。既存ツールの組み合わせや、シェルスクリプトで解決できることがたくさんあります。

あなたの「面倒」は何ですか?

この記事を読んで、「自分もこれを改善したい!」と思ったことはありませんか?

git worktree以外にも、日々の開発には改善できるポイントがたくさんあるはずです。

  • Dockerコマンドの操作
  • ログの確認作業
  • テストの実行
  • デプロイ作業

ぜひClaude Codeを使って、あなただけの開発環境を改善してみてください。

もし面白いツールを作ったり、改善のアイデアがあったら、ぜひコメントで教えてください。一緒により良い開発環境を作っていきましょう。

この記事の一部は、文章の推敲や表現の改善にClaudeを活用しています。

GMOメディアテックブログ

Discussion