[{"data":1,"prerenderedAt":682},["ShallowReactive",2],{"content-/boki3-chapter-reorder-and-exam-removal":3,"all-pages-for-dir":680,"og-image-/boki3-chapter-reorder-and-exam-removal":681},{"id":4,"title":5,"body":6,"category":660,"description":661,"extension":662,"meta":663,"navigation":121,"path":664,"project_name":665,"published":666,"publishedAt":667,"seo":668,"stem":669,"tags":670,"todo":677,"updatedAt":678,"__hash__":679},"pages/2026-04/2026-04-24/boki3-chapter-reorder-and-exam-removal.md","boki3（CF計算書3級編）の章順並び替えとexam削除を Codexレビュー付きで実施した記録",{"type":7,"value":8,"toc":643},"minimark",[9,13,17,20,24,29,32,51,54,58,70,77,141,155,162,166,169,175,178,185,266,270,273,284,288,294,397,403,407,410,443,454,513,516,520,526,552,559,562,566,573,587,591,594,597,601,604,607,639],[10,11,5],"h1",{"id":12},"boki3cf計算書3級編の章順並び替えとexam削除を-codexレビュー付きで実施した記録",[14,15,16],"p",{},"eurekapu の CF 計算書 3 級編（boki3）の章順を、別教材である steps（CF 計算書のライフサイクル別解説）と揃える作業をした。boki3 の章は以前ばらばらの順序で並んでおり、株主資本・借入金・運転資本といった主要トピックが steps 側の流れと噛み合っていなかった。読者が boki3 → steps へ進むときに章の位置がずれて見える違和感を、コードと設定ファイルだけで解消したい。Excel と Python スクリプトには触らない方針で、Web アプリ側の 8 ファイルを 1 コミットに集約した。",[14,18,19],{},"途中、計画書を一度上書きしてしまうハプニングが発生し、git staging から復元する寄り道を挟んだ。さらに Codex レビューで「Phase 間に中途半端な状態が残る」と指摘され、exam 削除を Phase 7 に集約し直す設計変更を入れた。最終的にはコミット e7462d7 として 1 コミットにまとめ、ブラウザで章順・ch4 の旧株主資本ページ・/boki3/exam の 404 化まで動作確認した。",[21,22,23],"h2",{"id":23},"今日やったこと",[25,26,28],"h3",{"id":27},"_1-章順をライフサイクル順に揃える方針","1. 章順をライフサイクル順に揃える方針",[14,30,31],{},"boki3 の章は、もともと簿記 3 級の試験範囲をなぞる形で並んでいた。一方 steps 側は「会社のお金の流れ（ライフサイクル）」を軸に並んでいる。",[33,34,35,39,42,45,48],"ul",{},[36,37,38],"li",{},"株主資本（出資・配当）",[36,40,41],{},"借入金（融資・返済）",[36,43,44],{},"運転資本（売上・仕入・経費）",[36,46,47],{},"設備投資",[36,49,50],{},"まとめ",[14,52,53],{},"boki3 の章タイトルだけ書き換えても、ファイル名とルーティングがずれて保守が難しくなる。逆にファイル名まで全部リネームすると差分が膨れて怖い。今回は「章番号の付け替え」と「ナビゲーションでの並び順入れ替え」だけで、ファイル名はそのまま残す方針にした。",[25,55,57],{"id":56},"_2-計画書作成-codex-に上書きされるハプニング","2. 計画書作成 → Codex に上書きされるハプニング",[14,59,60,64,65,69],{},[61,62,63],"code",{},"memo/2026-04-24/cf-boki3-reorder-plan.md"," に計画書を書いた。途中で Codex に「この計画レビューして」と渡したら、Codex が ",[66,67,68],"strong",{},"同じパスに自分の改稿版を書き戻してしまった","。元の計画書がディスク上から消えた。",[14,71,72,73,76],{},"一瞬血の気が引いたが、計画書を書いた直後に ",[61,74,75],{},"git add"," していた記憶があった。staging には残っているはずだ。",[78,79,84],"pre",{"className":80,"code":81,"language":82,"meta":83,"style":83},"language-bash shiki shiki-themes vitesse-light vitesse-light","# staging に残っているか確認\ngit diff --cached -- memo/2026-04-24/cf-boki3-reorder-plan.md\n\n# staging から復元（HEAD ではなく index から取り出す）\ngit checkout -- memo/2026-04-24/cf-boki3-reorder-plan.md\n","bash","",[61,85,86,95,116,123,129],{"__ignoreMap":83},[87,88,91],"span",{"class":89,"line":90},"line",1,[87,92,94],{"class":93},"sxvE3","# staging に残っているか確認\n",[87,96,98,102,106,110,113],{"class":89,"line":97},2,[87,99,101],{"class":100},"senZ8","git",[87,103,105],{"class":104},"sdGka"," diff",[87,107,109],{"class":108},"snbK4"," --cached",[87,111,112],{"class":108}," --",[87,114,115],{"class":104}," memo/2026-04-24/cf-boki3-reorder-plan.md\n",[87,117,119],{"class":89,"line":118},3,[87,120,122],{"emptyLinePlaceholder":121},true,"\n",[87,124,126],{"class":89,"line":125},4,[87,127,128],{"class":93},"# staging から復元（HEAD ではなく index から取り出す）\n",[87,130,132,134,137,139],{"class":89,"line":131},5,[87,133,101],{"class":100},[87,135,136],{"class":104}," checkout",[87,138,112],{"class":108},[87,140,115],{"class":104},[14,142,143,146,147,150,151,154],{},[61,144,145],{},"git diff --cached"," で staging に元の内容が残っているのを確認し、",[61,148,149],{},"git checkout --"," で working tree に書き戻した。Codex が書いた改稿版は別ファイル（",[61,152,153],{},"cf-boki3-reorder-plan-codex.md","）として退避し、後で必要な指摘だけを元の計画書にマージする形にした。",[14,156,157,158,161],{},"学んだのは「Codex に計画書のパスを渡すときは、そのパスに書き戻される可能性を前提にする」ということ。次からは Codex 用に別パス（",[61,159,160],{},"-review.md"," 接尾辞など）を渡す。",[25,163,165],{"id":164},"_3-codex-レビューで指摘された-phase-間の中途半端状態","3. Codex レビューで指摘された Phase 間の中途半端状態",[14,167,168],{},"復元した計画書を Codex に再度レビューしてもらったところ、致命的な指摘が 1 つあった。",[170,171,172],"blockquote",{},[14,173,174],{},"Phase 4 で章順を入れ替えた直後に、Phase 5 で exam リンクの一部だけ削除すると、その時点でデプロイすると「章順は新しいのに exam リンクは古いまま」という中途半端な状態が現れる。Phase をまたぐリファクタリングは、各 Phase の終端で必ずデプロイ可能な状態にする方が安全。",[14,176,177],{},"最初の計画では exam 削除を Phase 4・Phase 5・Phase 6 にまたがって少しずつ進める設計だった。途中で作業が止まったらサイトが壊れる。",[14,179,180,181,184],{},"これを ",[66,182,183],{},"Phase 7 に exam 削除を一括集約"," する形に書き直した。Phase 0〜6 までは exam ページと exam リンクをまったく触らず、Phase 7 で「exam ページを 404 化」「全 exam リンクの一括削除」「steps への導線追加」を一気にやる。Phase 6 が終わった時点でも、Phase 7 が終わった時点でも、サイトは壊れない。",[78,186,190],{"className":187,"code":188,"language":189,"meta":83,"style":83},"language-markdown shiki shiki-themes vitesse-light vitesse-light","# 修正前（Codex 指摘前）\nPhase 4: 章順入れ替え + 一部 exam リンク削除\nPhase 5: 残り exam リンク削除\nPhase 6: 章番号付け直し\nPhase 7: 動作確認\n\n# 修正後（Codex 指摘反映）\nPhase 4: 章順入れ替えのみ\nPhase 5: 章番号付け直し\nPhase 6: 配当セクション削除\nPhase 7: exam 一括削除（404 化 + 全リンク削除 + steps 導線追加）\nPhase 8: 動作確認\n","markdown",[61,191,192,202,208,213,218,223,228,236,242,248,254,260],{"__ignoreMap":83},[87,193,194,198],{"class":89,"line":90},[87,195,197],{"class":196},"sFA8A","#",[87,199,201],{"class":200},"syTZV"," 修正前（Codex 指摘前）\n",[87,203,204],{"class":89,"line":97},[87,205,207],{"class":206},"sG7-3","Phase 4: 章順入れ替え + 一部 exam リンク削除\n",[87,209,210],{"class":89,"line":118},[87,211,212],{"class":206},"Phase 5: 残り exam リンク削除\n",[87,214,215],{"class":89,"line":125},[87,216,217],{"class":206},"Phase 6: 章番号付け直し\n",[87,219,220],{"class":89,"line":131},[87,221,222],{"class":206},"Phase 7: 動作確認\n",[87,224,226],{"class":89,"line":225},6,[87,227,122],{"emptyLinePlaceholder":121},[87,229,231,233],{"class":89,"line":230},7,[87,232,197],{"class":196},[87,234,235],{"class":200}," 修正後（Codex 指摘反映）\n",[87,237,239],{"class":89,"line":238},8,[87,240,241],{"class":206},"Phase 4: 章順入れ替えのみ\n",[87,243,245],{"class":89,"line":244},9,[87,246,247],{"class":206},"Phase 5: 章番号付け直し\n",[87,249,251],{"class":89,"line":250},10,[87,252,253],{"class":206},"Phase 6: 配当セクション削除\n",[87,255,257],{"class":89,"line":256},11,[87,258,259],{"class":206},"Phase 7: exam 一括削除（404 化 + 全リンク削除 + steps 導線追加）\n",[87,261,263],{"class":89,"line":262},12,[87,264,265],{"class":206},"Phase 8: 動作確認\n",[25,267,269],{"id":268},"_4-配当セクションを-boki3-から削除","4. 配当セクションを boki3 から削除",[14,271,272],{},"boki3 の旧 ch3 に「貸付金等の配当」セクションがあった。steps 側にも同じ内容があり、教材として重複している。boki3 は「教材 A」（試験範囲を最短でなぞる教材）として位置づけたいので、配当の詳細は steps（教材 B）に寄せ、boki3 からは丸ごと削除した。",[14,274,275,276,279,280,283],{},"該当 Vue ファイルからセクションを削除し、目次（",[61,277,278],{},"contents.vue","）から配当への内部リンクも削除。配当について深掘りしたい読者向けに、章末から ",[61,281,282],{},"/cf-steps/dividends"," への導線リンクを 1 行だけ残した。",[25,285,287],{"id":286},"_5-exam-ページの-404-化と-steps-導線","5. exam ページの 404 化と steps 導線",[14,289,290,293],{},[61,291,292],{},"/boki3/exam"," は元々、各章の練習問題をまとめた仕上げページだった。今回 boki3 を教材 A として軽量化する方針に合わせて、exam ページは丸ごと廃止する。",[78,295,299],{"className":296,"code":297,"language":298,"meta":83,"style":83},"language-vue shiki shiki-themes vitesse-light vitesse-light","\u003C!-- apps/web/app/pages/boki3/exam.vue -->\n\u003Cscript setup lang=\"ts\">\n// 教材 A 化に伴い exam ページは廃止。\n// 既存リンクや検索流入は 404 で受ける。\nthrow createError({ statusCode: 404, statusMessage: \"Not Found\" })\n\u003C/script>\n","vue",[61,300,301,306,338,343,348,388],{"__ignoreMap":83},[87,302,303],{"class":89,"line":90},[87,304,305],{"class":93},"\u003C!-- apps/web/app/pages/boki3/exam.vue -->\n",[87,307,308,312,316,320,323,326,330,333,335],{"class":89,"line":97},[87,309,311],{"class":310},"shFtX","\u003C",[87,313,315],{"class":314},"sHkkW","script",[87,317,319],{"class":318},"s4oTP"," setup",[87,321,322],{"class":318}," lang",[87,324,325],{"class":310},"=",[87,327,329],{"class":328},"sMJiu","\"",[87,331,332],{"class":104},"ts",[87,334,329],{"class":328},[87,336,337],{"class":310},">\n",[87,339,340],{"class":89,"line":118},[87,341,342],{"class":93},"// 教材 A 化に伴い exam ページは廃止。\n",[87,344,345],{"class":89,"line":125},[87,346,347],{"class":93},"// 既存リンクや検索流入は 404 で受ける。\n",[87,349,350,353,356,359,363,366,370,373,376,378,380,383,385],{"class":89,"line":131},[87,351,352],{"class":314},"throw",[87,354,355],{"class":100}," createError",[87,357,358],{"class":310},"({ ",[87,360,362],{"class":361},"sz8Xr","statusCode",[87,364,365],{"class":310},": ",[87,367,369],{"class":368},"sM54T","404",[87,371,372],{"class":310},", ",[87,374,375],{"class":361},"statusMessage",[87,377,365],{"class":310},[87,379,329],{"class":328},[87,381,382],{"class":104},"Not Found",[87,384,329],{"class":328},[87,386,387],{"class":310}," })\n",[87,389,390,393,395],{"class":89,"line":225},[87,391,392],{"class":310},"\u003C/",[87,394,315],{"class":314},[87,396,337],{"class":310},[14,398,399,402],{},[61,400,401],{},"throw createError"," で SSG ビルド時に 404 を返す形にし、ルーティング自体は残しつつコンテンツを消した。各章の末尾に置いていた「次の章へ」「exam へ進む」のうち、後者を「steps で実務的な流れを学ぶ」リンクに差し替えた。",[25,404,406],{"id":405},"_6-phase-08-の実装と-1-コミット集約","6. Phase 0〜8 の実装と 1 コミット集約",[14,408,409],{},"計画書の Phase 0（バックアップ確認）から Phase 8（動作確認）までを、1 セッションで連続実行した。",[33,411,412,415,422,425,428,431,434,437,440],{},[36,413,414],{},"Phase 0: 関連ファイルの git status 確認・dry-run",[36,416,417,418,421],{},"Phase 1: 章番号定数の整理（",[61,419,420],{},"useBoki3Chapters"," composable）",[36,423,424],{},"Phase 2: ナビゲーション順序の入れ替え",[36,426,427],{},"Phase 3: 章タイトル・description の更新",[36,429,430],{},"Phase 4: 章間の「次の章へ」リンク差し替え",[36,432,433],{},"Phase 5: 章番号付け直し（ch1〜ch5）",[36,435,436],{},"Phase 6: 配当セクション削除",[36,438,439],{},"Phase 7: exam ページ 404 化 + 全 exam リンク削除 + steps 導線追加",[36,441,442],{},"Phase 8: ブラウザ動作確認",[14,444,445,446,449,450,453],{},"最終的に変更したのは Vue ページ 5 個と composable 1 個、ナビゲーション設定 1 個、ルーティング設定 1 個の ",[66,447,448],{},"計 8 ファイル","。これを「途中で ",[61,451,452],{},"git add -p"," しつつ動作確認 → 全部まとめて 1 コミット」の流れにし、コミット e7462d7 として確定した。",[78,455,457],{"className":80,"code":456,"language":82,"meta":83,"style":83},"git add apps/web/app/pages/boki3/ \\\n        apps/web/app/composables/useBoki3Chapters.ts \\\n        apps/web/app/components/boki3/Nav.vue\ngit commit -m \"refactor(boki3): chapter reorder to lifecycle order and exam removal\"\n# [master e7462d7] refactor(boki3): chapter reorder to lifecycle order and exam removal\n#  8 files changed, 142 insertions(+), 217 deletions(-)\n",[61,458,459,472,479,484,503,508],{"__ignoreMap":83},[87,460,461,463,466,469],{"class":89,"line":90},[87,462,101],{"class":100},[87,464,465],{"class":104}," add",[87,467,468],{"class":104}," apps/web/app/pages/boki3/",[87,470,471],{"class":108}," \\\n",[87,473,474,477],{"class":89,"line":97},[87,475,476],{"class":104},"        apps/web/app/composables/useBoki3Chapters.ts",[87,478,471],{"class":108},[87,480,481],{"class":89,"line":118},[87,482,483],{"class":104},"        apps/web/app/components/boki3/Nav.vue\n",[87,485,486,488,491,494,497,500],{"class":89,"line":125},[87,487,101],{"class":100},[87,489,490],{"class":104}," commit",[87,492,493],{"class":108}," -m",[87,495,496],{"class":328}," \"",[87,498,499],{"class":104},"refactor(boki3): chapter reorder to lifecycle order and exam removal",[87,501,502],{"class":328},"\"\n",[87,504,505],{"class":89,"line":131},[87,506,507],{"class":93},"# [master e7462d7] refactor(boki3): chapter reorder to lifecycle order and exam removal\n",[87,509,510],{"class":89,"line":225},[87,511,512],{"class":93},"#  8 files changed, 142 insertions(+), 217 deletions(-)\n",[14,514,515],{},"リファクタリング系のコミットは小さく分けたくなるが、今回のように「中途半端な状態でデプロイされると壊れる」場合は 1 コミットに集約した方が安全だと判断した。Codex の指摘がそのまま「コミットの粒度」にも効いた格好だ。",[25,517,519],{"id":518},"_7-ブラウザでの動作確認","7. ブラウザでの動作確認",[14,521,522,525],{},[61,523,524],{},"pnpm dev"," を立ち上げ、Chrome で 3 点を確認した。",[33,527,528,537,543],{},[36,529,530,365,533,536],{},[66,531,532],{},"章順",[61,534,535],{},"/boki3"," のトップで章リストがライフサイクル順（株主資本 → 借入金 → 運転資本 → 設備投資 → まとめ）に並んでいる",[36,538,539,542],{},[66,540,541],{},"ch4 ページ",": 旧「株主資本」だった ch4 の URL を踏むと、新しい章番号でリダイレクトされず、内容も新しい配置で表示される",[36,544,545,548,549,551],{},[66,546,547],{},"/boki3/exam の 404 化",": ブラウザで ",[61,550,292],{}," を直接開くと 404 ページが返る",[14,553,554,555,558],{},"特に 3 点目は SSG ビルドだと dev では確認しきれない懸念があったので、",[61,556,557],{},"pnpm generate && pnpm preview"," でビルド済み静的ファイルからも 404 を確認した。",[21,560,561],{"id":561},"今日学んだこと",[25,563,565],{"id":564},"計画書を-codex-に渡すときは別パスを渡す","計画書を Codex に渡すときは別パスを渡す",[14,567,568,569,572],{},"Codex に計画書のレビューを頼むと、Codex は親切のつもりで ",[66,570,571],{},"同じパスに改稿版を書き戻す","。今日はたまたま staging に残っていたので復旧できたが、staging に上げる前だったらディスクから消えていた。",[14,574,575,576,579,580,583,584,586],{},"次からは Codex に渡す前に ",[61,577,578],{},"cp plan.md plan.md.bak"," でバックアップを取るか、Codex 用に別パス（",[61,581,582],{},"plan-for-codex-review.md","）を渡す運用にする。staging に置いておくと「あれ、ここに置いたはずだけど消えた」と気づいたあと冷静に ",[61,585,149],{}," で復元できる。",[25,588,590],{"id":589},"phase-間の中途半端状態を避ける","Phase 間の中途半端状態を避ける",[14,592,593],{},"Codex の指摘で一番効いたのが「Phase の境目で必ずデプロイ可能な状態にしろ」というもの。最初の計画では exam 削除を 3 つの Phase にまたがって進めていたので、途中で作業が止まると章順だけ新しくて exam リンクだけ古い、というキメラ状態が発生する。",[14,595,596],{},"Phase ごとに「ここで止めてデプロイしても、ユーザーから見て壊れていないか？」を自問するクセをつけたい。今回は exam 削除を Phase 7 に一括集約することで、Phase 6 終わりまでは「旧仕様完全」、Phase 7 終わりからは「新仕様完全」と二状態に絞れた。",[25,598,600],{"id":599},"教材-a-教材-b-の方針が決まると削除がやりやすい","教材 A / 教材 B の方針が決まると削除がやりやすい",[14,602,603],{},"「boki3 を教材 A、steps を教材 B」と方針が言語化された瞬間、配当セクションを boki3 から削除する判断と、exam ページを丸ごと廃止する判断が連鎖的に決まった。方針なしで「このセクション要る？要らない？」を 1 個ずつ悩むと判断が揺れるが、教材 A/B の役割が決まっていれば「これは教材 B の責任範囲」と即決できる。",[21,605,606],{"id":606},"明日やること",[33,608,611,620,630],{"className":609},[610],"contains-task-list",[36,612,615,619],{"className":613},[614],"task-list-item",[616,617],"input",{"disabled":121,"type":618},"checkbox"," steps 側の章末に「boki3 の対応章へ戻る」リンクを追加して、教材 A↔B の往復導線を完成させる",[36,621,623,625,626,629],{"className":622},[614],[616,624],{"disabled":121,"type":618}," Codex 用の計画書バックアップ運用を、自分の Claude Code rules に書き足す（",[61,627,628],{},"plan-codex-review.md"," の更新）",[36,631,633,635,636,638],{"className":632},[614],[616,634],{"disabled":121,"type":618}," exam 廃止を README やサイトマップにも反映し、内部検索で ",[61,637,292],{}," がヒットしないか最終確認する",[640,641,642],"style",{},"html pre.shiki code .sxvE3, html code.shiki .sxvE3{--shiki-default:#A0ADA0;--shiki-dark:#A0ADA0}html pre.shiki code .senZ8, html code.shiki .senZ8{--shiki-default:#59873A;--shiki-dark:#59873A}html pre.shiki code .sdGka, html code.shiki .sdGka{--shiki-default:#B56959;--shiki-dark:#B56959}html pre.shiki code .snbK4, html code.shiki .snbK4{--shiki-default:#A65E2B;--shiki-dark:#A65E2B}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sFA8A, html code.shiki .sFA8A{--shiki-default:#999999;--shiki-default-font-weight:bold;--shiki-dark:#999999;--shiki-dark-font-weight:bold}html pre.shiki code .syTZV, html code.shiki .syTZV{--shiki-default:#1C6B48;--shiki-default-font-weight:bold;--shiki-dark:#1C6B48;--shiki-dark-font-weight:bold}html pre.shiki code .sG7-3, html code.shiki .sG7-3{--shiki-default:#393A34;--shiki-dark:#393A34}html pre.shiki code .shFtX, html code.shiki .shFtX{--shiki-default:#999999;--shiki-dark:#999999}html pre.shiki code .sHkkW, html code.shiki .sHkkW{--shiki-default:#1E754F;--shiki-dark:#1E754F}html pre.shiki code .s4oTP, html code.shiki .s4oTP{--shiki-default:#B07D48;--shiki-dark:#B07D48}html pre.shiki code .sMJiu, html code.shiki .sMJiu{--shiki-default:#B5695977;--shiki-dark:#B5695977}html pre.shiki code .sz8Xr, html code.shiki .sz8Xr{--shiki-default:#998418;--shiki-dark:#998418}html pre.shiki code .sM54T, html code.shiki .sM54T{--shiki-default:#2F798A;--shiki-dark:#2F798A}",{"title":83,"searchDepth":97,"depth":97,"links":644},[645,654,659],{"id":23,"depth":97,"text":23,"children":646},[647,648,649,650,651,652,653],{"id":27,"depth":118,"text":28},{"id":56,"depth":118,"text":57},{"id":164,"depth":118,"text":165},{"id":268,"depth":118,"text":269},{"id":286,"depth":118,"text":287},{"id":405,"depth":118,"text":406},{"id":518,"depth":118,"text":519},{"id":561,"depth":97,"text":561,"children":655},[656,657,658],{"id":564,"depth":118,"text":565},{"id":589,"depth":118,"text":590},{"id":599,"depth":118,"text":600},{"id":606,"depth":97,"text":606},"dev","eurekapuのboki3を steps と整合するライフサイクル順（株主資本→借入金→運転資本→…）に並び替え、配当セクションとexamページを削除して教材A化した記録。計画書を一度上書きしてしまい git staging から復元した試行錯誤と、Codex レビューで指摘された Phase 間の中途半端状態を解消する設計修正までの実装過程","md",{},"/boki3-chapter-reorder-and-exam-removal","eurekapu-nuxt4",false,"2026-04-24T00:00:00.000Z",{"title":5,"description":661},"2026-04/2026-04-24/boki3-chapter-reorder-and-exam-removal",[671,672,673,674,675,676],"eurekapu","boki3","リファクタリング","Codexレビュー","Vue","計画書","memo",null,"ddqRZtJF_p7q6AGiOBhGLdIXD2IcHIggqnjkG-ql2N4",[],"https://log.eurekapu.com/favicon.svg",1777329226465]