[{"data":1,"prerenderedAt":553},["ShallowReactive",2],{"content-/2026-09-15-diary":3,"all-pages-for-dir":530,"related-/2026-09-15-diary":531,"og-image-/2026-09-15-diary":552},{"id":4,"title":5,"body":6,"category":511,"concepts":512,"description":513,"extension":514,"meta":515,"navigation":452,"ogImage":512,"path":516,"project_name":517,"published":518,"publishedAt":519,"seo":520,"source":521,"stem":522,"tags":523,"todo":512,"unpublished":518,"updatedAt":512,"__hash__":529},"pages/2026-09/2026-09-15/diary-2026-09-15.md","2026年9月15日の開発日記 - 「終わっているはず」を確かめて回った日",{"type":7,"value":8,"toc":494},"minimark",[9,14,23,26,30,37,40,45,48,54,85,96,99,103,106,110,124,132,134,138,141,145,159,167,169,173,176,180,198,206,208,212,215,219,233,241,243,246,417,419,422,436,438,441,467,469,472],[10,11,13],"h1",{"id":12},"_2026年9月15日の開発日記","2026年9月15日の開発日記",[15,16,17,18,22],"p",{},"朝6時前に回した ",[19,20,21],"code",{},"/make-diary"," は、ログの同期が終わる前に一覧だけを見て先へ進み、1セッション分を日記から落としていた。\nその原因を探すところから一日が始まった。",[15,24,25],{},"「昨日のうちに終わっているはず」「会計ソフトAの拡張に移植したはず」と、この日は自分の側にも「はず」がいくつもあった。\n確かめてみると、当たっていたものも外れていたものもある。\n表の画像をCSVに起こす作業では、すでにあるCSVを別の読み取りと並べてみて、はじめて抜けが数字になった。",[27,28,29],"h2",{"id":29},"今日のタイムライン",[15,31,32],{},[33,34],"img",{"alt":35,"src":36},"タイムライン","/2026-09/2026-09-15/timeline-2026-09-15.png",[27,38,39],{"id":39},"今日やったこと",[41,42,44],"h3",{"id":43},"_1-make-diary-の振り返りとclaude-code-まわりの小改修","1. make-diary の振り返りと、Claude Code まわりの小改修",[15,46,47],{},"朝の実行は68分かかり、そのうち11分は同期をバックグラウンドに回したまま何も進んでいなかった。\n「続きをやってください」と打つと、エージェントは18ファイルの一覧を見て同期完了と判断した。\n実際の出力は19ファイルで、1セッションが漏れた。\n手順書の Step 1 に「ls でファイルが見えれば進んでよい」と書いてあったのが原因で、エージェントは書かれた条件どおりに動いていた。",[15,49,50],{},[51,52,53],"strong",{},"主な成果:",[55,56,57,61,64,67,74],"ul",{},[58,59,60],"li",{},"同期スクリプトを更新日時で絞らせた（821本を12分かけて全走査していたのが、34本を33秒で読むようになった）。手順書の逃げ道は削り、完了メッセージの2行を待つ形にした",[58,62,63],{},"途中で自分が Sonnet 5 に切り替えていたことを白状し、役割ごとの実行モデルを手順書の冒頭に表で置かせた",[58,65,66],{},"サブエージェントをやめてメインで直列に回す案は、試算でコンテキストが減らないとわかって取りやめた。統計チェーンはサブエージェント1本に出す案Aを採り、Step 9〜12 を references へ移す案は見送った",[58,68,69,70,73],{},"締めゲートがこの日7回止まっていた原因は、置き場を丸ごと宣言した計画書2本だった。その ",[19,71,72],{},"targets"," を実際に触ったファイルへ絞った",[58,75,76,77,80,81,84],{},"ステータスラインのリセット表示を ",[19,78,79],{},"2d15h"," から ",[19,82,83],{},"9/18(金)00:00"," のような日時に変えさせ、サブエージェントの既定モデルを環境変数で opus にした",[15,86,87,90,91],{},[51,88,89],{},"詳細:"," ",[92,93,95],"a",{"href":94},"/make-diary-retro-fixes-and-statusline","Claude Code の make-diary を朝の実行ログで振り返り、同期の完了待ちと実行モデルを手順書に固定した",[97,98],"hr",{},[41,100,102],{"id":101},"_2-cf教材の論点205を突合し帳票3種を1つのexcelにまとめた","2. CF教材の論点205を突合し、帳票3種を1つのExcelにまとめた",[15,104,105],{},"前日の消費税対応の続きで、まず「昨日の段階で終わっているはず」を確かめた。\n論点とフォルダの対応表を計画書に足させると、9論点とも9月14日のうちに済んでいて、未完は306とP4-3の2つだけだった。\nそのあと205の仕訳を会計ソフトAに入れて突合し、帳票を1つのExcelにまとめてもらった。",[15,107,108],{},[51,109,53],{},[55,111,112,115,118,121],{},[58,113,114],{},"対応表だけを本文の max-width から外し、フォルダ名が折り返さない幅まで広げた（報告が英語で返ってきたので、日本語で出し直してもらった）",[58,116,117],{},"202の残件2件は補助科目がなくて止まっていた。補助科目は作ってよいと自分で判断して返し、205の突合まで通った",[58,119,120],{},"途中で、画面を操作していたのが自分だったと気づいた。作業中に触ると年度の切り替えの邪魔になる",[58,122,123],{},"仕訳帳、年次推移表、株主資本等変動計算書を1つのExcelにまとめられるところまで来た。8時台のセッションでは、教材の出し先を考え始めた",[15,125,126,90,128],{},[51,127,89],{},[92,129,131],{"href":130},"/cf-lifecycle-205-journal-excel-export","CF計算書教材の論点205（株主資本）を会計ソフトAで突合し、帳票3種を1つのExcelにまとめた",[97,133],{},[41,135,137],{"id":136},"_3-受取利息の源泉徴収税を自動で分けるchrome拡張","3. 受取利息の源泉徴収税を自動で分けるChrome拡張",[15,139,140],{},"法人の受取利息から源泉徴収税を分ける機能を、会計ソフトAの拡張に移植したつもりでいた。\n調べてもらうと、移植はされていなかった。\n元にしたと思っていた機能も、覚えていたのとは別の、ストアで公開されている拡張のものだった。",[15,142,143],{},[51,144,53],{},[55,146,147,150,153,156],{},[58,148,149],{},"ストア版は、詳細を開いてすぐ利息計算を押すと、借方の2行目の金額欄がないというエラーになる。自作の拡張では、ページを開いた時点で「詳細を開く、借方に2行目を足す、金額と勘定科目を入れる」まで自動で進むようにした",[58,151,152],{},"源泉所得税の勘定科目は、法人税、住民税及び事業税にすると決めた。登録ボタンは押させない",[58,154,155],{},"9件中9件がその状態になるのを確かめてもらった",[58,157,158],{},"1円違いの総額候補を知らせる注記は、数円のずれは実務上問題ないと判断して全部消させた",[15,160,161,90,163],{},[51,162,89],{},[92,164,166],{"href":165},"/accounting-extension-withholding-tax-on-interest","クラウド会計の仕訳画面で、受取利息の源泉徴収税を自動で分ける機能をChrome拡張に持たせた",[97,168],{},[41,170,172],{"id":171},"_4-表の画像のocrをclaude-code-と-gemini-で突き合わせた","4. 表の画像のOCRを、Claude Code と Gemini で突き合わせた",[15,174,175],{},"表の画像42枚と、それをOCRしたCSV（5,278行）がリモートに上がっていた。\n画像をCSVに起こし直すため、agy コマンドで Gemini 3.1 Pro に読ませ、Claude Code の目視と突き合わせた。",[15,177,178],{},[51,179,53],{},[55,181,182,189,192,195],{},[58,183,184,185,188],{},"自分で打った1回目の agy は、画像を読まないまま固まっていた。指示文をフルパスで指し、「Do not run any commands.」と ",[19,186,187],{},"--add-dir"," を足した2回目で結果が返った",[58,190,191],{},"1枚目では、Gemini と Claude Code の目視が136件中136件一致した。既存のCSVは131件しか拾えておらず、正しいのは128件だった",[58,193,194],{},"一致を確かめて、残り41枚も同じ方法で進めると決めた",[58,196,197],{},"9枚目を読み終えたところで agy の利用枠が切れた。残り33枚は、枠が戻る9月19日の朝以降に持ち越した",[15,199,200,90,202],{},[51,201,89],{},[92,203,205],{"href":204},"/image-table-ocr-two-model-crosscheck","表の画像をCSVに起こすOCRを、Claude CodeとGemini 3.1 Pro（agy）で突き合わせた記録",[97,207],{},[41,209,211],{"id":210},"_5-海外株の円換算のマイナスを図にしポートフォリオ記録を追いつかせた","5. 海外株の円換算のマイナスを図にし、ポートフォリオ記録を追いつかせた",[15,213,214],{},"初めて扱う市場の株を買うと、ポートフォリオ画面の円換算がマイナスになっていた。\n文章の説明を読んでも頭に入らず、ウォーターフォールチャートで見せてもらった。",[15,216,217],{},[51,218,53],{},[55,220,221,224,227,230],{},[58,222,223],{},"マイナスの出どころは、注文時に上乗せした「わざと高め」の概算レートが取得原価の円換算に残っていたことだった。図は購入メモに入れてもらった",[58,225,226],{},"日次のポートフォリオ記録と株価通知を、今回の売買に追いつかせる作業を任せた",[58,228,229],{},"株数の書き換えが権限の仕組みに2回止められ、「ブラウザで直接直すのが一番早い」と勧められた。AIの側から更新できるはずだと返すと、書き換えは通り、本番実行と通知の送信まで進んだ",[58,231,232],{},"1日くらいのずれは許容した。通知用リポジトリのコミットは Codex レビューに high 判定2件で止められ、そのうち1件を直して再コミットした",[15,234,235,90,237],{},[51,236,89],{},[92,238,240],{"href":239},"/foreign-stock-fx-waterfall-and-portfolio-sync","海外株の円換算が約定直後にマイナスに見える理由をウォーターフォール図で整理し、ポートフォリオ記録と株価通知も追随させた",[97,242],{},[27,244,245],{"id":245},"今日の試行錯誤",[247,248,249,271],"table",{},[250,251,252],"thead",{},[253,254,255,259,262,265,268],"tr",{},[256,257,258],"th",{},"#",[256,260,261],{},"テーマ",[256,263,264],{},"試したこと",[256,266,267],{},"結果",[256,269,270],{},"気づき",[272,273,274,295,312,332,349,366,383,400],"tbody",{},[253,275,276,280,283,286,289],{},[277,278,279],"td",{},"1",[277,281,282],{},"make-diary の同期（6時台の振り返り）",[277,284,285],{},"過去日付の同期で全セッションを走査していたのを、対象日の00:00以降に更新されたファイルだけに絞らせた",[277,287,288],{},"成功。読む本数が821本から34本に減り、12分が33秒になった。出力は同じ19本",[277,290,291,294],{},[19,292,293],{},"find -newer"," は厳密に新しいファイルしか拾わないので、閾値を1秒前に置く",[253,296,297,300,303,306,309],{},[277,298,299],{},"2",[277,301,302],{},"サブエージェントの使い方（6時台の振り返り）",[277,304,305],{},"コンテキストを減らすため、サブエージェントをやめてメインで直列に回す案を出した",[277,307,308],{},"取りやめ。試算で減らないとわかった",[277,310,311],{},"採ったのは逆向きで、統計チェーンをサブエージェント1本に出した",[253,313,314,317,320,326,329],{},[277,315,316],{},"3",[277,318,319],{},"締めゲート（6時台の振り返り）",[277,321,322,323,325],{},"置き場を丸ごと宣言した計画書2本の ",[19,324,72],{}," を、実際に触ったファイルへ絞った",[277,327,328],{},"成功。ゲート本体は無改修",[277,330,331],{},"この日7回止まっていたのは、ゲートではなく宣言の書き方が原因だった",[253,333,334,337,340,343,346],{},[277,335,336],{},"4",[277,338,339],{},"ステータスラインの表示（8時台）",[277,341,342],{},"リセットまでの残り時間を、曜日つきの日時表示に変えさせた",[277,344,345],{},"成功。ただし2行目の Fable 枠が見切れ、表示の一部を1行目へ移した",[277,347,348],{},"動作確認で曜日が化けたのは文字コードの都合で、UTF-8 の出力を強制すると正しく出た",[253,350,351,354,357,360,363],{},[277,352,353],{},"5",[277,355,356],{},"受取利息の自動入力（9時台）",[277,358,359],{},"ストア版の「詳細を開いて利息計算」の手順を、ページを開いた時点で自動で進む形に作らせた",[277,361,362],{},"成功。9件中9件",[277,364,365],{},"移植したつもりの機能は、まだ移していなかった",[253,367,368,371,374,377,380],{},[277,369,370],{},"6",[277,372,373],{},"CF教材の205（6時台）",[277,375,376],{},"補助科目がなくて止まった202の残件2件に、補助科目を作ってよいと返した",[277,378,379],{},"成功。205の突合まで通った",[277,381,382],{},"投入が走っている間に画面を触ると、年度の切り替えとぶつかる",[253,384,385,388,391,394,397],{},[277,386,387],{},"7",[277,389,390],{},"表の画像のOCR（14時台）",[277,392,393],{},"agy の1回目が固まったあと、指示文をフルパスにし、コマンド実行を禁じて2回目を打った",[277,395,396],{},"成功。1枚目は136件中136件一致。9枚目で利用枠が切れて中断",[277,398,399],{},"利用枠はモデルでなくアカウントで共通で、3.8 Flash に替えても同じ429が返った",[253,401,402,405,408,411,414],{},[277,403,404],{},"8",[277,406,407],{},"ポートフォリオ記録の更新（9時台）",[277,409,410],{},"株数の書き換えが2回止まったあと、AIの側から更新できるはずだと返した",[277,412,413],{},"成功。書き換えが通り、本番実行と通知1件まで進んだ",[277,415,416],{},"AIの推測では、止まっていたのはバックグラウンドのサブエージェントの経路だけだった",[97,418],{},[27,420,421],{"id":421},"今日の学び",[55,423,424,427,430,433],{},[58,425,426],{},"朝のエージェントは、手順書が許した「ls で見えれば進む」に従っていただけだった。直す先はエージェントではなく手順書だった",[58,428,429],{},"「昨日のうちに終わっているはず」は、対応表を1節足しただけで確かめられた。未完は306とP4-3の2つに絞れた",[58,431,432],{},"既存のCSVが正しいかどうかは、単独で眺めてもわからなかった。別の読み取りと並べて、1枚目で131件と136件の差が出た",[58,434,435],{},"検算の文章が頭に入らないときは、ウォーターフォールチャートにしてもらうと、次に同じ表示を見たとき開く場所が決まる",[97,437],{},[27,439,440],{"id":440},"明日やること",[55,442,445,455,461],{"className":443},[444],"contains-task-list",[58,446,449,454],{"className":447},[448],"task-list-item",[450,451],"input",{"disabled":452,"type":453},true,"checkbox"," OCRの残り33枚を、agy の利用枠が戻る9月19日の朝以降に読む",[58,456,458,460],{"className":457},[448],[450,459],{"disabled":452,"type":453}," CF教材の出し先を、ウェブで出す場合の流れを見ながら決める",[58,462,464,466],{"className":463},[448],[450,465],{"disabled":452,"type":453}," 受取利息の拡張を、画面のボタンを順に押す作りのままにするか、APIで登録する作りにするかを考える",[97,468],{},[27,470,471],{"id":471},"関連記事",[55,473,474,478,482,486,490],{},[58,475,476],{},[92,477,95],{"href":94},[58,479,480],{},[92,481,131],{"href":130},[58,483,484],{},[92,485,166],{"href":165},[58,487,488],{},[92,489,205],{"href":204},[58,491,492],{},[92,493,240],{"href":239},{"title":495,"searchDepth":496,"depth":496,"links":497},"",2,[498,499,507,508,509,510],{"id":29,"depth":496,"text":29},{"id":39,"depth":496,"text":39,"children":500},[501,503,504,505,506],{"id":43,"depth":502,"text":44},3,{"id":101,"depth":502,"text":102},{"id":136,"depth":502,"text":137},{"id":171,"depth":502,"text":172},{"id":210,"depth":502,"text":211},{"id":245,"depth":496,"text":245},{"id":421,"depth":496,"text":421},{"id":440,"depth":496,"text":440},{"id":471,"depth":496,"text":471},"diary",null,"朝の make-diary が同期の完了前に先へ進んだ原因を手順書に見つけて直した日。CF教材の205を突合して帳票3種を1つのExcelにまとめ、受取利息の源泉税を分けるChrome拡張を作らせ、表の画像のOCRを別モデルと突き合わせた。","md",{},"/2026-09-15-diary","daily-log",false,"2026-09-15T00:00:00.000Z",{"title":5,"description":513},"make-diary","2026-09/2026-09-15/diary-2026-09-15",[524,525,521,526,527,528],"日記","Claude Code","クラウド会計","Chrome拡張","OCR","ZMHft4zrHLbeVAdY0SimKMZ6qqFH_MPh37GHVi2zwJM",[],[532,536,540,544,548],{"title":533,"path":534,"publishedAt":535},"2026年9月3日の開発日記 - 止まったセッションを二度拾い直した日","/2026-09-03-diary","2026-09-03T00:00:00.000Z",{"title":537,"path":538,"publishedAt":539},"2026年9月14日の開発日記 - 学習ゲートを畳み、Codexレビューに置き換えた日","/2026-09-14-diary","2026-09-14T00:00:00.000Z",{"title":541,"path":542,"publishedAt":543},"2026年9月10日の開発日記 - 直したのに画面が応えない日","/2026-09-10-diary","2026-09-10T00:00:00.000Z",{"title":545,"path":546,"publishedAt":547},"2026年9月5日の開発日記 - ひと月遅れで届く開示を追う仕組みと、記事1本ごとに走っていた10万字の連鎖","/2026-09-05-diary","2026-09-05T00:00:00.000Z",{"title":549,"path":550,"publishedAt":551},"2026年8月19日の開発日記 - やり直しの単位を小さくした一日","/2026-08-19-diary","2026-08-19T00:00:00.000Z","https://log.eurekapu.com/og/blog/2026-09-15-diary.png?v=2026-09-15T00%3A00%3A00.000Z&title=2026%E5%B9%B49%E6%9C%8815%E6%97%A5%E3%81%AE%E9%96%8B%E7%99%BA%E6%97%A5%E8%A8%98%20-%20%E3%80%8C%E7%B5%82%E3%82%8F%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AF%E3%81%9A%E3%80%8D%E3%82%92%E7%A2%BA%E3%81%8B%E3%82%81%E3%81%A6%E5%9B%9E%E3%81%A3%E3%81%9F%E6%97%A5&author=Kei%20Komatsu&sig=10e6b2d9cc8bb63f",1789529465713]