2026年5月25日の開発日記
今日は1冊の本が、紙の山からデータベースを経由して、教材のコラムに化けていくのを追いかけた一日だった。裁断スキャンした投資の参考書をOCRしてTursoに流し込み、47セクションに整え、そこから「数値ベンチマーク」と「逆張りの読み方」を抜き出して財務諸表教材のページに編み込んだ。途中でWALロックがスクリプトを240秒黙らせ、別セッションのgit操作がファイルを消し、決算スキャンが3週間前の決算を拾ってきた。判断は自分が下し、実行はClaude Codeに回す——その分業を何度もくり返した。
今日のタイムライン

今日やったこと
1. 投資の参考書をOCRしてTurso DBに取り込む(WALロック救出)
約39MB・214ページの裁断スキャンPDFを /yomitoku でOCRし、図60枚を抜き出してTursoに61チャンクで格納。続く /restructure-book のセクション統合スクリプトが出力ゼロのまま240秒沈黙した。原因はEmbedded ReplicaのWALロック——先行プロセスのロックが残り、新しい BEGIN が待ちぼうけを食らっていた。ハングしたPythonプロセス群だけをkillしてHTTP直接接続版に書き換えたら、すでにcommitは済んでいて、最後の sync() だけが固まっていたと判明した。
主な成果:
- 214ページOCR → 61チャンクでTurso格納、セクション統合で47チャンクに正規化
- WALロックの正体(commit済み・sync()だけハング)を突き止めた
restructure-bookテンプレートのsync()7箇所を除去し、HTTP直接接続化で再発を断った
詳細: 裁断スキャンした参考書をOCRしてTursoに取り込む:WALロックからの救出
2. 投資の名著の知見を財務諸表教材に統合する
DBに整えた知見から「指標がいくつ以上なら優良か」という数値ベンチマークと、教科書の常識を覆す逆張りの読み方を抜き出し、教材のコラムとfigureに落とし込んだ。固有名(人名・書名)は出さず、「経済的な堀(moat)」という概念だけを統合する方針で進めた。計画書をcodex(GPT-5.5)でレビューに回したら出力が812KBに膨れ、ツールがパースエラーを連発——引き継ぎメモで一度仕切り直し、次セッションで実装を完走した。
主な成果:
- 共通コラム基盤
InvestorColumn.vueを新設(教材にコラムボックスがゼロだったため) - 粗利率(コカ・コーラ約60%・GM約12%)など実名企業のFY2024概算を裏取りしてfigure化(T2/T3/T4)
- codex指摘(投資助言トーンの緩和+免責、書籍出典と財務データ出典の分離)を反映
3. 決算ビートスキャンに「発表日ゲート」を新設
毎朝のパイプライン末尾で回す earnings-beat-scan が、米国休場日で0件のはずなのにPLTR(5月4日決算)を拾ってきた。x-searchは投稿日でしか絞らず、発表日が24時間窓の内かを検証するゲートが無かった。「あくまで1日分だけ見てほしい、24時間外は全部弾いて」と方針を決め、Step 1.5の発表日ゲートを新設して4重ガードで強制。0件こそ正しい結果として受け入れる形に直した。
詳細: 決算ビートスキャンに「発表日ゲート」を新設した話 — 0件こそ正しい結果
4. 正二十面体の3D図解と、並行セッションのgit事故
「正二十面体は60の同じ形に分割できる」という一文を、触って動かせる図解にしたかった。調べたら頼んでいない885行の未コミット実装が既にあり、しかも上書き直前に別の何かが「なぜファージ頭部は正二十面体なのか」というウイルス学版へ作り替えていた。全上書きで壊すのを避け、回転対称アニメと60分割展開アニメだけを差し込んだ。だが検証後、本体.vueと自分のissueが消えた——並行セッションの破壊的なgit操作(git stash -u / git clean)が未追跡ファイルを巻き込んだと疑い、書き戻さず手を止めた。
詳細: 正二十面体の対称性を触れる3D図解にする:幽霊実装とgit事故
5. 議論まとめを公開記事化+歴史考証
ダウンロードしておいた「フィクションと労働と資本」の議論まとめを公開記事に仕立て、ブラウザで目視確認まで通した。タグが11個も並んでいたので「最大3つ」に絞り、そのルールをcontent-managementスキルにも追記。薩摩藩が外様になった経緯を補足する際、自分が「源平合戦で敗れた」と勘違いしていたのを「関ヶ原(1600)で西軍につき敗れた」と訂正してもらい、史実ベースで書き直した。
関連記事: フィクションと労働と資本
今日の試行錯誤
| # | テーマ | 試したこと | 結果 | 気づき |
|---|---|---|---|---|
| 1 | セクション統合 | Embedded Replicaでスクリプト実行→240秒沈黙 | 失敗(ハング) | 先行プロセスのWALロックが残り新しいBEGINが待ちになる既知問題 |
| 2 | 統合の救出 | プロセス群をkillしHTTP直接接続版に書き換え | 成功 | 実はcommit済みでsync()だけハングしていた。kill後もクラウドに反映済み |
| 3 | 再発防止 | テンプレートのsync()7箇所を除去 | 成功 | 接続のたびにsyncしない設計に変えればロック地獄を踏まない |
| 4 | 計画のcodexレビュー | 812KBの巨大出力をツールで受けようとした | 失敗(パースエラー連発) | 巨大出力は引き継ぎメモで仕切り直すのが速い |
| 5 | 教材へのfigure統合 | 実名企業の粗利率・設備投資比率を裏取りしてfigure化 | 成功 | 既存教材は計算式は教えるが「目安」が薄く、ベンチマークが補完になる |
| 6 | 決算スキャン | 休場日に実行したらPLTR(5/4決算)が混入 | 失敗(検証漏れ) | x-searchは投稿日しか見ない。発表日ゲートが要る。0件は恐れない |
| 7 | 3D図解の上書き | 既存885行が並行でファージ版に化けていた | 回避 | 全上書きせずアニメだけ差し込んで再構成を守った |
| 8 | git事故 | 検証後に未追跡の本体.vueとissueが消失 | 事故 | 並行セッションのstash -u/git cleanは未追跡ファイルを巻き込む |
今日の学び
- WALロックでスクリプトが固まっても、commitは済んでいることがある。kill前に「どこまで進んだか」を疑う癖をつける。
- 巨大なレビュー出力をツールで丸ごと受けようとすると詰まる。引き継ぎメモで一度区切ると次が速い。
- 自動抽出(x-search)はノイズを拾う。「24時間以内に発表されたものか」を機械で検証するゲートを入れ、0件を正しい結果として受け入れる。
- 未追跡ファイルはgitの保護対象外。複数セッションを同時に走らせる日は、こまめにコミットしておかないと巻き添えで消える。
- 史実を補足するときは、自分の記憶(源平合戦)を疑ってAIに突き合わせさせる。違和感を拾うのは人間、裏取りはAIの分業が効く。
明日やること
- 並行セッションで消えた正二十面体ページの復元方針を確定する(stash退避か作り直しか)
- 投資の名著統合の残テーマ(Part2/CH8〜12への横展開)を進める
- WALロック回避を他のbook取り込みフローにも横展開できるか確認