2026年4月23日の開発日記
eurekapuの教育コンテンツを朝7時から夕方17時まで丸一日かけて改修した。ミラーカラムレイアウトのスクロール化、会計基準データベースの原文忠実化、書籍OCRバッチ処理の3本立て。6セッション並行で回し、計10時間以上をeurekapu関連に費やした。夜にはVolta側の不具合を機に、Node.js管理をmiseへ移行し、Claude Codeも公式インストーラー版で入れ直した。
今日のタイムライン

今日やったこと
1. ミラーカラムからスクロール形式へのレイアウト変換
CF計算書の基礎知識ページ(boki3/ch0)で、スライドを1枚ずつ切り替えるミラーカラムレイアウトが「説明が断片化する」という問題を抱えていた。スクロール形式に変換し、テキストが一続きに読めるようにした。
主な成果:
- boki3/ch0をスクロール形式に変換(singleSectionModeを活用)
- Ch1(借入金ライフサイクル)以降もスクロール変換
- Excel基礎講座のcontents.vue、top.vueも同様に変換
- SVGのwidth属性追加で初期レンダリングの小さ表示を修正
- steps側のコンテンツをboki3/ch0に流し込み、内容の差分を解消
2. 会計基準データベースの原文忠実化
CF計算書ページに会計基準の引用コンポーネントを追加しようとしたら、そもそもJSONデータが原文と食い違っていた。修正を始めたらASBJのドメイン移行(asb.or.jp → asb-j.jp)が発覚し、リンクページ198件のURL検証まで走ることになった。
主な成果:
- 全42基準のソースを収集(ASBJ 24件HTML + JICPA/FSA 10件PDF)
- html_to_json.pyで31件の条文JSON変換に成功
- cf-jitsumu-shishinの条文を53→61に拡充(Turso DBのOCRテキストと照合)
- リンクページ198件のURL検証・修正(e-Gov 19件、JICPA 6件、ASBJ 55件を更新)
詳細: 会計基準データベースの原文忠実化
3. 書籍9冊のOCR処理とTurso DB格納
yomitoku(日本語特化AI OCR)で会計基準のPDF 9冊・589ページをMarkdownに変換し、Turso DBに格納した。
主な成果:
- 連結CF実務指針、外貨建実務指針、金融商品実務指針など9冊を処理
- process_yomitoku_book関数でTurso Embedded Replicaに直接格納
- 蔵書DBを19冊→28冊、約3,200チャンクに拡張
4. 教育コンテンツの設計方針整理
CF計算書教材を「はじめて系(教材A)」と「ゼロから作る系(教材B)」の2層に分離する設計方針をまとめた。steps側のch0-1/ch0-2が「はじめて系」の内容を抱え込んでいる問題を特定。計画書を作成してCodexレビューも受けたが、仕様が固まりきらず「保留」とした。
主な成果:
- 2層分離の方針文書をmemoに保存
- Codexレビューで致命的指摘3点を反映して計画修正
- ただし実装計画は仕様未確定のため保留
5. レッスンページの整理
lessonsのインデックスページを「初めて系」と「ゼロから作る系」の2セクション・2列グリッドにリデザインした。
主な成果:
- topicsにcategoryフィールドを追加し、上段/下段に分離
- CF精算表ステップ学習と別表四と五にドラフトバッジを追加
- カード配置のリンク先を直接ch0ページに変更
6. Volta から mise への移行と Claude Code 再インストール
Volta 側で不具合が出たため、3月に立てていた移行計画を実行した。Node.js の管理を mise に切り替え、Volta を PATH から外し、Claude Code も公式のネイティブインストーラー版で入れ直した。
主な成果:
- Node.js 管理を Volta → mise に切り替え(
v22.22.2が mise 経由で動作) - ユーザー環境変数から Volta 関連の PATH エントリを削除
- npm 版 Claude Code が Windows ネイティブバイナリを欠いていたため、公式インストーラーで再セットアップ(
2.1.119) - 3月の 移行計画記事 を
todo: "done"に更新
詳細: Volta から mise への移行完了 - Claude Code を入れ直すまでに詰まった5つの落とし穴
今日の試行錯誤
| # | テーマ | 試したこと | 結果 | 気づき |
|---|---|---|---|---|
| 1 | スクロール変換 | レイアウト全体をstepsレイアウトに差し替え | 失敗 | ユーザーはセクション列・チャプター列を残したかった |
| 2 | スクロール変換 | MillerViewerのslotでColumn 4だけ差し替え | 失敗 | トピック列を消してほしいという要望だった |
| 3 | スクロール変換 | singleSectionModeでトピック列を自動非表示 | 成功 | 既存コンポーネントの隠し機能が使えた |
| 4 | ASBJ基準取得 | curlで旧ドメイン(asb.or.jp)にアクセス | 失敗 | ドメインが新サイト(asb-j.jp)に移行していた |
| 5 | HTML→JSON変換 | 既存JSONファイルを上書き | 事故 | citations.jsonの引用マッピングが壊れた。gitから復元 |
| 6 | リンク検証 | HTTPステータスだけチェック | 不十分 | 200が返っても内容が違うケースを見落とす |
| 7 | チャプター切替 | nextTickでscrollTo(0) | 失敗 | ブラウザのスクロール復元と競合。flush:'post' + rAFで解決 |
| 8 | mise状態確認 | PowerShellで head -5 / which node を実行 | 失敗 | Linux/macOSコマンドはPowerShellで通らない。Select-Object -First / Get-Command に書き換え |
| 9 | Volta削除 | Windowsの環境変数編集画面でPathを保存 | 失敗 | 「2047文字より長い値は設定できません」。[Environment]::SetEnvironmentVariable で直接書き換えて解決 |
| 10 | Claude Code入れ直し | npm install -g @anthropic-ai/claude-code | 失敗 | claude.exe が 500バイトのエラー出力スクリプトだった。optional依存のネイティブバイナリが降ってこない |
| 11 | Claude Code入れ直し | 公式の irm https://claude.ai/install.ps1 | iex | 成功 | C:\Users\numbe\.local\bin\claude.exe に2.1.119が入って正常動作 |
今日の学び
- singleSectionModeのような既存機能を先に探すと、大規模な改修を避けられる
- JSONファーストの原則: HTMLは生成物、ソースデータのJSONを編集する
- 上書きではなく追加: 既存のマッピングが参照するIDは不変にする
flush: 'post'+requestAnimationFrameの二段構えは、Vue + ブラウザのスクロール競合で使い回せるパターン- 外部サイトのドメイン移行は連鎖する — 1箇所見つけたら関連URL全部を洗い直す
- Windowsの環境変数編集画面には2047文字の壁がある。PATHが育ち切ったら
[Environment]::SetEnvironmentVariableで直接書き換えるのが速い [Environment]::SetEnvironmentVariable(...)は保存済みレジストリを書き換えるだけで、起動中セッションの$env:Pathは書き換わらない。反映にはターミナルを開き直す- npm版Claude Codeの
claude.exeはネイティブバイナリ本体ではなく、optional依存のダウンロードが失敗したときのエラー出力用スクリプト。Windowsは公式のinstall.ps1が結局一番近道