綴Photo の勉強ノートに戻る
開発記録2026.06.17

レビューの5指摘を上から順に直さなかった — 実害で並べ替えて、判断が要るものは残した

コードレビューDjango綴Photo

Codex のフルレビューを別のAI(Claude)で再検証して、どれを今直すか仕分けた回の記録です。勉強のため。

レビューが5件来た。指摘の一覧なので、つい上から順に全部つぶしたくなります。今回はそうせず、着手する前に並べ替えた。

レビューを「全部直すTODO」にしない

並べ替えた軸は2つ。①今この瞬間の実害の大きさ ②自分(プロダクトの方針)の判断が要るか。

「最優先(P1)」とラベルが付いた2件を、ラベルのままでなく実コードで測り直した。1件は、漏れても読めるのは自分のデータだけ(他人のデータは構造上読めない作りになっています)。もう1件は、その画面がまだ一般公開していない実験用の画面(ユーザーが普通には辿り着かない /lab のような場所)にあります。

漏れても読めるのはサーバ DB の owner 自分の行。/lab はルートで、テーブルではない。ラベル(最悪ケース)今この経路P1 データ露出公開面でデータが読まれる最悪自分の行だけ読めるサーバ DB は owner で絞る他人の行はクエリに載らないP1 その画面の不具合ユーザーが普通に踏む最悪/lab は実験ルート一般公開の入口には無い普通には辿り着かない公開前マスト。今日いちばんに直すものではない。

作りかけの機能をレビューに掛けると、「バグ」と「未決」が混ざる

5件のうちの1件は「☆を外してもリロードすると戻る」やつだった。

同じ☆が3箇所に見える。正本は未決。DELETE は交差で、置き場ではない。画面のメモリ開いている間だけ☆を外したリロードで戻る保存しないDELETE は呼んでいないPhoto.is_favoriteサーバ DB の列写真1枚に1フラグまだ true のまま閉じても残る正本かは未決FavoriteMemoryサーバ DB の行写真×そのときの言葉行は残っている閉じても残る正本かは未決画面では消えている。サーバの2箇所には届いていない。

配線を入れて、症状は直った。

ただ、その奥に「自分が決めないと進めない問い」があって、そこは保留にした。どっちを本物とするかを決めていない。

これは技術というよりプロダクトの判断なので、配線までで止めて、正本決めは自分の宿題として残した。

ここで気づいたことがある。まだ作り切っていない機能をレビューに掛けると、指摘の列に「バグ」と「まだ決めていないこと」が並んで出てきます。前者は直せばいいです。後者は直す前に決めることがあって、決めないまま手を動かすと、後で戻す羽目になります。だから軸②「自分の判断が要るか」で分ける必要があった。

テストが回せない日は、緑の代わりに差分を読む

サーバ側のテストが、今日は回せなかった(Docker を落としていた)。実装は別のAIに書いてもらっている。普段はテストが緑になるのを見て確かめます。今日はそれができない。

しょうがないので差分を1行ずつ読んだ。すると、書いてもらったテストが django.utils.timezone.utc を使っていた。これは Django 5.0 で消えたAPIで、うちは 6.0.5。回っていれば緑どころかエラーで止まっていたやつだった。緑を見られないので読むしかなくて、読んだから見つかった。

python
# 旧: 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月時点の自分の理解で書いています。仕様や認識が変わってる可能性があります。