2026年4月14日の開発日記
朝6時からCF精算表のデバッグに取りかかり、10セッションを費やして固定資産応用と株主資本応用のパイプラインを通した。SUMIFSの数式が合わない原因を一つずつ剥がしていくと、符号規則の二重実装という根の深い問題が顔を出した。夕方にはSearch Consoleの404リダイレクト修正も片付けた。
今日のタイムライン

今日やったこと
1. CF精算表 固定資産応用(CF_202)のデバッグ
前日の積み残しだったCFWS中間テーブルのSUMIFS不一致に取り組んだ。イベント名の完全一致が複合イベント(減価償却+売却等)を拾えない問題をイベント分離で解決。さらに手付金がSUMIFSで資産取得支出に混入する問題、残存年数計算バグ、建設仮勘定の符号二重反転も修正した。verify_checksを厳格化したら18件の不一致が噴き出し、row_defsとcomputed_valuesの二重実装問題が露呈。圧縮積立金のCFWS配分が根本的に壊れていることが判明し、ユーザーの一言「アンダースコア区切りの科目名を仕訳側で直接使え」で解決方針が決まった。
主な成果:
- SUMIFS不一致の根本原因特定と修正
- characterization test作成(COM評価値をgoldenデータとしてJSON保存、6テスト全パス)
- verify_cfws_excel.pyにサマリーCFWS検証を追加
- 圧縮積立金問題の解決計画をCodexレビュー3回で策定
2. CF精算表 株主資本応用(CF_205)の実装
計画策定からStep a→b→cパイプライン構築まで一気に進めた。配当金支払額の逆算ロジック、利益準備金のCFWS配分、繰越利益剰余金hidden行の追加が核心。運転資本取引を組み込んで当期純利益を出すことで配当に根拠を持たせた。サマリーCFWSの営業CF集計範囲バグ(SUM(C8:C8)→SUM(C7:C8))も修正。
主な成果:
- CF_205のStep a/b/c全パイプライン完走(check=0 全5年度OK)
- 運転資本+税金を統合して現実的なP/Lを生成
- サマリーCFWS修正、IBフォーマット(GL1-GL8グレーグラデーション)適用
3. Codex(GPT-5.4)レビュー駆動の計画策定
CF_205は5回、CF_202リファクタリングは4回、CFドキュメント統合は2回、圧縮積立金計画は3回のレビューサイクルを回した。致命的指摘を段階的にゼロに収束させる手法が定着した。contra-equity符号問題、v13フォーマット移管漏れ、registry化の提案など、人間が見落としがちな設計ミスをCodexが拾ってくれた。
主な成果:
- 4つの計画書すべてでCodex致命的指摘ゼロを達成
- CFドキュメント統合を実行完了(-504行/+403行、5ファイル→3ファイル)
- 3600行スクリプトのリファクタリング計画v5確定
4. Search Console 404リダイレクト一括修正
3月末に設定したリダイレクトの効果を2週間ぶりに確認。Chrome DevTools MCPでSearch Consoleを開き、404が329件あることを発見。CSVを全件分析し、generate-redirects.mjsのslugベースpathをdate-prefix付きに修正、トレイリングスラッシュ対応を追加。Cloudflare Pagesの_redirects上限2,000ルール制限に引っかかったが、優先ルールを先頭に配置して解決。329件中248件(75%)をカバーした。
主な成果:
- 329件の404 URLを5パターンに分類
- リダイレクトルール生成スクリプトを3回修正
- 2,000ルール制限を優先度ソートで回避
- デプロイ後に301リダイレクト確認済み
詳細: Search Console 404リダイレクト修正
今日の試行錯誤
| # | テーマ | 試したこと | 結果 | 気づき |
|---|---|---|---|---|
| 1 | SUMIFS不一致 | イベント名の完全一致で複合イベントを拾う | 失敗 | "売却"は"減価償却+売却"に一致しない |
| 2 | SUMIFS不一致 | 複合イベントを個別行に分離 | 成功 | SUMIFSフレンドリーな粒度にデータを正規化 |
| 3 | 手付金混入 | SUMIFSの勘定科目フィルタ | 失敗 | 手付金もB列=機械装置Bなのでフィルタに引っかかる |
| 4 | 手付金混入 | イベント名で手付金を除外するSUMIFS条件追加 | 成功 | "<>手付金"の追加条件 |
| 5 | 符号問題 | row_defsの*-1を個別修正 | 部分的 | 7箇所修正したがcomputed_valuesとの乖離が残る |
| 6 | verify厳格化 | alloc=hをcomputed_valuesベースに変更 | 18件NG発覚 | 二重実装の根本問題が露呈 |
| 7 | 圧縮積立金 | SKIP_NAMESでBS行から除外 | 失敗 | D/F列の年次推移表参照SUMIFSが拾い続ける |
| 8 | 圧縮積立金 | 勘定科目名を繰越利益剰余金_圧縮積立金に変更 | 成功 | 仕訳側で勘定科目として使えばSUMIFSが自然に解決 |
| 9 | _redirects上限 | 4,309ルールを全出力 | 失敗 | Cloudflare Pagesは2,000ルールまで |
| 10 | _redirects上限 | 優先ルールを先頭に配置 | 成功 | 404 CSVのURLを優先枠に入れて2,000行以内に |
今日の学び
- SUMIFSで集計するデータは、集計単位(イベント名等)を正規化しておかないと複合条件でハマる
- row_defs(Excel数式)とcomputed_values(Python検証)の二重実装は技術的負債。単一ソース化が急務
- Codexレビューは「致命的な点だけ指摘しろ」の縛りで的確な指摘が返る。5回サイクルで収束するパターンが見えた
- Cloudflare Pagesの_redirectsは2,000ルール上限。超過分は黙って無視される
- 勘定科目設計は仕訳側で決めるのが正道。Python側の逆算で補うと別の場所が壊れる
明日やること
- CF_202 圧縮積立金CFWS配分:Codexレビュー済み計画に沿って実装
- CF_202 建物除却の中間テーブル修正(2026年度の±2,090,000)
- CF_205 株主資本応用の追加要望(引き継ぎ資料 memo/2026-04-14/cf205-session-handoff-2.md)
- CF_202 リファクタリング実装開始(テストファーストで)