• #日記
  • #CF精算表
  • #法人税
  • #Chrome拡張
  • #AutoHotkey
  • #教材制作
daily-log

2026年4月7日の開発日記

朝から法人税モジュールのPythonファイルを開き、夜にはStream Deckのボタンを押して音声入力のトグルが動くのを確認していた。その間にChrome拡張のストレージ移行を済ませ、教材テキスト1,469行を書き上げ、ディレクトリを連番でリネームした。手を動かし続けた一日。

今日やったこと

1. CF教材の法人税モジュール実装・統合・リファクタリング

法人税ライフサイクルモジュール(CF_306)を新規実装し、総合演習(CF_300)と運転資本(CF_304)の両パイプラインに統合した。統合した瞬間CFWSの数字が合わず、仕訳シートの行数を数えて二重計上バグに気づいた。原因は304の運転資本Excelが既に法人税仕訳を含んでいたこと。exclude_taxフラグで解決。

その後、CFWS営業CF小計の調整列を日本基準の様式2に並び替え、法人税等の支払額を小計外に正しく配置し、取引_税金シートをINDEX/MATCHの数式化まで持っていった。最後に3ファイルに散在していたbuild_tax_journalsをmf_journal.pyに統合する4タスクのリファクタリングを完了。Codex(GPT-5.4)が総合演習版のスコープ漏れを指摘してくれたのが効いた。

主な成果:

  • CF_306法人税ライフサイクルモジュール新規実装
  • CF_300総合演習・CF_304運転資本への法人税統合
  • 二重計上バグ修正、CFWS様式2準拠
  • 税金モジュールのリファクタリング(重複3ファイル→1関数に統合)

詳細: CF精算表: 法人税ライフサイクルモジュールの実装・統合・リファクタリング


2. Chrome拡張のストレージセキュリティ改善

sessionStorageが他の拡張のcontent scriptから読める問題を発見。会計ソフトA連携のChrome拡張で、スプレッドシートIDなどを保存していた箇所をchrome.storage.localに全面移行した。4ファイルの書き換え、同期→非同期の変換、テストモック更新を経て135テスト全パス。

あわせて、約1.6GBのTwitterアーカイブ(11,669件のツイート)をSQLiteに取り込み、年度別サマリーを生成した。

主な成果:

  • sessionStorage → chrome.storage.local全面移行(135テストパス)
  • デッドコード(setExportQueue)の発見
  • Twitterアーカイブ11,669件のSQLite化

詳細: Chrome拡張のsessionStorage脱却とTwitterアーカイブのSQLite化


3. CF教材テキスト制作とプロジェクト構造整備

参考書のSQLiteデータベースから421ページ分のCF計算書データを抽出し、4ファイル・計1,469行のチャプター解説ドラフトを生成した。Codexレビュー2回で致命的指摘4件(会社設定の具体化、難易度順の見直し、中間演習の追加等)を修正。ティーチングガイドをCFWS中心のインクリメンタル方式に全面改訂した。

さらに、ドキュメント4ファイルの旧シート名(TPL_→取引_)を更新し、貸付金と借入金をディレクトリ分離、全7ディレクトリを連番方式(ライフサイクル_01_株主資本〜_07_総合演習)にリネーム。スクリプト8本・ドキュメント6本の参照を一括更新した。会計基準JSONデータ(5基準・31条文)も作成。

主な成果:

  • チャプター解説4ファイル1,469行のドラフト完成
  • ディレクトリ連番リネーム(7本)、スクリプト・ドキュメント14本の参照更新
  • 会計基準JSON(財規113-115条、会社法445条、連結CF作成基準)

詳細: CF教材テキスト制作とプロジェクト構造整備


4. Stream Deck × AutoHotkeyで音声入力トグル

Claude Codeの音声入力(スペースキー長押し)をStream Deckのボタン1回で開始/停止する仕組みを実装。最初はSend "{Space down}"を1回送るだけで試したがキーリピートが発生せず失敗。ループで50msごとにSpace downを送り続け、状態ファイルの有無でトグルする方式に変更して成功。ペイン間の自動切り替え(他ペインの状態ファイルを先に消す排他制御)も追加した。

主な成果:

  • スペースキー長押しトグルの実装
  • 4分割画面のペイン間自動切り替え

詳細: Stream Deck × AutoHotkeyでClaude Codeの音声入力をトグル化する


今日の試行錯誤

#テーマ試したこと結果気づき
1CF_300法人税統合総合演習に法人税仕訳を追加金額が二重304の運転資本Excelに既に法人税仕訳が入っていた
2二重計上修正filter_journalsにexclude_taxオプション追加成功入力データの前提確認が先
3未払法人税等計上日と支払日を同期間に設定BS残高が0決算日12/31計上、翌年2/28支払に修正して解決
4CFWS行順序BS由来/PL由来を分けて出力列と行が不一致adjustmentsの順序のまま1ループで出力に変更
5Space down送信Send "{Space down}"を1回キーリピートせずOSのキーリピートは物理キー固有。ソフトウェアはループが必要
6インタラクティブシミュレータPhase 0-2を実装しUIまで完成ユーザーが全revert先にイメージを共有すべきだった
7Codexレビュー税金リファクタリング計画をレビュー総合演習版の漏れ発見スコープの抜け漏れを外部レビューが拾う

今日の学び

  • 二重計上は仕訳シートの行数を数えた瞬間に気づいた。「あ、倍ある」と思ったら入力データの前提を疑う
  • CF様式2の並び順(非資金損益→営業外損益→運転資本増減)はソート関数で制御すると後から別論点を追加しても崩れない
  • sessionStorageとchrome.storage.localはセキュリティモデルが根本的に違う。拡張開発では最初からchrome.storage.localを使うべき
  • AutoHotkeyのSend "{Space down}"はキーリピートを再現しない。物理キーの長押しとソフトウェアのキーイベントは別物
  • インタラクティブUIを作る前にスクリーンショットやモックアップでイメージを共有する方が手戻りが少ない

関連記事