教材サイトのデューデリジェンス残件を修正:7件を直したあと、148件の所見から公開教材の計算の正しさ13件へ
教材サイトのDD残件を直したら、所見はまだ148件あった
引き継ぎファイルを Claude Code に渡して、教材サイトのデューデリジェンス(以下 DD)の残件修正を再開した。 残っていたのは、DD の所見のうち7件である。
7件すべてをコミットした報告を読んで、私は「一応全部クリアしたんですか?」と聞き返した。 返ってきた答えには、148件という数が入っていた。
3つの束を読み取り専用で並行に調べる
残件は、v2 の計算、画面、スクリプトの3束に分かれていた。 それぞれの調査を、読み取り専用のサブエージェント(opus)3体に並行で出してもらった。
調査結果は、計画に入れる前にコードで裏を取ってもらった。 確かめた主張は次の2つで、どちらも事実だった。
- スマホ用の描画(290〜331行)に、問題文と構文カードを出す部分が無い
- 変換処理が
'mobile'決め打ちになっている
計画書を書いてもらい、Codex のレビューに出した。
指摘は2件で、どちらも妥当だったので反映した。
F-12 は --dry-run を優先し、判断3-B は範囲を書き直した。
再レビューでは、resume --last が別セッションの Codex スレッドを掴んで失敗した。
新規の exec で再レビューをかけ直して、通過した。
判断が要る3件は、計画書と一緒にブラウザのフォームで出てきた。 3件とも推奨どおりに答え、自由記述は書かなかった。
決定は計画書と progress.md に書き込んでもらい、実装はサブエージェント3体に並行で任せた。 サブエージェントには、コミットも dev サーバーやブラウザの操作もさせていない。 テストを先に書いて失敗を確かめてから直す、という指示で出した。
赤表示は再読み込みで一度消えた
v2 の束は、Claude Code に Chrome で表示を確かめてもらった。 初期状態ではバナーが出ず、科目はプルダウンの4択で、ここは正常だった。
建物の取得日を期首より前にすると、入力エラーのバナーが出て、取得日のセルが赤くなった。 ただ、科目名のプルダウンだけ赤表示(ng)が付いておらず、コードを読ませた。
再読み込みした直後は、取得日の欄の赤表示も消えていた。 SSR とハイドレーションの食い違いを疑い、コンソールを見た。 そのあとで、赤表示が出たのを確かめた。 最後に「初期値に戻す」でバナーが消えることまで見てから、コミットに進んだ。
コミット時には Codex のゲートが走った。
テストケースを足してから、v2 の束をコミットした(7f757e9f8)。
スマホに問題文が出た
画面の束は、差分が計画どおりかを読ませてから表示を確かめた。 公的機関の講義テキストの図は、拡大(ライトボックス)すると1枚だけ開く。 閉じたあとの状態と「全文を読む」の図も確かめた。 スライド表示と全文表示は、どちらも正常だった。
会計教材のスライド画像を PC で見たあと、390x844 のエミュレーションでスマホの表示に切り替えた。 調査で裏を取ったとおり、問題文と構文カードが出ていなかった表示である。 今度はスマホにも問題文が出ていて、拡大と Excel の構文カードも確かめた。
エミュレーションを解除してから、画面の束をコミットした。
スクリプトの束は3つに分けてコミットした
スクリプトの束は、F-01、F-04 系、F-12 の3つに分けてコミットした。 ここは素直には通らなかった。
- 書きかけの行が残ったので、書き直してもらった
- 戻り値が
undefinedではなくnullだったので、比較を直してテストを足した - 改行が全行 CRLF でそろっていること(リポジトリには LF で入る)を確かめ、コミットし直した
F-12 では、Codex のゲートが指摘を出した。
指摘は、わざと - を渡さないと起きないものだった。
Claude Code の判定は medium で、それでも削除の安全装置なので、1行足して直した。
進捗と計画書の訂正を書き込む段階で、別セッションのコミットとぶつかった。 待ってからやり直してもらった。
これで7件ともコミットが済んだ。 push と本番デプロイは、まだしていない。
「もう終わったんですか?」
報告を読んで、私は聞いた。
他にもうやることってないんですか?もう終わったんですか?
答えは「いいえ」だった。 DD の所見は全部で148件(high 16、medium 69、low 63)ある。 終わったのは、DD 報告のロードマップのうち「今すぐ」に当たる2段だけだった。 今日の7件の完了は、そのロードマップにも書き込んでもらった。
次に何から手を付けるかは、私が決めた。
公開教材の計算の正しさあたりから言ったらいいんじゃないですかね。進めてください。
これを受けて、T8(公開教材の計算と数式エンジンの正しさ)の残りに着手してもらった。
T8 の調査:公開中の島は38シーンとも問題0件
T8 も、まず読み取りだけで今のコードを調べてもらった。 調べる担当は3つである。
- 数式エンジン(A-03、A-06、A-C01、A-C02、A-C03、A-C05)。黙って別の値を出す箇所を止めると、今の公開シーンのどこで表示が変わるかを数える
- 島と表示
- 会計教材
島と表示の調査では、公開中の島に今のところ実害が無かった(38シーンとも問題0件)。
会計教材の調査は、今日直したばかりの v2 に穴を見つけてきた。 検出に漏れが2つあった(設立日が期首より前、初回返済日が借入日より前)。 どちらも、エラーを出さないまま残高を狂わせる。
3つの調査がそろってから計画書を書いてもらい、Codex のレビューを通した。 判断が要る4件にも、フォームで答えた。
実装は、4つの束をサブエージェント4体で並行して進めてもらった。
数式エンジンは、判断1のとおり実装の前に実物の Excel で SUMIFS の条件を測る。
測るのは空文字、"="、"<>"、空のセル、TRUE で、結果を excel-facts.md に記録し、その値に合わせて直す。
4つの束を確かめてコミットした
束W(損益の滝グラフの端数)は、表示で足し算を確かめた。 s1 の数字はすべて足し算が合い、注記も重なっていなかった。 s2 も小数1桁で足し算が合っていた(109.2−26.9=82.3)。
ところがコミットの段階で、Codex のゲートが high の指摘を出した。 端数を寄せた棒の符号が逆になる、という内容である。 まずコードを読むところから始めてもらった。
続いて、step1 が今までどおり59文出ることと step2 を確かめた。 データをわざと壊したときのエラー表示も見て、データは控えから元に戻した(git の差分なし)。 島にも問題は無かった。
束V では、v2 に入れた新しい入力エラー(設立日、初回返済日、最終期末より後)を確かめた。 3つのセルが赤になり、バナーにエラーが3件出た。 T8 の調査で見つかった v2 の検出漏れ2つは、ここで入力エラーとして画面に出るようになった。
v1 の借入シートは、v1 の数字が変わっていないことを確かめるために、本番と手元で比べてもらった。 結果は1文字も違わなかった。 束V はローン、v2、v1 の3つに分けてコミットした。
残りの束E(数式エンジン)と束S(島とフィルター)は、テストを流してからコミットした。 途中の小さな漏れは、Claude Code が自分の判定を medium としつつ、1行で直した。
T8 の残り13件を直し、所見ごとに main にコミットした。 画面再現の回帰テストは、21区間とも変化なしで通った。
学びメモ
- サブエージェントの調査結果は、コードと突き合わせてから計画書に入れた。スマホ描画の欠落も
'mobile'決め打ちも、そこで事実と確かめた - 7件の完了報告を読んだあとで聞き直して、初めて所見の総数148件と、終わったのが「今すぐ」の2段だけだと分かった
- 今日直した v2 の検出に、同じ日の T8 調査で漏れが2つ見つかった。束V で入力エラーとして画面に出るようにした
- Codex が付けた重要度は、Claude Code が自分で判定し直していた。F-12 は medium と判定したうえで、削除の安全装置なので1行足して直した
残っていること
- DD の7件と T8 の13件の push と本番デプロイ
- DD 報告のロードマップで、まだ手を付けていない段