トップ «前の日記(2026/06/04 (木) ) 最新 編集 RSS feed

HsbtDiary


2026/06/05 (金) [長年日記]

NHK 100分de名著 ディケンズ 大いなる遺産 を読んだ

これも積んだままだったので NHK の配信と並行しながら読んだ。この手の物語的な小説はあまりテンションを上げて読んだりしないのだけど、大いなる遺産はなぜか面白くてどんどん読んでしまった。

時代背景として、アサシンクリードシンジケートくらいの社会と、階級社会と成り上がりみたいなあたりが面白かったのかもしれない。


https://www.amazon.co.jp/dp/B0GX2ZV7DG

diff-review という claude command を使い始めた

claude の codex plugin が free プランだと動かなくなってしまったので、GitHub の copilot コマンドを使って、Gemini と Codex それぞれに HEAD と master との差分をレビューさせる claude command を作った。以下のテキストを .claude/commands/diff-review.md などとして保存すると /diff-review で呼び出せる。

---
description: master との差分を copilot 経由で最新の gemini pro と gpt codex にレビューさせる
---

`$ARGUMENTS` が空なら比較対象を `master...HEAD`、指定があればその範囲/ref を diff 対象とする。

まず対象ブランチ・差分の有無を確認する。現在のブランチが比較対象そのもの、または差分が無い場合はその旨を報告して終了する(copilot は実行しない)。

差分がある場合、**毎回 copilot で使えるモデル一覧を取得し、その時点で最新の gemini pro と gpt codex を動的に選ぶ**。モデル名はハードコードしない。以下を実行して 2 つのモデル ID を得る:

```bash
copilot --model gpt-5-mini --effort low -s --allow-all-tools \
  -p "Output ONLY the available model IDs, one per line, no bullets, no extra text." \
| ruby -e '
ids = STDIN.read.split("\n").map(&:strip).reject(&:empty?)
ver = ->(s){ s[/(\d+(?:\.\d+)?)/, 1].to_f }
gemini = ids.select { |i| i =~ /gemini/i && i =~ /pro/i }.max_by { |i| ver.(i) }
codex  = ids.select { |i| i =~ /gpt/i && i =~ /codex/i }.max_by { |i| ver.(i) }
abort "gemini pro model not found" unless gemini
abort "gpt codex model not found" unless codex
puts gemini
puts codex
'
``

1 行目が gemini pro、2 行目が gpt codex の最新モデル ID。取得に失敗したらフォールバックせず報告して止める。

得られた 2 つのモデル ID をそれぞれ `--model` に与え、以下 2 つのレビューコマンドを **1 つのメッセージ内で並列に** 実行する(`<MODEL>` は選定結果、`<diff範囲>` は上で決めた範囲に置換):

```bash
copilot --model <MODEL> --allow-all-tools \
  -p "<diff範囲> の差分 (git diff <diff範囲>) を日本語でコードレビューして。バグ・設計・可読性の観点で、重要度順に簡潔に指摘して"
``

`--allow-all-tools` は非対話モードで必須なので省略しない。各レビューは長時間かかることがあるため timeout は 300000ms 程度に設定する。

両モデルの出力が揃ったら、実際に使ったモデル ID を見出しにして(例「## gemini-3.1-pro-preview」)結果を分けて提示し、最後に両者の指摘が一致した重要な項目を 2-3 行でまとめる。

(`` のところはレンダリングの都合でダブルにしてるので実際に使う時はトリプルにしてください)

日本語で書いてるけど、内容自体は全部 claude に作らせた。ちょっと遅いのはしょうがないとして、ブランチで作業して最後の仕上げって時になかなか有用な気がする。特に両方のモデルが指摘してきた項目は大体の場合、本当にバグってことが多い気がしている。使うためには copilot コマンドを allow list に入れる必要がある。

しかし、この手の Agenting coding 向けの何か、スクリプトの時だとバンバン公開するのに、日本語になると「別にいいかな...」って気持ちになるのはなんだか面白い。