Codex のフルレビューを別のAI(Claude)で再検証して、どれを今直すか仕分けた回の記録です。勉強のため。
レビューが5件来た。指摘の一覧なので、つい上から順に全部つぶしたくなります。今回はそうせず、着手する前に並べ替えた。
レビューを「全部直すTODO」にしない
並べ替えた軸は2つ。①今この瞬間の実害の大きさ ②自分(プロダクトの方針)の判断が要るか。
「最優先(P1)」とラベルが付いた2件を、ラベルのままでなく実コードで測り直した。1件は、漏れても読めるのは自分のデータだけ(他人のデータは構造上読めない作りになっています)。もう1件は、その画面がまだ一般公開していない実験用の画面(ユーザーが普通には辿り着かない /lab のような場所)にあります。
作りかけの機能をレビューに掛けると、「バグ」と「未決」が混ざる
5件のうちの1件は「☆を外してもリロードすると戻る」やつだった。
配線を入れて、症状は直った。
ただ、その奥に「自分が決めないと進めない問い」があって、そこは保留にした。どっちを本物とするかを決めていない。
これは技術というよりプロダクトの判断なので、配線までで止めて、正本決めは自分の宿題として残した。
ここで気づいたことがある。まだ作り切っていない機能をレビューに掛けると、指摘の列に「バグ」と「まだ決めていないこと」が並んで出てきます。前者は直せばいいです。後者は直す前に決めることがあって、決めないまま手を動かすと、後で戻す羽目になります。だから軸②「自分の判断が要るか」で分ける必要があった。
テストが回せない日は、緑の代わりに差分を読む
サーバ側のテストが、今日は回せなかった(Docker を落としていた)。実装は別のAIに書いてもらっている。普段はテストが緑になるのを見て確かめます。今日はそれができない。
しょうがないので差分を1行ずつ読んだ。すると、書いてもらったテストが django.utils.timezone.utc を使っていた。これは Django 5.0 で消えたAPIで、うちは 6.0.5。回っていれば緑どころかエラーで止まっていたやつだった。緑を見られないので読むしかなくて、読んだから見つかった。
# 旧: Django 6 では消えた名前を踏んでいた(回っていれば AttributeError)
taken = tz.datetime(2024, 3, 15, 10, 0, 0, tzinfo=tz.utc)
# 新: 標準ライブラリの datetime / timezone.utc に置き換えてもらった
from datetime import datetime, timezone
taken = datetime(2024, 3, 15, 10, 0, 0, tzinfo=timezone.utc)ついでに同じテストが「値が null じゃない」ことしか見ていなかったので、テストの合否を決める一行(assertion)を「撮影日と一致する」に変えてもらった。回せば緑になるテストと、中身が正しいか確かめるテストは別物で、後者にしておかないと、間違った値が返ってきても素通りします。
サーバを起動したら走らせる前提のまま今日は止めたので、ここは緑をまだ自分の目で見ていない。差分を読んだ確からしさと、テストが通った確からしさは違うから、それは正直に「未確認」のままにしている。
この記事は2026年6月時点の自分の理解で書いています。仕様や認識が変わってる可能性があります。