2026年5月13日の開発日記
朝から3つのプロジェクトを並行で進めた。Eurekapu側では決算書教科書プロジェクトを新しく起こし、Codexにレビューを依頼しては計画を書き直す往復を3〜4周こなした。mdx-playground側では統計年鑑のデータを使った都道府県農作物クイズを実装し、画面の細かいUI指示を10往復ほど受けながら詰めた。book-knowledge-base側では裁断済みの本5冊をyomitokuでOCRしてTurso DBに流し込み、合間にPDFリネームも回した。デプロイ時間が9.3分に伸びていた問題も、原因を切り分けてR2画像移行と_redirectsで決着させた。
今日のタイムライン

今日やったこと
1. 決算書教科書プロジェクトの立ち上げとSVG統合(Eurekapu)
クイズ54トピックを土台にした「教科書ページ」を新規に起こした。計画書をCodexに3往復渡してから着手し、Phase X-0で984問の抽出スクリプトとレジストリを作成、Phase X-2でCH2〜CH7をサブエージェント4本+2本の並列で執筆した。書籍テキストを参考にする話で著作権の翻案リスクに気づき、いったん立ち止まって章節見出しレベルの「論点骨組み」のみ抽出する方針に切り替えた。並列実装後にフォントサイズ違反(15px、14px)をgrepで一括検出して20分で全SVGがガイドに準拠した。
2. クイズのVOICEVOX読み上げ・章番号リフレッシュ・ハイライト全件レビュー(Eurekapu)
ずんだもんでクイズの問題文・選択肢・解説を読み上げる機能を実装した。Codexレビューを4往復しながら計画を固め、984問の音声をPythonスクリプトで一括生成(バックグラウンド実行)。LocalStorageキーをトピック単位からグローバル単一キーに切り替えて、自動再生2倍の設定がトピック移動でも引き継がれるようにした。Phase 4(C/F編6トピック)・Phase 5(分析編12トピック)・Phase 6(開示・企業価値編6トピック)・Phase 7(workbook 2トピック)を並列サブエージェントで生成。参考書籍と目次番号が酷似していたので、displayNumberで「1-1 / 1-2」形式に変えてタイトルも全54ファイル書き直した。
詳細: VOICEVOX読み上げ・章番号リフレッシュ・ハイライトレビュー計画
3. デプロイ9.3分問題のR2画像移行とNitroチャンク外出し(Eurekapu)
デプロイ時間が9.3分に伸びていた。dist/総量248MB・5,195ファイル、画像155MBが突出。最初はR2画像移行を最優先に計画したが、Codexから「順序が逆。施策1(21s短縮)ではなくサーバービルド333sを縮める大型データ外出しを最優先にすべき」と指摘を受けて全面改訂。slide-artboard-master-map(1.04MB)とclient.precomputed.mjs(694KB)の外出し、_redirectsでR2への302リダイレクト、deploy.ps1の修正まで進めて、assets.info-accounting.com/images/... への302チェーンを目視確認した。
詳細: デプロイ高速化:R2画像移行とNitroチャンク外出し
4. 統計年鑑データで都道府県農作物クイズを実装(mdx-playground)
統計年鑑(2024/25)の都道府県別主産地データをTurso DBから引いて、左にSVGチャート・右に4択クイズの2ペインレイアウトで実装した。EurekapuのQuizPageを参考に書き換え、IntersectionObserverで現在表示中のカードを判定して左図と同期。バンドが狭くて初期表示時にQ1がバンド外に出る問題、スクロール中にObserverが一瞬上のカードを拾う問題はsuppressObserverUntilで900ms callbackを止める仕組みで解消した。UIの細かい指示が10往復ほど飛んできて、マゼンタ→緑+グレー+✗、件名を隠す→回答後表示、解説16px、選択肢横4列、activeクラスの濃いグレー枠線などを順次反映した。
5. 書籍OCRパイプラインとPDFリネーム自動化(book-knowledge-base / mdx-playground)
裁断済み書籍5冊をyomitokuでOCR→restructure-bookでチャンク統合(合計1,148→288に圧縮)。WALロックに何度も遭遇したのでEmbedded ReplicaからHTTP直結に切り替える対応を都度入れた。amazon_metadata取得をWebFetchからagent-browserに書き換え、コマンド定義(.claude/commands/yomitoku.md Step 6.5)を更新。PDFリネームでは並列サブエージェントが副題を誤読していた(「光の思想と実践」→正しくは「その思想と実践」)のを画像で確認して修正、給与計算マニュアルは奥付を画像化して「4年版」と特定。
今日の試行錯誤
| # | テーマ | 試したこと | 結果 | 気づき |
|---|---|---|---|---|
| 1 | 教科書計画書 | Codexにレビュー依頼を3往復 | 全指摘解消、実装中に「設計から考え直し」が発生せず | 計画フェーズでCodexを回し切るほうが結果的に速い |
| 2 | 書籍本文の活用 | 「TursoDBの書籍編集済みテキストを参照」と指示を受けたが翻案リスクで停止 | 章節見出しレベルの「論点骨組み」のみ抽出に変更 | 翻案リスクの相談はAIに代行させず自分で判断する |
| 3 | フォントサイズ違反 | 並列実装後にgrepで15px/14px違反を一括検出 | 20分で全SVGがガイドに準拠 | サブエージェント並列はルール違反を後で一括検出する前提で組む |
| 4 | VOICEVOX計画 | Codexに4往復レビュー | 致命的指摘ゼロまで詰めて実装着手 | 音声の自動進行タイマーやパス分離など見落としやすい点を拾えた |
| 5 | LocalStorage | トピック単位キーで保存 → トピック移動で設定が消える | グローバル単一キーに変更、旧データの移行も組み込み | UI設定はトピック横断のグローバルが正解 |
| 6 | デプロイ計画 | R2画像移行を最優先に計画 | Codexから「順序が逆、333s縮めるNitroチャンク外出しが先」と指摘 | 大きい数字から潰す原則を計画前に確認する |
| 7 | dynamic import | チャンク分割で対応する案 | Codexから「Workerバンドルからは消えない」と指摘 | dynamic importはランタイム遅延ロード、バンドル削減には別手段が必要 |
| 8 | IntersectionObserver | 判定バンドを狭く設定 | 初期表示時にQ1がバンド外に出てQ2/Q3が選ばれる | バンドは余裕を持って広く取る |
| 9 | 自動スクロール | Observer callbackがスクロール中に上のカードを拾う | suppressObserverUntilで900ms callbackを止める仕組み | スクロールアニメーション中はObserverを抑止する |
| 10 | UI色設計 | 正解=マゼンタで実装 | ユーザーから「マゼンタは現在表示中の図用。正解は緑、誤答はグレー+✗」と指示 | 色の役割は最初に整理しておく |
| 11 | 都道府県名表示 | グラフ件名に最初から表示 | ユーザーから「答えがバレるので最初は隠して」と指示 | クイズUIは「答えに繋がる情報を出さない」のが原則 |
| 12 | yomitoku WALロック | Embedded Replicaで取り込み | 別プロセスがWALを掴んでロック解除されず | HTTP直結に切り替えれば回避できる |
| 13 | PDFリネーム誤読 | サブエージェントがタイトル判定 | 副題「その思想と実践」を「光の思想と実践」と誤読 | 画像で目視確認するレビュー工程は外せない |
| 14 | 給与計算マニュアル | 表紙だけで年版を判定 | 「令和4年5月20日発行」と誤って取得 | 奥付(後ろのページ)を必ず確認する |
| 15 | EDINETDB_API_KEY | ユーザーから新キー受領 | .env書き込みがharnessで拒否 | Python os.environ経由でセッション内のみ使用に切り替え |
| 16 | ビルド中の編集 | デプロイ中にファイル修正 | app-styles.B3Vj9TBQハッシュ不整合エラー | ビルド中にファイルを触らない |
今日の学び
- Codexレビューは計画フェーズで完全に回し切るほうが、実装中の戻りが減って結果的に速い
- 並列サブエージェント実装は「ルール違反を後で一括検出する前提」で組むと、品質と速度のバランスが取れる
- AIが回せるパイプライン(OCR・抽出・リネーム)に、人間は判断と違和感検知だけを差し込む構図が今日の主役
- 著作権の翻案リスクは、AIに「やります」と言わせる前に自分で立ち止まる必要がある
- WALロックや
.env書き込み禁止のような環境制約は、CLAUDE.mdに書いた教訓が次に効く - UI設計の細かい指示(色・配置・隠す/表示)は、最初に役割を整理しておくと往復が減る
明日やること
- 業種別16 SVG図(パイロット + 17並列)のインデックスページを整える
- Eurekapuのデプロイで
slide-artboard-master-mapをpublic/配下の静的JSONに切り出して効果測定 - 教科書の本文を「書籍からの引用範囲」で再設計する案を検討
- 都道府県クイズのactiveクラス枠線が他のクイズページにも適用できないか確認