[{"data":1,"prerenderedAt":723},["ShallowReactive",2],{"content-/2026-09-16-diary":3,"all-pages-for-dir":700,"related-/2026-09-16-diary":701,"og-image-/2026-09-16-diary":722},{"id":4,"title":5,"body":6,"category":680,"concepts":681,"description":682,"extension":683,"meta":684,"navigation":605,"ogImage":681,"path":685,"project_name":686,"published":687,"publishedAt":688,"seo":689,"source":690,"stem":691,"tags":692,"todo":681,"unpublished":687,"updatedAt":681,"__hash__":699},"pages/2026-09/2026-09-16/diary-2026-09-16.md","2026年9月16日の開発日記 - 拡張機能の作り直しと、手書き42枚のCSV化",{"type":7,"value":8,"toc":661},"minimark",[9,14,18,21,25,32,99,102,107,110,113,119,135,146,149,153,156,160,171,179,181,185,188,191,195,206,214,216,220,223,227,238,246,248,252,255,259,270,278,280,284,287,290,294,305,313,315,319,322,330,332,335,567,569,572,589,591,594,620,622,625],[10,11,13],"h1",{"id":12},"_2026年9月16日の開発日記","2026年9月16日の開発日記",[15,16,17],"p",{},"朝いちばんに引っかかったのは、韓国株の終値が2つのソースで合わないことだった。騰落率の符号まで逆になっていて、これはどちらかが間違っているのではなく、見ている市場が違う。そこから株価の取得元を1つへ寄せ直した。",[15,19,20],{},"日中の主役はクラウド会計の Chrome 拡張で、ここに7時間40分が入っている。月次推移表から過年度の元帳を読みたいというだけの話が、年度の取り方の作り直しと、画面中央に出していた説明文をすべて畳む作業まで広がった。並行して、手書きの数値表を撮った画像42枚を CSV に起こす作業を、モデルの利用枠が尽きるたびに別系統へ乗り換えながら片付けている。",[22,23,24],"h2",{"id":24},"今日のタイムライン",[15,26,27],{},[28,29],"img",{"alt":30,"src":31},"タイムライン","/2026-09/2026-09-16/timeline-2026-09-16.png",[33,34,35,51],"table",{},[36,37,38],"thead",{},[39,40,41,45,48],"tr",{},[42,43,44],"th",{},"プロジェクト",[42,46,47],{},"時間",[42,49,50],{},"セッション数",[52,53,54,66,77,88],"tbody",{},[39,55,56,60,63],{},[57,58,59],"td",{},"クラウド会計の Chrome 拡張",[57,61,62],{},"7時間42分",[57,64,65],{},"6",[39,67,68,71,74],{},[57,69,70],{},"mdx-playground（日記・記事・株価）",[57,72,73],{},"4時間27分",[57,75,76],{},"5",[39,78,79,82,85],{},[57,80,81],{},"地域密着サービス業のサイト（画像のCSV化）",[57,83,84],{},"2時間23分",[57,86,87],{},"1",[39,89,90,93,96],{},[57,91,92],{},"eurekapu（CF計算書の教材）",[57,94,95],{},"48分",[57,97,98],{},"2",[22,100,101],{"id":101},"今日やったこと",[103,104,106],"h3",{"id":105},"_1-クラウド会計の拡張に月次推移表からの元帳ビューを足した","1. クラウド会計の拡張に、月次推移表からの元帳ビューを足した",[15,108,109],{},"月次推移表で過年度のセルをクリックしても、セッションの年度が現在のままなので元帳が「存在しません」になる。そこで右側にペインを出して元帳を模す拡張をもう1つ追加した。保存先は量が増える見込みがないので、既存のストレージのままでよいと判断している。",[15,111,112],{},"年度タブが下の表まで切り替えてしまう挙動を「表示と取得は別」に直させ、1年度ずつだった取得を未取得年度のまとめ取得へ作り直した。午後は画面中央に常時出していた説明文を、すべて「?」のマウスオーバーへ畳んでいる。",[15,114,115],{},[116,117,118],"strong",{},"主な成果:",[120,121,122,126,129,132],"ul",{},[123,124,125],"li",{},"月次推移表の右ペインに元帳を出す拡張を追加",[123,127,128],{},"年度の表示と取得を分離し、未取得年度をまとめて取れるように",[123,130,131],{},"常時表示の説明文をマウスオーバーへ移し、画面を静かにした",[123,133,134],{},"リロードのたびに出ていた「リモートデバッグを許可しますか」の出どころが判明",[15,136,137,140,141],{},[116,138,139],{},"詳細:"," ",[142,143,145],"a",{"href":144},"/accounting-extension-monthly-trial-balance","クラウド会計の月次推移表から過年度の元帳を読むChrome拡張を追加した",[147,148],"hr",{},[103,150,152],{"id":151},"_2-計画書を書かせ別モデルでレビューし3択フォームで決めた","2. 計画書を書かせ、別モデルでレビューし、3択フォームで決めた",[15,154,155],{},"X で見かけた他の人のスキル紹介をきっかけに、同じことを自分の拡張でもやりたくなった。実装ではなく計画書から入らせて、Codex のレビューを回した。返ってきた指摘のうち1件が保存キーの前提違いで、鵜呑みにせず自分で検索し直したら指摘どおりだった。接頭辞が2種類あるのに、片方しか見ていなかった。",[15,157,158],{},[116,159,118],{},[120,161,162,165,168],{},[123,163,164],{},"計画書を直して再レビューで承認",[123,166,167],{},"判断事項3件を3択ボタンで選べる決裁フォームを設置",[123,169,170],{},"デバッグポートが開いていなかったので、ヘッドレスで撮って描画を確認",[15,172,173,140,175],{},[116,174,139],{},[142,176,178],{"href":177},"/plan-review-decision-form-loop","計画書を書かせ、別モデルでレビューし、3択フォームで決裁するまで",[147,180],{},[103,182,184],{"id":183},"_3-手書きの数値表42枚をモデルを乗り換えながらcsvにした","3. 手書きの数値表42枚を、モデルを乗り換えながらCSVにした",[15,186,187],{},"前日に9枚で止まっていた続き。最新の軽量モデルなら通るはずだと踏んで再開したが、利用枠は生きたままで外れた。「実測しなくても公表単価で試算できないか」と振ったところ、その副産物として、利用枠がモデルの系統と世代で分かれていることが分かった。",[15,189,190],{},"枠が生きている系統へ順に乗り換えて35枚まで進め、残り7枚は画像形式を変換したうえでブラウザ越しに入れて完走した。処理済み判定の実装ミスで生まれた読み直しは、そのまま2モデルの独立突き合わせに使っている。",[15,192,193],{},[116,194,118],{},[120,196,197,200,203],{},[123,198,199],{},"42枚を完走し、5,666件を取得（既存より388件多い）",[123,201,202],{},"2モデルの独立読み取りで1,883件が中身一致することを確認",[123,204,205],{},"既存CSVは上書きせず、日付入りでバージョン管理",[15,207,208,140,210],{},[116,209,139],{},[142,211,213],{"href":212},"/handwritten-table-images-to-csv","手書き数値表42枚のOCRで、マルチモーダルLLMをレート制限ごとに乗り換えた記録",[147,215],{},[103,217,219],{"id":218},"_4-クラウド会計のui不満ログを更新し本番まで通した","4. クラウド会計のUI不満ログを更新し、本番まで通した",[15,221,222],{},"7月に書いた定点観測の記事に8件目を追記した。自分で貼ったスクリーンショットを入れて、どの画面の話かが分かるようにしている。改善要望のうち API 自動化の項目は「API はあるが1件ずつしか登録できない」という現状に書き直し、フィルターの効き方も実測で確かめた。",[15,224,225],{},[116,226,118],{},[120,228,229,232,235],{},[123,230,231],{},"不満リストに8件目を追加、スクリーンショット付き",[123,233,234],{},"X検索で同じ不満の投稿を探し、元ポストの本文と日時まで確認して引用",[123,236,237],{},"デプロイが裏の dev を落とす既知の問題を直し、2回目のデプロイで生き残ることを確認",[15,239,240,140,242],{},[116,241,139],{},[142,243,245],{"href":244},"/accounting-ux-complaints-followup","クラウド会計のUI不満ログにスクショとX引用を足して本番デプロイまで通した",[147,247],{},[103,249,251],{"id":250},"_5-cf計算書教材の対応表を作りカバー漏れを逆引きできるようにした","5. CF計算書教材の対応表を作り、カバー漏れを逆引きできるようにした",[15,253,254],{},"論点番号と元設問をつなぐ「1枚の表」を作ったつもりでいたが、探させたら存在しなかった。対応は3つのレイヤーに分かれて置かれていた。全設問と論点番号を突き合わせる表を生成スクリプトで作らせ、タブ切替とソートを付けた HTML にしている。",[15,256,257],{},[116,258,118],{},[120,260,261,264,267],{},[123,262,263],{},"逆引きで拾えていない設問を確認できる状態に",[123,265,266],{},"章別87問とサマリ79問の食い違いを注記で修正",[123,268,269],{},"何を作ったか・どう作ったか・なぜ作ったかを memo に残した",[15,271,272,140,274],{},[116,273,139],{},[142,275,277],{"href":276},"/cf-topic-question-coverage-map-html","CF計算書教材の論点番号と元設問の対応表をHTML化し、カバー漏れを逆引きで洗い出した",[147,279],{},[103,281,283],{"id":282},"_6-株価の取得元を一本化し為替の想定を答え合わせした","6. 株価の取得元を一本化し、為替の想定を答え合わせした",[15,285,286],{},"朝の食い違いは、片方が時間外取引込みの終値だったことによる。決算チェーンで毎朝叩いているサービスでも同じ銘柄が取れると分かり、使っていなかった理由が「取れないから」ではなく手順書の方針だったと判明したので、主ソースを切り替えた。同じサービスを1日2回叩いていたのも1回にまとめている。",[15,288,289],{},"午後は非公開の想定記事の答え合わせ。取得側と評価側で違うレートを使っていることは検算で取れたが、約定が済んでいても評価額の置き換わりは受渡日待ちで、予測そのものは外れた。",[15,291,292],{},[116,293,118],{},[120,295,296,299,302],{},[123,297,298],{},"株価の主ソースを1つに統一し、Mac でも同じ経路で動く前提に",[123,300,301],{},"同一サービスへの1日2回の呼び出しを1回へ",[123,303,304],{},"想定が外れた理由を約定履歴で特定し、再確認の日付をタスクに登録",[15,306,307,140,309],{},[116,308,139],{},[142,310,312],{"href":311},"/stock-price-source-and-fx-check","株価の終値が2つのソースで食い違う。取得元を一本化し、為替の検算を予約した日",[147,314],{},[103,316,318],{"id":317},"_7-10年飽きなかったことを書き出した","7. 10年飽きなかったことを書き出した",[15,320,321],{},"「商売は何が儲かるかより、何なら狂ったように続けられるかで選んだ方がいい」という投稿を読んで、独立して10年で自分に何が残ったかを書いた。飽きない仕事と面倒な仕事の線引きが、始まりと終わりを誰が決めるかで分かれる、という話に落ちている。",[15,323,324,140,326],{},[116,325,139],{},[142,327,329],{"href":328},"/ten-years-of-making-things-clear","10年飽きなかったのは、分かりにくいことを分かりやすくすることだった",[147,331],{},[22,333,334],{"id":334},"今日の試行錯誤",[33,336,337,356],{},[36,338,339],{},[39,340,341,344,347,350,353],{},[42,342,343],{},"#",[42,345,346],{},"テーマ",[42,348,349],{},"試したこと",[42,351,352],{},"結果",[42,354,355],{},"気づき",[52,357,358,374,389,406,422,438,454,471,486,501,517,534,551],{},[39,359,360,362,365,368,371],{},[57,361,87],{},[57,363,364],{},"株価の食い違い（朝）",[57,366,367],{},"2つのソースの終値を並べて比べた",[57,369,370],{},"成功",[57,372,373],{},"片方が時間外取引込みで、騰落率の符号まで逆になっていた",[39,375,376,378,381,384,386],{},[57,377,98],{},[57,379,380],{},"株価の取得元",[57,382,383],{},"決算チェーンで使っているサービスで取れないか問い直した",[57,385,370],{},[57,387,388],{},"取れないのではなく、手順書がそう決めていただけだった",[39,390,391,394,397,400,403],{},[57,392,393],{},"3",[57,395,396],{},"拡張・元帳ビュー",[57,398,399],{},"保存先を別のストレージにすべきか検討した",[57,401,402],{},"現状維持",[57,404,405],{},"量が増える見込みがないので、既存のままでよいと判断",[39,407,408,411,414,417,419],{},[57,409,410],{},"4",[57,412,413],{},"拡張・年度の取得",[57,415,416],{},"1年度ずつ取る前提を、未取得年度のまとめ取得へ作り直させた",[57,418,370],{},[57,420,421],{},"年度タブが表示と取得の両方を切り替えていたのが元の混乱",[39,423,424,426,429,432,435],{},[57,425,76],{},[57,427,428],{},"拡張・計画書",[57,430,431],{},"heredoc で計画書を書かせたらクォートで崩れた",[57,433,434],{},"失敗",[57,436,437],{},"書き込み方を変えて回避",[39,439,440,442,445,448,451],{},[57,441,65],{},[57,443,444],{},"拡張・レビュー",[57,446,447],{},"Codex の指摘を自分で検索し直して裏を取った",[57,449,450],{},"指摘どおり",[57,452,453],{},"保存キーの接頭辞が2種類あり、片方しか見ていなかった",[39,455,456,459,462,465,468],{},[57,457,458],{},"7",[57,460,461],{},"画像のCSV化",[57,463,464],{},"軽量モデルなら利用枠が空いているはずと踏んで再開した",[57,466,467],{},"外れ",[57,469,470],{},"枠は生きたまま。系統と世代で枠が分かれていると分かった",[39,472,473,476,478,481,483],{},[57,474,475],{},"8",[57,477,461],{},[57,479,480],{},"実装ミスで発生した読み直しを、2モデルの突き合わせに転用した",[57,482,370],{},[57,484,485],{},"独立読み取りの一致件数で精度の裏が取れた",[39,487,488,491,493,496,498],{},[57,489,490],{},"9",[57,492,461],{},[57,494,495],{},"出来上がりが1行ずれて見えたので原因を調べた",[57,497,370],{},[57,499,500],{},"ずれではなく BOM 無しによる文字化けだった",[39,502,503,506,509,512,514],{},[57,504,505],{},"10",[57,507,508],{},"不満記事のデプロイ",[57,510,511],{},"デプロイが裏の dev を落とす問題を直して2回目を流した",[57,513,370],{},[57,515,516],{},"dev のプロセスが生き残ることを実際に確認した",[39,518,519,522,525,528,531],{},[57,520,521],{},"11",[57,523,524],{},"CF教材の対応表",[57,526,527],{},"作ったはずの1枚の表を探させた",[57,529,530],{},"存在せず",[57,532,533],{},"対応は3つのレイヤーに分かれて置かれていた",[39,535,536,539,542,545,548],{},[57,537,538],{},"12",[57,540,541],{},"為替の答え合わせ",[57,543,544],{},"約定履歴で予測を突き合わせた",[57,546,547],{},"予測は外れ",[57,549,550],{},"約定は済んでも、評価額の置き換わりは受渡日待ちだった",[39,552,553,556,559,562,564],{},[57,554,555],{},"13",[57,557,558],{},"画面表示",[57,560,561],{},"進行が見えなくなった表示を元に戻す方法を確認した",[57,563,370],{},[57,565,566],{},"コンパクト表示はトグルで、同じコマンドで戻る",[147,568],{},[22,570,571],{"id":571},"今日の学び",[120,573,574,577,580,583,586],{},[123,575,576],{},"数値が2つのソースで食い違うときは、どちらが正しいかより先に「同じものを見ているか」を疑う。今回は時間外取引を含むかどうかの違いで、符号まで反転していた",[123,578,579],{},"使っていない経路を「使えない」と思い込まない。理由を辿ったら、できないからではなく、そう決めただけだった",[123,581,582],{},"レビューの指摘は鵜呑みにも却下にもせず、自分で裏を取る。今回は指摘どおりで、こちらの検索の網が粗かった",[123,584,585],{},"実装ミスで生まれたやり直しは、捨てずに検証へ回せることがある。独立した2回の読み取りは、そのまま突き合わせの材料になった",[123,587,588],{},"「作ったつもり」の成果物は、探すまで存在を確定できない。頭の中の1枚の表は、実際には3つに分かれて置かれていた",[147,590],{},[22,592,593],{"id":593},"明日やること",[120,595,598,608,614],{"className":596},[597],"contains-task-list",[123,599,602,607],{"className":600},[601],"task-list-item",[603,604],"input",{"checked":605,"disabled":605,"type":606},true,"checkbox"," 株価の主ソース切り替えを Mac 側でも通す（次回の実行から）",[123,609,611,613],{"className":610},[601],[603,612],{"disabled":605,"type":606}," 評価損益がプラスに転じたかを 9/18 朝に確認する（タスク登録済み）",[123,615,617,619],{"className":616},[601],[603,618],{"disabled":605,"type":606}," 拡張のストレージ削除まわりの積み残しを片付ける",[147,621],{},[22,623,624],{"id":624},"関連記事",[120,626,627,631,635,639,643,647,651,655],{},[123,628,629],{},[142,630,145],{"href":144},[123,632,633],{},[142,634,178],{"href":177},[123,636,637],{},[142,638,213],{"href":212},[123,640,641],{},[142,642,245],{"href":244},[123,644,645],{},[142,646,277],{"href":276},[123,648,649],{},[142,650,312],{"href":311},[123,652,653],{},[142,654,329],{"href":328},[123,656,657],{},[142,658,660],{"href":659},"/earnings-beats-2026-09-15","決算ビート銘柄スキャン（2026-09-15）",{"title":662,"searchDepth":663,"depth":663,"links":664},"",2,[665,666,676,677,678,679],{"id":24,"depth":663,"text":24},{"id":101,"depth":663,"text":101,"children":667},[668,670,671,672,673,674,675],{"id":105,"depth":669,"text":106},3,{"id":151,"depth":669,"text":152},{"id":183,"depth":669,"text":184},{"id":218,"depth":669,"text":219},{"id":250,"depth":669,"text":251},{"id":282,"depth":669,"text":283},{"id":317,"depth":669,"text":318},{"id":334,"depth":663,"text":334},{"id":571,"depth":663,"text":571},{"id":593,"depth":663,"text":593},{"id":624,"depth":663,"text":624},"diary",null,"クラウド会計の月次推移表に拡張をもう1つ足し、年度ごとの取得を一括取得へ作り直した日。手書きの数値表42枚はモデルの利用枠が尽きるたびに乗り換えて片付け、株価の取得元も1つへ寄せた。","md",{},"/2026-09-16-diary","daily-log",false,"2026-09-16T00:00:00.000Z",{"title":5,"description":682},"make-diary","2026-09/2026-09-16/diary-2026-09-16",[693,694,695,696,697,698],"日記","Chrome拡張","クラウド会計","OCR","キャッシュフロー","株価データ","AFXUR2Dc6PB4kkPqQjoizBPjfl7WkNBe_G2xAs2ahvA",[],[702,706,710,714,718],{"title":703,"path":704,"publishedAt":705},"2026年9月15日の開発日記 - 「終わっているはず」を確かめて回った日","/2026-09-15-diary","2026-09-15T00:00:00.000Z",{"title":707,"path":708,"publishedAt":709},"2026年9月10日の開発日記 - 直したのに画面が応えない日","/2026-09-10-diary","2026-09-10T00:00:00.000Z",{"title":711,"path":712,"publishedAt":713},"2026年9月3日の開発日記 - 止まったセッションを二度拾い直した日","/2026-09-03-diary","2026-09-03T00:00:00.000Z",{"title":715,"path":716,"publishedAt":717},"2026年6月22日の開発日記 - 韓国半導体旬報の品目別Chrome拡張とロングフォーム2本","/2026-06-22-diary","2026-06-22T00:00:00.000Z",{"title":719,"path":720,"publishedAt":721},"2026年4月21日の開発日記 - CF教材を丸一日かけて作り直し、note.com連携と別表コンテンツも並行で進めた","/2026-04-21-diary","2026-04-21T00:00:00.000Z","https://log.eurekapu.com/og/blog/2026-09-16-diary.png?v=2026-09-16T00%3A00%3A00.000Z&title=2026%E5%B9%B49%E6%9C%8816%E6%97%A5%E3%81%AE%E9%96%8B%E7%99%BA%E6%97%A5%E8%A8%98%20-%20%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD%E3%81%AE%E4%BD%9C%E3%82%8A%E7%9B%B4%E3%81%97%E3%81%A8%E3%80%81%E6%89%8B%E6%9B%B8%E3%81%8D42%E6%9E%9A%E3%81%AECSV%E5%8C%96&author=Kei%20Komatsu&sig=b9cde7172ce9802a",1789885490295]