daily-log
2026年4月3日の開発日記
朝、Googleタスクの積み残しを4件片付けてから、CF精算表パイプラインの拡張に丸一日を費やした。借入金しか対応していなかったパイプラインを貸付金・資本政策まで広げ、バグを潰し、テストコードを組み、最後にnpmのセキュリティ対策まで手を伸ばした。
今日やったこと
1. CF精算表パイプラインの全面拡張
借入金専用だったCFWSパイプラインを全12論点(3級6 + 2級6)に対応させた。
主な成果:
gen_cfws_multi_year.pyのDUAL_ACCOUNTSを辞書形式に変更し、貸付金を追加- Excel命名規則を策定:
CF_{論点}_{ステップ}_{ステップ名}_{日時}.xlsx - 進捗マトリックスを「論点×ステップ」に整理(ステップはa/b/c)
- 資本政策Excel生成(3級=設立300万 / 2級=増資パターン)
- 全論点の取引モジュールに設立出資(取引No.1)を共通追加
- Excelファースト方針を確立(SSは確認用に後追い変換)
2. CFWSのバグ修正・テストコード整備
パイプラインを拡張するたびにExcelのcheck行が合わなくなり、バグを1つずつ潰した。
主な成果:
- 資本準備金がBS階層から脱落するバグを修正
- 年次推移表のcheck行がCFWSに混入するバグを修正
- 中間テーブルを正規化形式に統一(INDEX/MATCH複合キー)
- openpyxlの@マーク問題に対処(
INDEX()ラップで配列評価を強制) - PL科目名不一致バグを修正(受取利息 vs 受取利息及び受取配当金)
wb.save()直前にcheck=0の数値検証テストを追加
3. npmサプライチェーン攻撃「Shai-Hulud 2.0」対策
ログを眺めていたら「Shai-Hulud 2.0」の情報が目に飛び込んできた。正規パッケージのメンテナー認証を盗む手口で、npm auditでは検出できない。
主な成果:
- プロジェクトの影響チェック → 感染の兆候なし
~/.npmrcにminimum-release-age=4320をグローバル設定(公開3日以内のバージョンをブロック)
詳細: npmサプライチェーン攻撃 Shai-Hulud 2.0 への防御設定
今日の試行錯誤
| # | テーマ | 試したこと | 結果 | 気づき |
|---|---|---|---|---|
| 1 | 年次推移表の数式化 | 全勘定科目をSUMIFS数式で仕訳データから自動集計 | 断念 | 繰越利益剰余金の扱いが複雑すぎる。ハードコード版にリバート |
| 2 | SSエクスポートで数式保持 | SSからExcelにエクスポート | 失敗 | 数式は保持されない。Pythonで直接数式を生成するアプローチに変更 |
| 3 | check=0テスト(初版) | 構造チェックのみ(配分先があるか) | 不十分 | 数値の整合性は検証していなかった。Excelと同じ計算をPythonでやればいいだけ |
| 4 | check=0テスト(修正版) | DUAL/EQUITY科目にalloc = hで検証 | トートロジー | 「常にcheck=0」になる偽テスト。実際の中間テーブル値を計算すべき |
| 5 | 中間テーブル参照 | 全調整列にINDEX/MATCH数式を書く | バグ | N列(株式発行)がTPL_返済予定表を参照してしまう。テーブルに存在するペアだけに書くよう修正 |
| 6 | @マーク問題 | openpyxlで通常の数式として書き込み | Excel 365が@を付加 | INDEX(K列&J列,)でラップすると配列評価が強制され@が消える |
| 7 | minimum-release-age | pnpm-workspace.yamlにプロジェクトレベルで設定 | 冗長 | グローバル~/.npmrcに移動して全プロジェクトで有効化 |
今日の学び
- check=0テストは「構造チェック」ではなく「数値検証」で書かないと意味がない。Excel上の数式と同じ計算をコードで再現するのが正解
- openpyxlで複合キーMATCH(
A&B)を書くとExcel 365が暗黙的交差演算子@を付けてくる。INDEX()でラップすれば回避できる - 中間テーブルは正規化形式(年度×勘定科目×CF調整列名→金額)に統一すると、全テーブルで同じパターンのINDEX/MATCH数式が使い回せる
minimum-release-ageはサプライチェーン攻撃への手軽で効果的な防御策
明日やること
- 短期借入金・短期貸付金の取引モジュール作成(決算整理仕訳=未収未払利息の計上を含む)
- 短期借入金・貸付金の年次推移表 → CFWS生成
- Codex指摘事項の反映(DUAL_ACCOUNTSへの短期貸付金追加)