• #日記
  • #CF精算表
  • #Excel自動化
  • #openpyxl
  • #npm
  • #セキュリティ
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は確認用に後追い変換)

詳細: CF精算表パイプラインを全12論点に拡張した


2. CFWSのバグ修正・テストコード整備

パイプラインを拡張するたびにExcelのcheck行が合わなくなり、バグを1つずつ潰した。

主な成果:

  • 資本準備金がBS階層から脱落するバグを修正
  • 年次推移表のcheck行がCFWSに混入するバグを修正
  • 中間テーブルを正規化形式に統一(INDEX/MATCH複合キー)
  • openpyxlの@マーク問題に対処(INDEX()ラップで配列評価を強制)
  • PL科目名不一致バグを修正(受取利息 vs 受取利息及び受取配当金)
  • wb.save()直前にcheck=0の数値検証テストを追加

詳細: CF精算表のバグ修正とテストコード整備


3. npmサプライチェーン攻撃「Shai-Hulud 2.0」対策

ログを眺めていたら「Shai-Hulud 2.0」の情報が目に飛び込んできた。正規パッケージのメンテナー認証を盗む手口で、npm auditでは検出できない。

主な成果:

  • プロジェクトの影響チェック → 感染の兆候なし
  • ~/.npmrcminimum-release-age=4320をグローバル設定(公開3日以内のバージョンをブロック)

詳細: npmサプライチェーン攻撃 Shai-Hulud 2.0 への防御設定


今日の試行錯誤

#テーマ試したこと結果気づき
1年次推移表の数式化全勘定科目をSUMIFS数式で仕訳データから自動集計断念繰越利益剰余金の扱いが複雑すぎる。ハードコード版にリバート
2SSエクスポートで数式保持SSからExcelにエクスポート失敗数式は保持されない。Pythonで直接数式を生成するアプローチに変更
3check=0テスト(初版)構造チェックのみ(配分先があるか)不十分数値の整合性は検証していなかった。Excelと同じ計算をPythonでやればいいだけ
4check=0テスト(修正版)DUAL/EQUITY科目にalloc = hで検証トートロジー「常にcheck=0」になる偽テスト。実際の中間テーブル値を計算すべき
5中間テーブル参照全調整列にINDEX/MATCH数式を書くバグN列(株式発行)がTPL_返済予定表を参照してしまう。テーブルに存在するペアだけに書くよう修正
6@マーク問題openpyxlで通常の数式として書き込みExcel 365が@を付加INDEX(K列&J列,)でラップすると配列評価が強制され@が消える
7minimum-release-agepnpm-workspace.yamlにプロジェクトレベルで設定冗長グローバル~/.npmrcに移動して全プロジェクトで有効化

今日の学び

  • check=0テストは「構造チェック」ではなく「数値検証」で書かないと意味がない。Excel上の数式と同じ計算をコードで再現するのが正解
  • openpyxlで複合キーMATCH(A&B)を書くとExcel 365が暗黙的交差演算子@を付けてくる。INDEX()でラップすれば回避できる
  • 中間テーブルは正規化形式(年度×勘定科目×CF調整列名→金額)に統一すると、全テーブルで同じパターンのINDEX/MATCH数式が使い回せる
  • minimum-release-ageはサプライチェーン攻撃への手軽で効果的な防御策

明日やること

  • 短期借入金・短期貸付金の取引モジュール作成(決算整理仕訳=未収未払利息の計上を含む)
  • 短期借入金・貸付金の年次推移表 → CFWS生成
  • Codex指摘事項の反映(DUAL_ACCOUNTSへの短期貸付金追加)

関連記事