daily-log

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がガイドに準拠した。

詳細: 決算書教科書プロジェクト立ち上げと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年版」と特定。

詳細: 書籍OCRパイプラインとPDFリネーム自動化


今日の試行錯誤

#テーマ試したこと結果気づき
1教科書計画書Codexにレビュー依頼を3往復全指摘解消、実装中に「設計から考え直し」が発生せず計画フェーズでCodexを回し切るほうが結果的に速い
2書籍本文の活用「TursoDBの書籍編集済みテキストを参照」と指示を受けたが翻案リスクで停止章節見出しレベルの「論点骨組み」のみ抽出に変更翻案リスクの相談はAIに代行させず自分で判断する
3フォントサイズ違反並列実装後にgrepで15px/14px違反を一括検出20分で全SVGがガイドに準拠サブエージェント並列はルール違反を後で一括検出する前提で組む
4VOICEVOX計画Codexに4往復レビュー致命的指摘ゼロまで詰めて実装着手音声の自動進行タイマーやパス分離など見落としやすい点を拾えた
5LocalStorageトピック単位キーで保存 → トピック移動で設定が消えるグローバル単一キーに変更、旧データの移行も組み込みUI設定はトピック横断のグローバルが正解
6デプロイ計画R2画像移行を最優先に計画Codexから「順序が逆、333s縮めるNitroチャンク外出しが先」と指摘大きい数字から潰す原則を計画前に確認する
7dynamic importチャンク分割で対応する案Codexから「Workerバンドルからは消えない」と指摘dynamic importはランタイム遅延ロード、バンドル削減には別手段が必要
8IntersectionObserver判定バンドを狭く設定初期表示時にQ1がバンド外に出てQ2/Q3が選ばれるバンドは余裕を持って広く取る
9自動スクロールObserver callbackがスクロール中に上のカードを拾うsuppressObserverUntilで900ms callbackを止める仕組みスクロールアニメーション中はObserverを抑止する
10UI色設計正解=マゼンタで実装ユーザーから「マゼンタは現在表示中の図用。正解は緑、誤答はグレー+✗」と指示色の役割は最初に整理しておく
11都道府県名表示グラフ件名に最初から表示ユーザーから「答えがバレるので最初は隠して」と指示クイズUIは「答えに繋がる情報を出さない」のが原則
12yomitoku WALロックEmbedded Replicaで取り込み別プロセスがWALを掴んでロック解除されずHTTP直結に切り替えれば回避できる
13PDFリネーム誤読サブエージェントがタイトル判定副題「その思想と実践」を「光の思想と実践」と誤読画像で目視確認するレビュー工程は外せない
14給与計算マニュアル表紙だけで年版を判定「令和4年5月20日発行」と誤って取得奥付(後ろのページ)を必ず確認する
15EDINETDB_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-mappublic/配下の静的JSONに切り出して効果測定
  • 教科書の本文を「書籍からの引用範囲」で再設計する案を検討
  • 都道府県クイズのactiveクラス枠線が他のクイズページにも適用できないか確認

関連記事