[{"data":1,"prerenderedAt":326},["ShallowReactive",2],{"content-/accounting-ux-complaints-followup":3,"all-pages-for-dir":303,"related-/accounting-ux-complaints-followup":304,"og-image-/accounting-ux-complaints-followup":325},{"id":4,"title":5,"body":6,"category":189,"concepts":285,"description":286,"extension":287,"meta":288,"navigation":269,"ogImage":285,"path":289,"project_name":290,"published":291,"publishedAt":292,"seo":293,"source":294,"stem":295,"tags":296,"todo":285,"unpublished":291,"updatedAt":285,"__hash__":302},"pages/2026-09/2026-09-16/accounting-ux-complaints-followup.md","クラウド会計のUI不満ログにスクショとX引用を足して本番デプロイまで通した",{"type":7,"value":8,"toc":272},"minimark",[9,13,16,19,24,27,30,38,41,44,47,51,54,57,60,73,76,79,82,85,88,91,94,97,111,118,121,124,127,130,133,144,147,150,181,184,207,210,213,223,231,238,241,255,258],[10,11,12],"p",{},"スクリーンショットを1枚貼って「これ、前にまとめてなかったっけ」と聞くところから始まった。",[10,14,15],{},"会計ソフトAの年次推移表で、売上高の2022年に見えるリンクを押すと、飛び先は2025年になる。2023年も2024年も同じで、行のどこを押してもいま選んでいる年度へ戻ってくる。全部が同じ場所を指すなら、リンクを付けている意味がない。",[10,17,18],{},"この手の不満は前にまとめて公開したはずだった。ただ、どの記事だったかを思い出せない。",[20,21,23],"h2",{"id":22},"_7月に書いた定点観測の記事","7月に書いた定点観測の記事",[10,25,26],{},"7月に書いた、不満と改善要望を並べたログ記事だった。Xの投稿から発生日と解決状況を記録していく定点観測の記事で、そこに年次推移表の件が入っていたかどうかを確かめてもらった。",[10,28,29],{},"入っていなかった。「推移表」「年次」「リンク」のどれで検索してもヒットしない。8件目として足してもらった。",[10,31,32,33,37],{},"ついでに、",[34,35,36],"code",{},"\u003Cbr>"," の連結で詰まって見えていた段落を2つに割り、「上の7件」という件数表記も直させた。件数を本文に直書きすると、1件足すたびにズレる。",[20,39,40],{"id":40},"どの画面の話かをスクショで示す",[10,42,43],{},"文章だけだと、どのリンクの話なのかが伝わらない。せっかく自分で貼った画像があるので、そのまま記事へ入れてもらった。786×539の画像が本文幅734pxに収まり、横のはみ出しはゼロ、lintも通った。画面はデモ環境のものなので、中身を隠す必要もない。",[10,45,46],{},"記事のタイトルも実態に合わせて直させた。",[20,48,50],{"id":49},"改善要望リストのapi自動化の項目","改善要望リストのAPI自動化の項目",[10,52,53],{},"改善要望リストには「APIで自動化できない」という項目が残っていた。これが今の実態と食い違う。APIはあるし、仕訳のアップロードもできる。できないのは一括登録のほうで、連携は1件ずつしか受け付けない。300件あれば300回叩くことになる。",[10,55,56],{},"ここは書き方に迷った。「APIがない」と書けば嘘になり、「APIで自動化できる」と書けば実務の体感とずれる。",[10,58,59],{},"実測は3日前に自分で済ませてあって、比較データも残っていた。未確認だったのは、仕訳帳APIのフィルターが効くかどうかだった。認証は取ってあるので、そこは実際に叩いて確かめてもらった。",[61,62,63,67,70],"ul",{},[64,65,66],"li",{},"期間のフィルターは効く",[64,68,69],{},"摘要とタグは400で弾かれる",[64,71,72],{},"絞り込めるのは7つだけ",[10,74,75],{},"一括投入のAPIが用意されているかどうかも、最新のOpenAPI仕様で確認させた。3件とも記事に反映し、数字は条件付きで明記した。いま自分がやっている回避策は、書くと語弊が出そうなので記事には入れていない。",[20,77,78],{"id":78},"同じ不満をポストしている人がいるか",[10,80,81],{},"新しく足した項目について、同じことをポストしている人がいないかを x-search で探させた。Grok経由、2023年1月以降。3件出てきた。",[10,83,84],{},"この記事には「引用は元ポストを開いて本文と日時を直接確認する」というルールを敷いてある。検索結果の要約をそのまま貼ると、日付や文言が少しずつずれるからだ。3件とも元ポストを開いて確認してから入れてもらった。1件は引用の中の流れ図が1行に連結されていたので、原文の改行を再現させた。",[10,86,87],{},"あわせて、一括登録と一括削除はAPIが別々に分かれている。1項目にまとまっていたのを2つに割り、チェックマークも付け直した。",[20,89,90],{"id":90},"コミットしてから本番へ",[10,92,93],{},"デプロイの前に確認が1つ返ってきた。このリポジトリは作業ツリーがそのまま本番になるので、記事のコミットだけでなく、他のセッションが触っている未コミットの変更も一緒に出る。中身を見せてもらい、それで問題ないと答えた。",[10,95,96],{},"事前検証はpathリンター、非公開リンクの漏れ、evalsの3本で、どれも error 0 / warn 0 だった。そこからビルドが流れた。",[61,98,99,102,105,108],{},[64,100,101],{},"プリレンダー 6,881ルート / 349秒",[64,103,104],{},"postgenerate 9ステップ / 50.2秒（非公開記事がdistに混ざっていないかの検査だけで39.6秒）",[64,106,107],{},"本番ヘルスチェックでJSアセット1,366個を照合",[64,109,110],{},"合計 13.6分",[10,112,113,114,117],{},"pushは素直に進まなかった。履歴はリニアなので ",[34,115,116],{},"--rebase"," で取り込むつもりが、他セッションの未コミット変更があるとrebaseは走らない。stashで退避すると他セッションを巻き込む。マージコミットが1つ増えるのを承知でmergeにした。",[20,119,120],{"id":120},"自分のポストを記事に取り込む",[10,122,123],{},"記事を出したあと、一括登録の話と一括削除の話をXにポストした。せっかくなので、これも他の項目と同じ体裁（元ポストへのリンク、日時、引用ブロック）で記事に入れてもらった。",[10,125,126],{},"そのとき指摘が1つ返ってきた。一括削除の項目は、引用と本文で同じ説明が2回続く。ポスト本文に実測値まで書いてあるためで、引用は「約3秒で終えた」、本文は「2.4〜2.7秒で終えた」になる。読み比べると同じ話をもう一度読まされる。今回はこのままにして、コミットとpushだけ済ませ、デプロイは保留にした。",[20,128,129],{"id":129},"デプロイのたびにdevが500を返す",[10,131,132],{},"ポストを入れている途中で、devサーバーが500を返した。",[10,134,135,136,139,140,143],{},"原因はさっきのデプロイだった。デプロイスクリプトの ",[34,137,138],{},"nuxt prepare"," が、稼働中のdevが使っている ",[34,141,142],{},".nuxt/"," を丸ごと消す。9月11日にissueとして記録してあり、ステータスは未解決のまま残っていた。症状が完全に一致した。",[10,145,146],{},"デプロイを1回打つたびに、裏で開いているdevが死ぬ。issueに書いてあった暫定対処どおりdevを再起動して、その場はしのいだ。",[10,148,149],{},"そのうえで直してもらった。ただし、コミット前のCodexレビューが5回続けてhighで止めた。",[151,152,153,163,169,172,175],"ol",{},[64,154,155,158,159,162],{},[34,156,157],{},"Test-Path"," 単発では、dev起動直後でまだ ",[34,160,161],{},"tsconfig.app.json"," が無い瞬間にデプロイすると判定がfalseになり、prepareが走ってdevを壊す。ポート検出を足した",[64,164,165,166,168],{},"dev停止中に古い ",[34,167,161],{}," が残っていると、設定を変えてもprepareが省略され、古い生成設定でビルドされる。ビルドが落ちるならまだしも、気づかないまま誤った成果物が出る",[64,170,171],{},"3000番を別プロセスが握っている場合。自分の判定はmediumで、dev停止、tsconfig残存、別プロセスの占有、設定変更の4つが重ならないと起きない。それでも対応が軽いので直した",[64,173,174],{},"2と3の直しで新しく作り込んだリスクが2件。修正前は毎回prepareしていたのでtsconfigは常に新鮮だった。省略を入れた自分が開けた穴なので、highに同意した",[64,176,177,180],{},[34,178,179],{},"apps/web-backup"," 側のdevが3000を握っているケース。これもmedium判定だが、1行で消えるので直した",[10,182,183],{},"重要度はCodexの言い値をそのまま受け取らず、毎回こちらで判定し直した。mediumと判定した2件も、結局はコストの低さで直している。",[10,185,186,187,190,191,194,195,198,199,202,203,206],{},"判定ロジックは実データで裏を取らせた。dev起動が 11:33:57、tsconfigの書き込みが 11:34:17 という実データで、時刻比較はきちんと効いた。サブコマンド判定は ",[34,188,189],{},"dev"," でTrue、",[34,192,193],{},"preview"," でFalse、",[34,196,197],{},"dev --port 3000"," でTrueになる。",[34,200,201],{},"web-backup"," と ",[34,204,205],{},"web2"," は弾かれ、実プロセスだけがTrueになった。",[20,208,209],{"id":209},"効いたかどうか",[10,211,212],{},"最後に、計測スクリプト付きでデプロイをもう一度回した。",[214,215,220],"pre",{"className":216,"code":218,"language":219},[217],"language-text","[r2-sync-images] sync 完了: 2208 件 / 41.1 秒\n","text",[34,221,218],{"__ignoreMap":222},"",[10,224,225,226,230],{},"合計は約12分で、前回より1.4分縮んだ。そして肝心のところ、",[227,228,229],"strong",{},"devのプロセスがデプロイを挟んで生き残っていた","。PID 42048、起動時刻は 11:33:57 のまま、HTTP 200。",[10,232,233,234,237],{},"スキップした旨のログ行が ",[34,235,236],{},"deploy.log"," に見当たらず（出力先が別だった）、最初は状況証拠だけの報告が来た。そのあと自分の手元に出ていたログを貼ったら、探していた行がそこにあった。",[20,239,240],{"id":240},"学び",[61,242,243,246,249,252],{},[64,244,245],{},"自分で貼ったスクショを記事に入れておくと、「どの画面の話か」の説明が1行で済む",[64,247,248],{},"「できない」と書いた不満は、あとで一部だけできるようになる。何ができて何ができないかまで分解しておかないと、記事のほうが先に嘘になる",[64,250,251],{},"引用は検索結果の要約で済ませず、元ポストを開いて本文と日時を確認する。日付と文言が静かにずれる",[64,253,254],{},"レビューの重要度は指摘の数ではなく、その経路で実際に何が壊れるかで決める。mediumと判定しても、1行で消えるなら直したほうが早い",[20,256,257],{"id":257},"明日やること",[61,259,262],{"className":260},[261],"contains-task-list",[64,263,266,271],{"className":264},[265],"task-list-item",[267,268],"input",{"disabled":269,"type":270},true,"checkbox"," 一括削除の項目で、引用と本文に同じ説明が2回出ているのを片方へ寄せる",{"title":222,"searchDepth":273,"depth":273,"links":274},2,[275,276,277,278,279,280,281,282,283,284],{"id":22,"depth":273,"text":23},{"id":40,"depth":273,"text":40},{"id":49,"depth":273,"text":50},{"id":78,"depth":273,"text":78},{"id":90,"depth":273,"text":90},{"id":120,"depth":273,"text":120},{"id":129,"depth":273,"text":129},{"id":209,"depth":273,"text":209},{"id":240,"depth":273,"text":240},{"id":257,"depth":273,"text":257},null,"クラウド会計のUI不満を定点観測する記事に、年次推移表のリンク問題とスクリーンショットを追加し、APIの一括登録の実態を実測で書き直した。X検索で同じ不満の投稿を探して引用を足し、コミットから本番デプロイまで通した記録。","md",{},"/accounting-ux-complaints-followup","mdx-playground",false,"2026-09-16T00:00:00.000Z",{"title":5,"description":286},"make-diary","2026-09/2026-09-16/accounting-ux-complaints-followup",[297,298,299,300,301],"クラウド会計","UI","API","デプロイ","Cloudflare","rH09UfGdEx50pe5_VjlVsuryXxbXTeA4H8bItSVyPM8",[],[305,309,313,317,321],{"title":306,"path":307,"publishedAt":308},"クラウド会計APIの限界を1つずつ測った日、最後に結論がひっくり返った","/cloud-accounting-api-limits","2026-09-13T00:00:00.000Z",{"title":310,"path":311,"publishedAt":312},"Cloudflare PagesとWorkers Static Assetsの違い、エッジキャッシュが効く仕組み","/cloudflare-pages-workers-static-assets","2026-07-22T00:00:00.000Z",{"title":314,"path":315,"publishedAt":316},"Cloudflare Pages はもう Workers の中に住んでいる ― Static Assets 統合後の地図","/cloudflare-pages-to-workers-static-assets","2026-06-29T00:00:00.000Z",{"title":318,"path":319,"publishedAt":320},"912件の自己ループリダイレクトとOG画像署名切れを一気に直した日 — 本番障害2件をAIに調査させて根本原因まで詰めた記録","/og-image-redirect-loop-fix","2026-05-28T00:00:00.000Z",{"title":322,"path":323,"publishedAt":324},"クラウド会計公式API・OAuth認証の試行錯誤ログ - APIキーからOAuthアプリ登録まで","/mf-api-oauth-authentication-journey","2026-03-26T00:00:00.000Z","https://log.eurekapu.com/og/blog/accounting-ux-complaints-followup.png?v=2026-09-16T00%3A00%3A00.000Z&title=%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E4%BC%9A%E8%A8%88%E3%81%AEUI%E4%B8%8D%E6%BA%80%E3%83%AD%E3%82%B0%E3%81%AB%E3%82%B9%E3%82%AF%E3%82%B7%E3%83%A7%E3%81%A8X%E5%BC%95%E7%94%A8%E3%82%92%E8%B6%B3%E3%81%97%E3%81%A6%E6%9C%AC%E7%95%AA%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%BE%E3%81%A7%E9%80%9A%E3%81%97%E3%81%9F&author=Kei%20Komatsu&sig=b5d144e67328fa00",1789885490198]