🎉

チーム開発の中で、快適なコードレビュー環境を目指してみる

に公開

はじめに

この記事では、ローカルのレビュー環境を快適にするために使っているツールの紹介をしています!
チームでの取り組みや、マインド的な要素は扱っていないのでご注意ください。

チームでの開発をしていると、複数人から様々なタスクのコードレビューがやってきます。
この記事では、そのような環境で自身の開発業務に支障なく快適なコードレビューを進めるために、私が取り入れているツール群を紹介しようと思います。
特にGit Worktree Runnerdotenvxの組み合わせは本当に快適です。

1. Git Worktree Runner(gtr)

gtrの良さ・詳細については、Zennにもいくつか記事が上がっているので、ここでは省略します。
git worktreeをより簡単で直感的に扱うためのラッパーツールです。

https://github.com/coderabbitai/git-worktree-runner
https://zenn.dev/luup_developers/articles/git-worktree-runner-ohtaki-20251208

gtrの設定は人によって違うと思いますが、次に紹介するdotenvx向けに.env.keys.env.localのコピーを設定しています。

[gtr "copy"]
    include = **/.env.local
    include = **/.env.keys

With Dev Container

私はdev containerを愛用しているので、dev container用のセットアップスクリプトを用意しています。
本当はfeaturesにしたいところですが、重い腰が上がらずスクリプトで運用しています。

#!/bin/bash

# Install git-worktree-runner
# This script installs git-worktree-runner by adding bin/ to PATH
# (Alternative to the official symlink method for non-sudo environments)

set -e

GTR_DIR="$HOME/.local/share/git-worktree-runner"
GTR_BIN="$GTR_DIR/bin"
GTR_COMPLETIONS_DIR="$GTR_DIR/completions"
BASHRC="$HOME/.bashrc"
PATH_EXPORT='export PATH="$PATH:$HOME/.local/share/git-worktree-runner/bin"'

# Create directory if it doesn't exist
mkdir -p "$HOME/.local/share"

# Clone repository if it doesn't exist
if [ ! -d "$GTR_DIR" ]; then
  echo "Cloning git-worktree-runner repository..."
  git clone https://github.com/coderabbitai/git-worktree-runner.git "$GTR_DIR"
else
  echo "git-worktree-runner repository already exists, skipping clone."
fi

# Add PATH to ~/.bashrc if it doesn't already exist
if ! grep -q "git-worktree-runner/bin" "$BASHRC" 2>/dev/null; then
  echo "Adding git-worktree-runner to PATH in ~/.bashrc..."
  echo "" >> "$BASHRC"
  echo "# git-worktree-runner" >> "$BASHRC"
  echo "$PATH_EXPORT" >> "$BASHRC"
else
  echo "git-worktree-runner PATH already configured in ~/.bashrc, skipping."
fi

# Setup shell completions
# Note: bash-completion v2 is recommended for full functionality
if ! command -v complete &> /dev/null; then
  echo "Warning: bash-completion may not be installed. Shell completions might not work."
fi

if [ -d "$GTR_COMPLETIONS_DIR" ]; then
  # Bash completion (official file: completions/gtr.bash)
  BASH_COMPLETION_SOURCE="$GTR_COMPLETIONS_DIR/gtr.bash"

  if [ -f "$BASH_COMPLETION_SOURCE" ]; then
    if ! grep -q "git-worktree-runner.*completion" "$BASHRC" 2>/dev/null; then
      echo "Adding Bash completion to ~/.bashrc..."
      echo "" >> "$BASHRC"
      echo "# git-worktree-runner Bash completion" >> "$BASHRC"
      echo "source \"$BASH_COMPLETION_SOURCE\"" >> "$BASHRC"
    else
      echo "Bash completion already configured in ~/.bashrc, skipping."
    fi
  fi
else
  echo "Warning: completions directory not found, skipping shell completion setup."
fi

echo "git-worktree-runner installation completed."
echo "Note: You may need to restart your shell or run 'source ~/.bashrc' to use 'gtr' command and completions."

2. dotenvx

こちらも最近Zennで紹介され始めているツールです。
環境変数を書いた.envファイルを暗号化 & リポジトリにコミットしてコードと一緒に管理しようというものになってます。
gtrで.env.keysをコピーすれば、worktree内では常に最新の環境変数を使用できます(これが本当に快適)。
https://zenn.dev/yumemi_inc/articles/fff1cf90a0fead

3. GitHub CLIの拡張機能

GitHub CLIには拡張機能の仕組みがあり、自作のコマンドを登録して拡張できます。
自分は、朝一や隙間時間に以下のコマンドで自分にアサインされてるPR一覧を確認しています。
https://zenn.dev/buyselltech/articles/700fe132599472

今のレビュー環境

特にdotenvxとgtrの組み合わせが本当に快適なので、ぜひチームでの導入をお勧めしたいです。
以下のフローに従うだけで、かなり快適なレビューができます。

  • これまでの作業に依存せず、worktreeでコードレビューを開始できる
  • 完全に別ウィンドウで操作できるので、コンテキストが区別しやすい
  • 環境変数もレビュー対象のものが自動で適用される
    • worktree内で開発サーバーを起動すれば、追加作業なしで動作確認ができる
1. レビュー対象のブランチを特定(feature-XXXX)
2. gtrでworktree作成
   git gtr new feature-XXXX
3. worktreeを開く(同一container、異なるwindowで開かれる)
   git gtr editor feature-XXXX
4. レビューが終わったらworktreeとブランチを削除
   git gtr rm feature-XXXX --delete-branch

まとめ

複数人からのレビューがポンポン飛んでくるのような環境で開発している方は、同じような悩みを抱えているのではないでしょうか?
ぜひ、皆さんが持っている便利知識があればコメントで共有いただけると嬉しいです!

あとがき

記事では触れなかったんですが、DBの状態だけPRに自動追従できずに手動で制御していました。
ちょうどこの問題を解決できる、すごく良さそうな記事が公開されていたんですが、まだ試せておらず紹介できませんでした。使い勝手良さそうであれば、記事を更新して追記しようかなと思います。
https://zenn.dev/layerx/articles/6539bf1842f1e0

参考リンク

SMARTCAMP Engineer Blog

Discussion