[{"data":1,"prerenderedAt":231},["ShallowReactive",2],{"content-/zaimu-dd-learning-content":3,"all-pages-for-dir":209,"related-/zaimu-dd-learning-content":210,"og-image-/zaimu-dd-learning-content":230},{"id":4,"title":5,"body":6,"category":191,"concepts":192,"description":193,"extension":194,"meta":195,"navigation":62,"ogImage":192,"path":196,"project_name":197,"published":198,"publishedAt":199,"seo":200,"stem":201,"tags":202,"todo":192,"unpublished":198,"updatedAt":192,"__hash__":208},"pages/2026-06/2026-06-10/zaimu-dd-learning-content.md","蔵書DBから財務DD学習コンテンツを自作する——解説とクイズをローカル限定で組み上げた記録",{"type":7,"value":8,"toc":180},"minimark",[9,13,17,22,25,28,31,34,42,46,49,109,112,116,119,122,125,129,132,135,138,141,144,147,150,153],[10,11,5],"h1",{"id":12},"蔵書dbから財務dd学習コンテンツを自作する解説とクイズをローカル限定で組み上げた記録",[14,15,16],"p",{},"財務デューデリジェンス（財務DD）を体系的に学び直したくて、自分の蔵書データベースを素材にした学習コンテンツを作った。前日にTurso DB（book-knowledge-base）へ追加しておいた財務DDの専門書2冊から本文を取り出し、「財務DDとは何か」から始まる解説と38問のクイズに組み上げる。クラウドにはデプロイせず、ローカルの dev サーバーでだけ見られる自分専用の教材だ。",[18,19,21],"h2",{"id":20},"まず蔵書dbの中身を確認する","まず蔵書DBの中身を確認する",[14,23,24],{},"最初にやったのは、Turso DBのレプリカが入っているディレクトリから、前日に追加した財務DD関連の専門書2冊の情報を取り出してもらうことだった。Tursoスキル経由で問い合わせると、2冊とも説明・目次・チャンク数つきで登録済みであることが確認できた。SQLは自分では書かない。「昨日追加した財務DDの書籍を調べて」と日本語で頼めば、裏でDBを叩いて結果をまとめてくれる。",[18,26,27],{"id":27},"ローカル限定コンテンツとして設計する",[14,29,30],{},"mdx-playground のトップページには「テスト・デモ」という枠があり、ここに消費税経理処理パターンのカードのような、デプロイ対象外のローカル限定コンテンツを並べている。今回もこの枠にカードを1枚追加する方針にした。",[14,32,33],{},"参考にしたのは、別プロジェクトで作っていた解説＋クイズ形式のコンテンツ構成。「財務DDとは何か」という入口から始めて、書籍の論点を解説とクイズで往復する読み物コースを目指した。",[14,35,36,37,41],{},"計画書を書かせてCodexにレビューさせたところ、初回で致命的指摘を1件受けて計画を修正し、再レビューで承認をもらってから着手した。途中、Codexの設定ファイルで ",[38,39,40],"code",{},"service_tier"," の値が現バージョンで無効というエラーが出て、issueを記録しつつ設定行を削除して回避する一幕もあった。",[18,43,45],{"id":44},"実装チャンク取得からカード追加まで","実装：チャンク取得からカード追加まで",[14,47,48],{},"実装はこの順で進めてもらった。",[50,51,54,65,75,81,87,97,103],"ul",{"className":52},[53],"contains-task-list",[55,56,59,64],"li",{"className":57},[58],"task-list-item",[60,61],"input",{"checked":62,"disabled":62,"type":63},true,"checkbox"," Turso の chunks テーブルから両書籍の本文を論点別に取得",[55,66,68,70,71,74],{"className":67},[58],[60,69],{"checked":62,"disabled":62,"type":63}," クイズ38問の ",[38,72,73],{},"quizData.ts"," を生成（検証パス済み）",[55,76,78,80],{"className":77},[58],[60,79],{"checked":62,"disabled":62,"type":63}," 再利用可能なクイズカードコンポーネントを作成",[55,82,84,86],{"className":83},[58],[60,85],{"checked":62,"disabled":62,"type":63}," 解説本体（zaimu-dd系コンポーネント）を作成",[55,88,90,92,93,96],{"className":89},[58],[60,91],{"checked":62,"disabled":62,"type":63}," ",[38,94,95],{},"nuxt.config.ts"," の除外設定でデプロイ対象から外す",[55,98,100,102],{"className":99},[58],[60,101],{"checked":62,"disabled":62,"type":63}," トップページのテスト・デモ枠にカードを追加",[55,104,106,108],{"className":105},[58],[60,107],{"checked":62,"disabled":62,"type":63}," Vitest の整合性テストを作成",[14,110,111],{},"ここで一つ詰まった。3ページとも200が返るのに、トップページの新しいカードだけHTMLに出てこない。隣のカードは表示されているのに、だ。ファイルにはコードが入っているのにサーバーが古いモジュールを配信し続けていて、touch でHMRを強制しても直らない。原因はブラウザキャッシュではなく、Viteの SSRモジュールが古いまま残っていたことだった。issueを記録して dev サーバーを再起動したら、カードが現れた。",[18,113,115],{"id":114},"これ表示って確認してくれてますか","「これ表示って確認してくれてますか？」",[14,117,118],{},"実装完了の報告を受けたあと、ふと聞いてみた。「ごめん、これ表示って確認してくれてますか？」",[14,120,121],{},"返ってきた答えは白状だった。これまでの確認は curl でHTMLの中身を見ただけで、ブラウザでの見た目は一度も確認していなかったという。そこからChromeを起動させ、スクリーンショットで実際の表示を確認させた。あわせて解説を5章に分割し、ハブページを章カード5枚構成に作り替え、右側にスクロール追従の目次を付けてもらった。クイズの動作もブラウザ上でクリックして確かめ、最後にデバッグ用Chromeの後片付けとテスト再実行まで済ませた。",[14,123,124],{},"curlの200と「画面に出ている」は別物だ、という当たり前のことを改めて体に刻んだ。",[18,126,128],{"id":127},"解説が少なすぎますね","「解説が少なすぎますね」",[14,130,131],{},"章分割が終わった画面を眺めて、今度は別の違和感を拾った。章カードを開いても、解説本文が数行で終わってしまう。クイズの問題数に対して読み物が薄すぎる。「解説がもっと増えてもいいと思う」と伝えた。",[14,133,134],{},"ここからの増強は並列で走らせた。各章の解説本文は、書籍ソースの全文に基づいて章ごとに5並列のエージェントで書き直し。あわせてSVG図解スキルをロードして、書籍の重要図解をSVGに起こすエージェントを3並列で起動した。",[14,136,137],{},"結果、解説は5章合計で約700字から約3.3万字へ増えた。47倍だ。書籍のキラーチャート6点もSVGとして各章に埋め込まれ、ブラウザのスクリーンショットで図の見た目まで確認してから完了報告を受けた。",[14,139,140],{},"なお、ソースが専門書である以上、ここで作った解説・クイズはあくまで私的な学習用だ。だからこそクラウドにはデプロイせず、ローカル限定の枠に置いている。",[18,142,143],{"id":143},"矢印キーで章を行き来できるようにする",[14,145,146],{},"3.3万字を読むとなると、章間の移動がマウス頼みでは煩わしい。最後に、左右の矢印キーで前後の章へ移動できるキーボードショートカットを追加してもらった。",[14,148,149],{},"既存のクイズコンテンツにキーボード操作の前例があったので、まずそれを確認させてから実装。ページャーの近くにショートカットのヒント表示も添えた。ブラウザで実際に矢印キーを押して動作確認させたところ、キーを連打すると遷移が競合する問題が見つかり、これも解消してもらった。解説側・クイズ側の両方で←→が効くことを確認し、ハブは解説5枚＋クイズ5枚の対称構成に落ち着いた。",[18,151,152],{"id":152},"今日の学び",[50,154,155,162,168,174],{},[55,156,157,161],{},[158,159,160],"strong",{},"curl のステータスコードは表示確認ではない","。「確認しました」の中身を問い直したら、ブラウザでの確認が一度もされていなかった。以後、表示系の変更はスクリーンショットまで求める",[55,163,164,167],{},[158,165,166],{},"dev サーバーの SSRモジュールは古いまま居座ることがある","。touch でのHMR強制が効かないときは、キャッシュを疑う前にサーバー再起動",[55,169,170,173],{},[158,171,172],{},"蔵書DBは「読む」だけでなく「教材を生成する」素材になる","。書籍2冊 → 解説5章3.3万字＋クイズ38問＋SVG図6点、という変換が1日で回った",[55,175,176,179],{},[158,177,178],{},"画面の違和感を拾うのは人間の仕事","。解説の薄さも、カードが出ていないことも、画面を見て初めて気づいた。実行はAIに任せても、目で見る係は降りられない",{"title":181,"searchDepth":182,"depth":182,"links":183},"",2,[184,185,186,187,188,189,190],{"id":20,"depth":182,"text":21},{"id":27,"depth":182,"text":27},{"id":44,"depth":182,"text":45},{"id":114,"depth":182,"text":115},{"id":127,"depth":182,"text":128},{"id":143,"depth":182,"text":143},{"id":152,"depth":182,"text":152},"dev",null,"Turso DBに格納した財務DDの専門書2冊をソースに、解説5章＋クイズ38問の学習コンテンツをローカル限定で構築。表示確認漏れや解説不足の指摘を経て増強した試行錯誤の記録。","md",{},"/zaimu-dd-learning-content","mdx-playground",false,"2026-06-10T00:00:00.000Z",{"title":5,"description":193},"2026-06/2026-06-10/zaimu-dd-learning-content",[203,204,205,206,207],"財務DD","学習コンテンツ","Turso","Nuxt","クイズ","P4eA6Fd7QPe2upI8g1j59a8nrknkTbVTh3NeqDJu6Uo",[],[211,215,219,223,227],{"title":212,"path":213,"publishedAt":214},"簿記学習サイトのクイズ入口をハブ化 — 問題文UIから矢印キー移動まで一気に整理した","/bookkeeping-quiz-hub-redesign","2026-07-25T00:00:00.000Z",{"title":216,"path":217,"publishedAt":218},"語源英単語4000語をどう一覧化するか — Codex実装の停滞からナビゲーション統合まで","/gogen-eitango-word-list-navigation","2026-07-21T00:00:00.000Z",{"title":220,"path":221,"publishedAt":222},"2026年6月16日の開発日記 - Cloudflare の1MB壁とNuxtビルド20分の壁、両方に頭をぶつけた日","/2026-06-16-diary","2026-06-16T00:00:00.000Z",{"title":224,"path":225,"publishedAt":226},"小学校算数のインタラクティブ学習コンテンツを作る - 蔵書DBから全12章60セクションを一気に構築","/oshieru-sansu-interactive","2026-06-12T00:00:00.000Z",{"title":228,"path":229,"publishedAt":226},"一問一答をスライド形式UIに——矢印キーで77問を送る学習コンテンツ改善の記録","/qa-slide-ui-improvements","https://log.eurekapu.com/og/blog/zaimu-dd-learning-content.png?v=2026-06-10T00%3A00%3A00.000Z&title=%E8%94%B5%E6%9B%B8DB%E3%81%8B%E3%82%89%E8%B2%A1%E5%8B%99DD%E5%AD%A6%E7%BF%92%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%82%92%E8%87%AA%E4%BD%9C%E3%81%99%E3%82%8B%E2%80%94%E2%80%94%E8%A7%A3%E8%AA%AC%E3%81%A8%E3%82%AF%E3%82%A4%E3%82%BA%E3%82%92%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E9%99%90%E5%AE%9A%E3%81%A7%E7%B5%84%E3%81%BF%E4%B8%8A%E3%81%92%E3%81%9F%E8%A8%98%E9%8C%B2&author=Kei%20Komatsu&sig=88b77b6a20ca853d",1785099276779]