ターミナルでGitHub PRレビューが完結!Rust製TUIツール「gh-prism」の使い方と設計思想

元記事を読む
キュレーターコメント

AIエージェントにコードを書かせる機会が増えた今、「レビュー効率」はエンジニアの生産性を左右する重要テーマ。コミット単位の確認済みマークという地味だが実用的な独自機能が刺さる。

概要

AIエージェントがコードを書く時代になって、自分の役割が「実装者」から「レビュアー」にシフトしてきた——そんな感覚を持つエンジニアは、もう少数派ではないはずだ。そのレビュー作業を、ブラウザを開かずターミナルだけで完結させようというのが、今回紹介する gh-prism だ。

gh-prismとは?既存ツールとの違い

GitHub PRのdiffをTUI(テキストUI)で見るツールはすでに存在する。diffnavdifit などがその代表格だ。ただし、これらは「PR全体の最終差分」を見ることには長けていても、コミット単位でdiffを確認するのが苦手だった。

AIが生成したPRをレビューするとき、コミットの粒度を意識しながら「このコミットで何が変わったか」を確認したい場面は多い。gh-prismはその痒いところに手が届く設計になっている。

gh CLIの拡張機能として実装されているため、インストールは一行で済む。

# インストール
gh extension install kawarimidoll/gh-prism

# PR番号を指定して起動
gh prism 123

# 別リポジトリのPRを見る場合
gh prism 123 --repo author/repo

# fzfと組み合わせてPR選択をインタラクティブに
gh prism "$(gh pr list | fzf --preview 'gh pr view {1}' | awk '{print $1}')"

画面構成と主要機能

起動すると4ペイン構成のTUI画面が立ち上がる。

  • 左上(PR Description): PRのタイトル・説明文。対応ターミナルなら画像も表示
  • 左中(Commits): コミット一覧。選択するとファイルパネルと右側が連動更新
  • 左下(Files): 選択中のコミットに含まれる変更ファイル一覧
  • 右側(詳細エリア): PR Info / Conversation / Diffを文脈に応じて表示

キーバインドはVim系(j/kで移動、Tabでパネル切り替え、zでズーム)。?でヘルプが出るので迷ったらこれ。

特に面白いのが コミット単位の「確認済み」マーク機能xキー)だ。例えば「APIインターフェース定義」と「自動生成コード」の2コミットがあるとき、前者さえしっかり確認できれば後者は流し読みでいい——そういう判断をコミット粒度で管理できる。GitHubのWebUIにはないgh-prism独自の機能だ。

diffの表示は dandavison/delta がインストールされていれば自動でシンタックスハイライトが効く。コメント入力・レビュー送信(Comment/Approve/Request Changes)・マージまでTUI上で完結する。

Rust + Ratatui + AIエージェントで作られた背景

作者はもともとAIエージェントに指示を出しながら自分で実装しようとしていたが、「実装速度がしょぼすぎて」途中からagentic codingに全面移行したと正直に書いている。最終的には「AIなしではできなかっただろうけど、AIだけでもできなかった」という感想が残った。

言語としてRustを選んだ理由も面白い。型があるほうがAIへの指示が正確になる、実行バイナリが軽くて速い、会社のRust勉強会で得た知識を使いたい——実に現実的な動機だ。TUIフレームワークは Ratatui を採用。文字の描画やカーソル位置のズレなどTUI特有の問題に随分と悩まされたようで、コメント入力部分は既存ライブラリがうまく合わず自前のテキストエディタコンポーネントを実装する羽目になっている。

バージョニングには CalVer を採用。「SemVerだといつまでも1.0.0に到達しなさそう」という判断は、アプリケーション開発者として非常に共感できる。

まとめ:AIレビュアー時代のターミナル環境整備に

gh-prismはAIが書いたコードのレビューを「ターミナルから出ずに、コミット単位で、効率的に」やりたいというニーズに対する一つの回答だ。Rust製でバイナリが軽く、gh CLI拡張なので既存ワークフローへの組み込みも容易。fzfとの連携やdeltaによるハイライトなど、Unix的な道具の組み合わせで拡張できる設計も好感が持てる。

まだドキュメントや機能は発展途上とのことだが、基本的なレビューフローはすでに完結している。ターミナル派のエンジニアなら一度試してみる価値は十分にある。詳細は GitHubリポジトリ と元記事で確認してほしい。