[{"data":1,"prerenderedAt":567},["ShallowReactive",2],{"content-/2026-03-25-diary":3,"all-pages-for-dir":565,"og-image-/2026-03-25-diary":566},{"id":4,"title":5,"body":6,"category":545,"description":546,"extension":547,"meta":548,"navigation":492,"path":549,"project_name":550,"published":551,"publishedAt":552,"seo":553,"stem":554,"tags":555,"todo":563,"updatedAt":563,"__hash__":564},"pages/2026-03/2026-03-25/diary-2026-03-25.md","2026年3月25日の開発日記 - EDINET API財務比較・会計Chrome拡張マトリクスUI・Adobe ExtendScript自動化",{"type":7,"value":8,"toc":530},"minimark",[9,14,18,22,27,30,33,39,55,66,69,73,76,84,88,105,113,115,119,122,125,129,143,151,153,157,160,163,167,184,192,194,197,448,450,453,476,478,481,507,509,512],[10,11,13],"h1",{"id":12},"_2026年3月25日の開発日記","2026年3月25日の開発日記",[15,16,17],"p",{},"朝6時、EDINET APIの403が返ってきて手が止まった。User-Agentを差し替えたら14年分の財務データが一気に流れ込んだ。昼はChrome拡張のUI設計と格闘し、夜はIllustratorのCOMレジストリを.regファイルで手動修復していた。3つのプロジェクトが並走した一日。",[19,20,21],"h2",{"id":21},"今日やったこと",[23,24,26],"h3",{"id":25},"_1-edinet-api-会計ソフト財務比較分析","1. EDINET API × 会計ソフト財務比較分析",[15,28,29],{},"EDINET DB APIを使って、クラウド会計大手2社とオンプレ大手2社の計4社の財務データをGoogleスプレッドシートに取得した。Windowsシェルの引数長制限でJSON書き込みが切れる問題にぶつかり、10行ずつのチャンク分割で回避。",[15,31,32],{},"売上が近い年度のPL実額比較から、粗利はほぼ同水準なのに販管費が2倍→営業利益に大差が出るSaaS vs オンプレの構造差が浮かび上がった。一人当たり売上高(RPE)の日米ベンチマーク比較SVGチャートも作成。",[15,34,35],{},[36,37,38],"strong",{},"主な成果:",[40,41,42,46,49,52],"ul",{},[43,44,45],"li",{},"4社14年分のPL/BS/CF + 四半期データをスプレッドシートに格納",[43,47,48],{},"RPE比較でオンプレ型がクラウド型の5倍という事実を可視化",[43,50,51],{},"「SaaSがオンプレを駆逐した」は起きていない→市場拡大で棲み分けている構図を発見",[43,53,54],{},"APIレスポンスをローカルJSON保存する2段階方式でAPI呼び出し節約",[15,56,57,60,61],{},[36,58,59],{},"詳細:"," ",[62,63,65],"a",{"href":64},"/edinet-api-accounting-sw-comparison","EDINET API で会計ソフト4社の財務データを取得・比較した記録",[67,68],"hr",{},[23,70,72],{"id":71},"_2-会計chrome拡張帳表年度マトリクスui大規模リファクタリング","2. 会計Chrome拡張：帳表×年度マトリクスUI大規模リファクタリング",[15,74,75],{},"3タブUI（連携明細・仕訳帳・残高試算表）を事業者単位の統合ビューに再構成し、さらに帳表×年度のマトリクスUIに進化させた。推移表エクスポート機能も新規追加。HTMLスクレイピングでBS/PLテーブルを取得し、1シートに縦結合する方式。",[15,77,78,79,83],{},"スプレッドシートの自動作成機能（URL未設定時にエクスポート実行で新規SS作成）も実装。Google Sheets APIの",[80,81,82],"code",{},"autoResizeDimensions","の既知バグにハマり、Codexに相談→3フェーズ分離を試すも失敗→データ計算方式で決着。",[15,85,86],{},[36,87,38],{},[40,89,90,93,96,99,102],{},[43,91,92],{},"帳表×年度マトリクスUI（1列目に帳表名、列に年度、チェックボックスで個別選択）",[43,94,95],{},"推移表エクスポート（補助科目あり/なしの2バリアント）",[43,97,98],{},"スプレッドシート自動作成（drive.fileスコープ）",[43,100,101],{},"URL設定済み事業者を上にソート",[43,103,104],{},"Codexレビューで致命的指摘2件を修正",[15,106,107,60,109],{},[36,108,59],{},[62,110,112],{"href":111},"/mf-extension-matrix-ui-refactoring","会計Chrome拡張 - 帳表×年度マトリクスUIへの大規模リファクタリングと推移表エクスポート追加",[67,114],{},[23,116,118],{"id":117},"_3-会計chrome拡張バグ修正とui磨き込み","3. 会計Chrome拡張：バグ修正とUI磨き込み",[15,120,121],{},"連携明細が3重に表示されるバグを修正。原因は3つのURL入力フィールドのautoSaveが同時にpopulateEntityServiceList()を呼び出し、async/awaitのインターリーブで3重にDOMに追加されていた。makeAsyncQueueで排他制御を入れ、純粋関数に分離。",[15,123,124],{},"列幅自動調整もデータの最大文字数から計算する方式に切り替え、全選択系チップのスタイル統一やBS/PL縦結合なども実施。",[15,126,127],{},[36,128,38],{},[40,130,131,134,137,140],{},[43,132,133],{},"連携明細3重表示バグの修正（排他制御 + 純粋関数分離）",[43,135,136],{},"calcColumnWidths純粋関数による列幅計算",[43,138,139],{},"chrome.tabs.create失敗時のガード追加",[43,141,142],{},"全帳表・全年度・全選択のスタイル統一",[15,144,145,60,147],{},[36,146,59],{},[62,148,150],{"href":149},"/mf-extension-bug-fixes-and-ui-polish","会計Chrome拡張：連携明細の重複表示バグ修正・列幅自動調整・UI統一",[67,152],{},[23,154,156],{"id":155},"_4-illustratorafter-effects-extendscript自動化","4. Illustrator/After Effects ExtendScript自動化",[15,158,159],{},"Illustrator MCPサーバーをビルドしてCOM接続を試みたが、Beta版がレジストリを全上書きしていて繋がらない。Betaをアンインストール→CLSIDが空→.regファイルで手動修復という泥臭い作業を経て接続成功。",[15,161,162],{},"MCPサーバーの限界を認識し、Claude CodeからVBScript→ExtendScript直接実行に切り替え。After Effectsでは148レイヤーの12秒シネマティックイントロを生成し、実際の動画素材にエフェクトをかけてMP4レンダリングまで完了。",[15,164,165],{},[36,166,38],{},[40,168,169,172,175,178,181],{},[43,170,171],{},"IllustratorのCOMレジストリ修復手順を確立",[43,173,174],{},"MCPサーバーよりExtendScript直接実行が優れているという結論",[43,176,177],{},"After Effectsで148レイヤーのモーショングラフィックス生成",[43,179,180],{},"setTemporalEaseAtKeyの次元数問題の回避策を発見",[43,182,183],{},"layer.stretch > timeRemapというスローモーションの知見",[15,185,186,60,188],{},[36,187,59],{},[62,189,191],{"href":190},"/illustrator-aftereffects-extendscript-automation","Illustrator/After Effects ExtendScript自動化 - COM接続の罠とClaude Codeからの直接実行",[67,193],{},[19,195,196],{"id":196},"今日の試行錯誤",[198,199,200,222],"table",{},[201,202,203],"thead",{},[204,205,206,210,213,216,219],"tr",{},[207,208,209],"th",{},"#",[207,211,212],{},"テーマ",[207,214,215],{},"試したこと",[207,217,218],{},"結果",[207,220,221],{},"気づき",[223,224,225,243,259,275,291,306,322,338,354,369,385,401,417,433],"tbody",{},[204,226,227,231,234,237,240],{},[228,229,230],"td",{},"1",[228,232,233],{},"EDINET API 403",[228,235,236],{},"urllib デフォルトUA",[228,238,239],{},"失敗",[228,241,242],{},"Bot対策でブロックされていた",[204,244,245,248,250,253,256],{},[228,246,247],{},"2",[228,249,233],{},[228,251,252],{},"User-Agent差し替え",[228,254,255],{},"成功",[228,257,258],{},"APIキーではなくUAが原因",[204,260,261,264,267,270,272],{},[228,262,263],{},"3",[228,265,266],{},"SS書き込み文字化け",[228,268,269],{},"gws CLIでJSON渡し",[228,271,239],{},[228,273,274],{},"Windows cp932とシェル制限",[204,276,277,280,283,286,288],{},[228,278,279],{},"4",[228,281,282],{},"SS書き込み",[228,284,285],{},"Pythonスクリプト+チャンク分割",[228,287,255],{},[228,289,290],{},"10行ずつで制限回避",[204,292,293,296,298,301,303],{},[228,294,295],{},"5",[228,297,82],{},[228,299,300],{},"書式後にautoResize",[228,302,239],{},[228,304,305],{},"Google既知バグ",[204,307,308,311,314,317,319],{},[228,309,310],{},"6",[228,312,313],{},"autoResize",[228,315,316],{},"3フェーズ分離（Codex提案）",[228,318,239],{},[228,320,321],{},"太字・背景色の幅計算が不正確",[204,323,324,327,330,333,335],{},[228,325,326],{},"7",[228,328,329],{},"列幅",[228,331,332],{},"calcColumnWidths自前計算",[228,334,255],{},[228,336,337],{},"最大文字数×7px+padding",[204,339,340,343,346,349,351],{},[228,341,342],{},"8",[228,344,345],{},"Illustrator COM",[228,347,348],{},"Illustrator.Application.29",[228,350,239],{},[228,352,353],{},"Beta版がProgID上書き",[204,355,356,359,361,364,366],{},[228,357,358],{},"9",[228,360,345],{},[228,362,363],{},".regファイルでCLSID修復",[228,365,255],{},[228,367,368],{},"Beta版アンインストールだけでは不十分",[204,370,371,374,377,380,382],{},[228,372,373],{},"10",[228,375,376],{},"AE COM",[228,378,379],{},"GetObject(\"AfterEffects.Application\")",[228,381,239],{},[228,383,384],{},"AEはCOM非対応",[204,386,387,390,393,396,398],{},[228,388,389],{},"11",[228,391,392],{},"AE接続",[228,394,395],{},"afterfx.exe -r jsx",[228,397,255],{},[228,399,400],{},"コマンドライン方式",[204,402,403,406,409,412,414],{},[228,404,405],{},"12",[228,407,408],{},"AE setTemporalEaseAtKey",[228,410,411],{},"2要素配列",[228,413,239],{},[228,415,416],{},"Scaleは常に3D",[204,418,419,422,425,428,430],{},[228,420,421],{},"13",[228,423,424],{},"AE スローモーション",[228,426,427],{},"timeRemap",[228,429,239],{},[228,431,432],{},"outPoint自動延長されない",[204,434,435,438,440,443,445],{},[228,436,437],{},"14",[228,439,424],{},[228,441,442],{},"layer.stretch = 333%",[228,444,255],{},[228,446,447],{},"stretchの方がシンプル",[67,449],{},[19,451,452],{"id":452},"今日の学び",[40,454,455,458,461,464,467,470,473],{},[43,456,457],{},"EDINET APIは1リクエストで14年分のPL/BS/CF全データが返る。効率的",[43,459,460],{},"Windowsのシェルにはコマンドライン長制限があり、大きいJSON渡しはチャンク分割が必須",[43,462,463],{},"Google Sheets autoResizeDimensionsはセル書式の影響を考慮しない既知バグ。自前計算が確実",[43,465,466],{},"async関数の同時呼び出しはawaitのインターリーブで予期しない結果になる。排他制御を忘れない",[43,468,469],{},"MCPサーバーはClaude Code環境では冗長。ExtendScript直接実行の方が速く制約もない",[43,471,472],{},"AEのsetTemporalEaseAtKeyは次元数に厳密。Position(Spatial)は1要素、Scale(3D)は3要素",[43,474,475],{},"layer.stretchはtimeRemapよりスローモーションの実装がシンプルで確実",[67,477],{},[19,479,480],{"id":480},"明日やること",[40,482,485,495,501],{"className":483},[484],"contains-task-list",[43,486,489,494],{"className":487},[488],"task-list-item",[490,491],"input",{"disabled":492,"type":493},true,"checkbox"," 会計拡張：推移表・残高試算表・仕訳帳の整合性チェック（合計行 = 子行の合計）実装",[43,496,498,500],{"className":497},[488],[490,499],{"disabled":492,"type":493}," 会計拡張：帳表×年度マトリクスUIの実際のエクスポートテスト",[43,502,504,506],{"className":503},[488],[490,505],{"disabled":492,"type":493}," After Effects：setTemporalEaseAtKeyのバグ根本原因調査",[67,508],{},[19,510,511],{"id":511},"関連記事",[40,513,514,518,522,526],{},[43,515,516],{},[62,517,65],{"href":64},[43,519,520],{},[62,521,112],{"href":111},[43,523,524],{},[62,525,150],{"href":149},[43,527,528],{},[62,529,191],{"href":190},{"title":531,"searchDepth":532,"depth":532,"links":533},"",2,[534,541,542,543,544],{"id":21,"depth":532,"text":21,"children":535},[536,538,539,540],{"id":25,"depth":537,"text":26},3,{"id":71,"depth":537,"text":72},{"id":117,"depth":537,"text":118},{"id":155,"depth":537,"text":156},{"id":196,"depth":532,"text":196},{"id":452,"depth":532,"text":452},{"id":480,"depth":532,"text":480},{"id":511,"depth":532,"text":511},"diary","EDINET DB APIで会計ソフト4社の財務データを取得し日米SaaSベンチマーク比較を実施。会計Chrome拡張を帳表×年度マトリクスUIに大規模リファクタリング。Illustrator/After EffectsのExtendScript直接実行でモーショングラフィックスを生成。","md",{},"/2026-03-25-diary","daily-log",false,"2026-03-25T00:00:00.000Z",{"title":5,"description":546},"2026-03/2026-03-25/diary-2026-03-25",[556,557,558,559,560,561,562],"日記","EDINET","Chrome拡張","Illustrator","After Effects","ExtendScript","会計SaaS",null,"Y_Wcgvl8SehBAplnUPQnkJmfzom_2LEyGCODSc_QzLE",[],"https://log.eurekapu.com/favicon.svg",1778379977023]