• #日記
  • #EDINET
  • #Chrome拡張
  • #Illustrator
  • #After Effects
  • #ExtendScript
  • #会計SaaS
daily-log

2026年3月25日の開発日記

朝6時、EDINET APIの403が返ってきて手が止まった。User-Agentを差し替えたら14年分の財務データが一気に流れ込んだ。昼はChrome拡張のUI設計と格闘し、夜はIllustratorのCOMレジストリを.regファイルで手動修復していた。3つのプロジェクトが並走した一日。

今日やったこと

1. EDINET API × 会計ソフト財務比較分析

EDINET DB APIを使って、クラウド会計大手2社とオンプレ大手2社の計4社の財務データをGoogleスプレッドシートに取得した。Windowsシェルの引数長制限でJSON書き込みが切れる問題にぶつかり、10行ずつのチャンク分割で回避。

売上が近い年度のPL実額比較から、粗利はほぼ同水準なのに販管費が2倍→営業利益に大差が出るSaaS vs オンプレの構造差が浮かび上がった。一人当たり売上高(RPE)の日米ベンチマーク比較SVGチャートも作成。

主な成果:

  • 4社14年分のPL/BS/CF + 四半期データをスプレッドシートに格納
  • RPE比較でオンプレ型がクラウド型の5倍という事実を可視化
  • 「SaaSがオンプレを駆逐した」は起きていない→市場拡大で棲み分けている構図を発見
  • APIレスポンスをローカルJSON保存する2段階方式でAPI呼び出し節約

詳細: EDINET API で会計ソフト4社の財務データを取得・比較した記録


2. 会計Chrome拡張:帳表×年度マトリクスUI大規模リファクタリング

3タブUI(連携明細・仕訳帳・残高試算表)を事業者単位の統合ビューに再構成し、さらに帳表×年度のマトリクスUIに進化させた。推移表エクスポート機能も新規追加。HTMLスクレイピングでBS/PLテーブルを取得し、1シートに縦結合する方式。

スプレッドシートの自動作成機能(URL未設定時にエクスポート実行で新規SS作成)も実装。Google Sheets APIのautoResizeDimensionsの既知バグにハマり、Codexに相談→3フェーズ分離を試すも失敗→データ計算方式で決着。

主な成果:

  • 帳表×年度マトリクスUI(1列目に帳表名、列に年度、チェックボックスで個別選択)
  • 推移表エクスポート(補助科目あり/なしの2バリアント)
  • スプレッドシート自動作成(drive.fileスコープ)
  • URL設定済み事業者を上にソート
  • Codexレビューで致命的指摘2件を修正

詳細: 会計Chrome拡張 - 帳表×年度マトリクスUIへの大規模リファクタリングと推移表エクスポート追加


3. 会計Chrome拡張:バグ修正とUI磨き込み

連携明細が3重に表示されるバグを修正。原因は3つのURL入力フィールドのautoSaveが同時にpopulateEntityServiceList()を呼び出し、async/awaitのインターリーブで3重にDOMに追加されていた。makeAsyncQueueで排他制御を入れ、純粋関数に分離。

列幅自動調整もデータの最大文字数から計算する方式に切り替え、全選択系チップのスタイル統一やBS/PL縦結合なども実施。

主な成果:

  • 連携明細3重表示バグの修正(排他制御 + 純粋関数分離)
  • calcColumnWidths純粋関数による列幅計算
  • chrome.tabs.create失敗時のガード追加
  • 全帳表・全年度・全選択のスタイル統一

詳細: 会計Chrome拡張:連携明細の重複表示バグ修正・列幅自動調整・UI統一


4. Illustrator/After Effects ExtendScript自動化

Illustrator MCPサーバーをビルドしてCOM接続を試みたが、Beta版がレジストリを全上書きしていて繋がらない。Betaをアンインストール→CLSIDが空→.regファイルで手動修復という泥臭い作業を経て接続成功。

MCPサーバーの限界を認識し、Claude CodeからVBScript→ExtendScript直接実行に切り替え。After Effectsでは148レイヤーの12秒シネマティックイントロを生成し、実際の動画素材にエフェクトをかけてMP4レンダリングまで完了。

主な成果:

  • IllustratorのCOMレジストリ修復手順を確立
  • MCPサーバーよりExtendScript直接実行が優れているという結論
  • After Effectsで148レイヤーのモーショングラフィックス生成
  • setTemporalEaseAtKeyの次元数問題の回避策を発見
  • layer.stretch > timeRemapというスローモーションの知見

詳細: Illustrator/After Effects ExtendScript自動化 - COM接続の罠とClaude Codeからの直接実行


今日の試行錯誤

#テーマ試したこと結果気づき
1EDINET API 403urllib デフォルトUA失敗Bot対策でブロックされていた
2EDINET API 403User-Agent差し替え成功APIキーではなくUAが原因
3SS書き込み文字化けgws CLIでJSON渡し失敗Windows cp932とシェル制限
4SS書き込みPythonスクリプト+チャンク分割成功10行ずつで制限回避
5autoResizeDimensions書式後にautoResize失敗Google既知バグ
6autoResize3フェーズ分離(Codex提案)失敗太字・背景色の幅計算が不正確
7列幅calcColumnWidths自前計算成功最大文字数×7px+padding
8Illustrator COMIllustrator.Application.29失敗Beta版がProgID上書き
9Illustrator COM.regファイルでCLSID修復成功Beta版アンインストールだけでは不十分
10AE COMGetObject("AfterEffects.Application")失敗AEはCOM非対応
11AE接続afterfx.exe -r jsx成功コマンドライン方式
12AE setTemporalEaseAtKey2要素配列失敗Scaleは常に3D
13AE スローモーションtimeRemap失敗outPoint自動延長されない
14AE スローモーションlayer.stretch = 333%成功stretchの方がシンプル

今日の学び

  • EDINET APIは1リクエストで14年分のPL/BS/CF全データが返る。効率的
  • Windowsのシェルにはコマンドライン長制限があり、大きいJSON渡しはチャンク分割が必須
  • Google Sheets autoResizeDimensionsはセル書式の影響を考慮しない既知バグ。自前計算が確実
  • async関数の同時呼び出しはawaitのインターリーブで予期しない結果になる。排他制御を忘れない
  • MCPサーバーはClaude Code環境では冗長。ExtendScript直接実行の方が速く制約もない
  • AEのsetTemporalEaseAtKeyは次元数に厳密。Position(Spatial)は1要素、Scale(3D)は3要素
  • layer.stretchはtimeRemapよりスローモーションの実装がシンプルで確実

明日やること

  • 会計拡張:推移表・残高試算表・仕訳帳の整合性チェック(合計行 = 子行の合計)実装
  • 会計拡張:帳表×年度マトリクスUIの実際のエクスポートテスト
  • After Effects:setTemporalEaseAtKeyのバグ根本原因調査

関連記事