[{"data":1,"prerenderedAt":449},["ShallowReactive",2],{"content-/takken-phase3-pager-glossary-completion":3,"related-/takken-phase3-pager-glossary-completion":437,"all-pages-for-dir":447,"og-image-/takken-phase3-pager-glossary-completion":448},{"id":4,"title":5,"body":6,"category":418,"description":419,"extension":420,"meta":421,"navigation":422,"ogImage":423,"path":424,"project_name":425,"published":426,"publishedAt":427,"seo":428,"stem":429,"tags":430,"todo":423,"unpublished":426,"updatedAt":423,"__hash__":436},"pages/2026-06/2026-06-15/takken-phase3-pager-glossary-completion.md","宅建教科書 Phase 3 完成：前後カテゴリ pager + 矢印キーナビ + 用語集テーブル化",{"type":7,"value":8,"toc":406},"minimark",[9,22,30,37,55,62,66,69,83,120,133,137,143,149,152,164,167,171,174,179,191,194,211,214,217,298,308,312,319,334,348,355,358,361,364,371,374],[10,11,12,13,17,18,21],"p",{},"宅建教科書 Phase 3 を1日で詰め切った。朝のセッションでパスルートの二重 (",[14,15,16],"code",{},"/takken/takken/",") を踏んで一回ひっくり返し、昼から夕方にかけて ",[14,19,20],{},"/takken/*"," 全 49 ページに前後カテゴリ pager と矢印キーナビを追加、用語集は 4 カラムカードを全部捨ててテーブルに作り直した。最後に Codex に通したら、用語集の中に「事前承諾」が 2 つ並んでいたり、「試験での問われ方」という見出し文字列がそのまま用語として混入していたりして、用語集として体をなしていないことが画面で露呈した。",[23,24,26,27,29],"h2",{"id":25},"朝takkentakken-のパスルート二重問題","朝：",[14,28,16],{}," のパスルート二重問題",[10,31,32,33,36],{},"朝イチで Hub をクリックして気付いた。",[14,34,35],{},"/takken/takken/takken-gyo-menkyo/"," で 404。",[10,38,39,40,43,44,46,47,50,51,54],{},"frontmatter の ",[14,41,42],{},"path: \"/takken-gyo-menkyo\""," が Hub からのリンク先 ",[14,45,35],{}," と一致していない。原因は frontmatter ",[14,48,49],{},"path"," の指定がただの ",[14,52,53],{},"/takken-gyo-menkyo"," になっていて、field 中間セグメントを想定していなかったこと。",[10,56,57,58,61],{},"ここで一度 field 別の中間 Hub ",[14,59,60],{},"/takken/{field}/"," を追加する案を試したものの、要らないと判断してパンくずから field セグメント自体を除外することにした。「学習推奨順序」「公開状況」「H2/H3 カウント」も Hub から削った。情報を盛り込みすぎると、結局どこから読み始めればいいのか分からなくなる。",[23,63,65],{"id":64},"昼49-カテゴリを矢印キーで巡る","昼：49 カテゴリを矢印キーで巡る",[10,67,68],{},"午後にユーザーから「コンテンツを矢印キーで移動できるようにしてほしい」という指示が来た。",[10,70,71,72,75,76,79,80,82],{},"最初は ",[14,73,74],{},"[...slug].vue"," に ",[14,77,78],{},"setPageLayout"," で takken レイアウトを当てるだけで済ませようとしたが、SSR 経路で ",[14,81,78],{}," 単独だと効かないことに気付き、middleware パターンに切り替えた。実装方針:",[84,85,86,104,107],"ul",{},[87,88,89,75,92,95,96,99,100,103],"li",{},[14,90,91],{},"apps/web/app/layouts/takken.vue",[14,93,94],{},"←"," / ",[14,97,98],{},"→"," の ",[14,101,102],{},"keydown"," リスナと、ページ末尾の 2 カード型 pager を追加",[87,105,106],{},"単一閲覧順を「Hub → intro → glossary → 49 カテゴリ（章立て順）」で固定",[87,108,109,95,112,115,116,119],{},[14,110,111],{},"input",[14,113,114],{},"textarea"," / IME 変換中（",[14,117,118],{},"e.isComposing","）はキー入力を無視",[10,121,122,123,125,126,128,129,132],{},"ブラウザで ",[14,124,94],{}," を押すと前カテゴリへ、",[14,127,98],{}," で次カテゴリへ。用途地域 13 種を順番にめくっていく動きが、本のページをめくる感覚に近い。コミット ",[14,130,131],{},"81ad6785 feat(takken): 前後カテゴリ pager と矢印キーナビを全 /takken/* に追加"," で確定。",[23,134,136],{"id":135},"夕方用語集を-4-カラムカードから捨てる","夕方：用語集を 4 カラムカードから捨てる",[10,138,139,142],{},[14,140,141],{},"/takken/glossary"," を開いてユーザーが拾った違和感が鋭かった。",[144,145,146],"blockquote",{},[10,147,148],{},"「連帯」とか「連帯責任」をクリックすると、ただ記事のページにリンクさせてるだけじゃないですか。あと、これ 4 カラムにしてる意味があんまりないんで、テーブルデータにした方がいいんじゃないですか。説明文のところ、薄いグレーの文字列じゃなくて、普通に黒でいいんですよ。",[10,150,151],{},"4 カラムのカードコンポーネントは「ぱっと見でリッチ」だが、用語集としては検索性も比較性もない。テーブルにすれば 1 行 1 用語で目が縦に走る。指示を受けて 3 点を一気に直した:",[153,154,155,158,161],"ol",{},[87,156,157],{},"各用語に短い解説スニペットを追加（generator 拡張 + データ再生成）",[87,159,160],{},"4 カラムカード → テーブル形式",[87,162,163],{},"説明文の薄グレーをやめて黒文字に",[10,165,166],{},"書き直したあと「結局これは用語集として機能しているのか」を自問してから画面に戻った。",[23,168,170],{"id":169},"codex-で剥がれた用語ではない用語","Codex で剥がれた「用語ではない用語」",[10,172,173],{},"戻ったら、ユーザーがもう一段深い違和感を持っていた。",[144,175,176],{},[10,177,178],{},"「事前承諾」も 2 つあるし、用語集として機能していない。試験での問われ方とかって、むちゃくちゃ同じのが入ってる。",[10,180,181,182,186,187,190],{},"画面を上から眺めたら、確かに「試験での問われ方」「このカテゴリで覚える 3 つの結論」といった ",[183,184,185],"strong",{},"callout タイトルの文字列"," が用語として並んでいる。本文中の ",[14,188,189],{},"**...**"," 強調語を抽出する generator が、callout 内の見出しまで巻き込んでいたせい。「事前承諾」が 2 つ並ぶのも、用語ベースで集約しておらず、出典カテゴリごとに別行になっていた結果。",[10,192,193],{},"ここで Codex (gpt-5.5) にデータを見せてレビューしてもらったら、ノイズの正体が 5 系統に整理できた:",[84,195,196,199,202,205,208],{},[87,197,198],{},"HARD_EXCLUDE: callout タイトル（「試験での問われ方」等）",[87,200,201],{},"PREDICATE_FRAGMENT: 「できない」「に該当」「のみ」「みなされる」などの述語フラグメント",[87,203,204],{},"TEMPORAL_MARKER: 「期間中」「広告時」「事前承諾」「処分後」などの時系列マーカー",[87,206,207],{},"CONCLUSION_LABEL: 「許可必要」「適用不可」「対象外」などの結論ラベル",[87,209,210],{},"META_FRAGMENT: 「それ以外」「同じ」「対象」「横ばい」「原則」などのメタ表現",[10,212,213],{},"加えて「あらかじめ〜」「いずれか〜」「すべての〜」などの連体修飾語始まり、「ゲート①」「ステップ②」の番号付きラベルも除外対象に追加。",[10,215,216],{},"数字の推移は以下のとおり:",[218,219,220,237],"table",{},[221,222,223],"thead",{},[224,225,226,230,234],"tr",{},[227,228,229],"th",{},"段階",[227,231,233],{"align":232},"right","用語数 (unique)",[227,235,236],{},"主な除去対象",[238,239,240,252,263,274,285],"tbody",{},[224,241,242,246,249],{},[243,244,245],"td",{},"初期生成",[243,247,248],{"align":232},"1,254",[243,250,251],{},"フィルタなし",[224,253,254,257,260],{},[243,255,256],{},"過去問引用除外",[243,258,259],{"align":232},"1,040",[243,261,262],{},"「令和2年問40」等",[224,264,265,268,271],{},[243,266,267],{},"用語ベース集約 + 汎用語除外",[243,269,270],{"align":232},"1,021",[243,272,273],{},"同一カテゴリ重複、「ない」「ある」等",[224,275,276,279,282],{},[243,277,278],{},"Codex 推奨フィルタ",[243,280,281],{"align":232},"895",[243,283,284],{},"「なく」「に該当」「のみ」「同じ」「事前承諾」等",[224,286,287,290,295],{},[243,288,289],{},"連体修飾語 + 番号付きラベル",[243,291,292],{"align":232},[183,293,294],{},"889 (現状)",[243,296,297],{},"「あらかじめ〜」「ゲート①」等",[10,299,300,301,303,304,307],{},"同じ用語が複数カテゴリに出る場合は 1 行に集約、出典は小チップで ",[14,302,98],{}," アイコン付きで本文導線を確保した。用語はベタ表記でリンクなし、出典チップにだけ導線を集める形に倒した。コミットは ",[14,305,306],{},"4384bac4 refactor(takken): 用語索引を「テーブル + 用語ベース集約 + Codex ノイズ除去」に刷新","。",[23,309,311],{"id":310},"引き継ぎメモを書いたらcodex-がそれにも噛みついた","引き継ぎメモを書いたら、Codex がそれにも噛みついた",[10,313,314,315,318],{},"ユーザーから「今日じゃなくて明日やりたいので、内容をレビューして Codex のレビューを受けてください」と言われ、",[14,316,317],{},"memo/2026-06-15/takken-session-handover-evening.md"," を書いた。書き終わって Codex に流したら、3 件の致命的指摘 + 1 件の補足が返ってきた:",[84,320,321,324,327],{},[87,322,323],{},"「メモ自体が未コミット」: 次セッションで読めない可能性がある（最重要）",[87,325,326],{},"「stash に退避」がエージェント任せだと危険: 未コミット差分は memory-makers 作業の途中の可能性が高い",[87,328,329,330,333],{},"助詞含有正規表現でフィルタを足す案は危険: 「悪意による不法行為に基づく損害賠償債権」「雨水の浸入を防止する部分」のような ",[183,331,332],{},"真の用語"," を 258 語も巻き込む",[10,335,336,337,340,341,347],{},"特に 3 つ目は刺さった。助詞を含む文字列を一括で除外したら検索効率は上がりそうだが、宅建用語は本質的に「○○に関する△△」という構造を持つものが多い。正規表現でなく、Codex に keep/drop の二択を投げて返ってきた ",[14,338,339],{},"drop"," リストを ",[183,342,343,344],{},"完全一致の ",[14,345,346],{},"EXACT_BLACKLIST"," で除外する 2 段階アプローチに変更した。",[10,349,350,351,354],{},"指摘を反映してメモを書き直し、Codex に再レビュー → 残課題なしを確認 → メモのみ単独コミット（",[14,352,353],{},"54fbcce5 docs(takken): 引き継ぎメモを Codex レビュー反映で安全化","）。memory-makers 系の未コミット差分は触らずに温存。",[23,356,357],{"id":357},"並行して走っている移行計画",[10,359,360],{},"夕方のセッションでは、宅建コンテンツを「eurekapu-nuxt4」側に R2 + Vue コンポーネント化で移送する計画も並行で議論した。",[10,362,363],{},"ユーザーの判断は「他のコンテンツと見え方を揃えたいので Vue コンポーネント化したい」。SVG・OG PNG・用途地域パネル PNG を info-accounting.com の R2 バケットに逃がして、mdx-playground 側からは画像を削除する方向。実行は eurekapu-nuxt4 側で新規セッションを立てて行う想定。",[10,365,366,367,370],{},"ただし移行する glossary は「現状 889 語版」ではなく、Codex のノイズ除去フィルタを通したクリーン版にする必要がある。先に移行を始めると、ノイズ除去のたびに eurekapu-nuxt4 側の ",[14,368,369],{},"takken-glossary.ts"," を再反映する手間が二重で発生する。",[23,372,373],{"id":373},"学んだこと",[84,375,376,383,392,395],{},[87,377,378,379,382],{},"リッチな見た目（4 カラムカード）は、検索性・比較性のないコンテンツでは情報量を逆に下げる。",[183,380,381],{},"1 行 1 用語のテーブルが正解"," だった",[87,384,385,386,388,389],{},"generator が ",[14,387,189],{}," 強調語を機械的に拾うと、本文の callout タイトルまで「用語」になる。",[183,390,391],{},"画面で人が見て初めて違和感が拾える",[87,393,394],{},"Codex は「正規表現一発で 258 語巻き込む」のような構造的なリスクを拾うのが得意。引き継ぎメモのレビューに使うと、自分では気付かない停止条件のずれを指摘してくる",[87,396,397,398,405],{},"「今日じゃなくて明日やりたい」と決めた瞬間、引き継ぎメモが次セッションの自分への手紙になる。",[183,399,400,401,404],{},"未コミットのまま ",[14,402,403],{},"/clear"," したら手紙が届かない"," という Codex 指摘は当たり前のようでいて忘れがちだった",{"title":407,"searchDepth":408,"depth":408,"links":409},"",2,[410,412,413,414,415,416,417],{"id":25,"depth":408,"text":411},"朝：/takken/takken/ のパスルート二重問題",{"id":64,"depth":408,"text":65},{"id":135,"depth":408,"text":136},{"id":169,"depth":408,"text":170},{"id":310,"depth":408,"text":311},{"id":357,"depth":408,"text":357},{"id":373,"depth":408,"text":373},"dev","/takken/* 全ページに前後カテゴリ pager と矢印キーナビを入れた。用語集はカードからテーブルへ全面刷新。Codex に通したらフレーズ系ノイズが大量に見つかった。","md",{},true,null,"/takken-phase3-pager-glossary-completion","mdx-playground",false,"2026-06-15T00:00:00.000Z",{"title":5,"description":419},"2026-06/2026-06-15/takken-phase3-pager-glossary-completion",[431,432,433,434,435],"takken","pager","キーボードナビ","用語集","refactor","GzZEFR-pzu8FtTxHaoIr6ry_2nmuUMgbqgfXyVx1L4w",[438],{"title":439,"description":440,"path":441,"tags":442,"publishedAt":427,"updatedAt":423},"2026年6月15日の開発日記 - 宅建Phase3完成 / メモリーメーカーズ分割 / Visual Design Essentials","宅建教科書 Phase 3 をクローズし、/memory-makers をハブ＋4サブページに分割。テンバガー論文からFCF散布図トグルを起動、Visual Design Essentials スキルと SSOT 解説を公開記事化した一日。","/2026-06-15-diary",[443,431,444,445,446],"日記","memory-makers","beat-monitoring","デザイン原則",[],"https://log.eurekapu.com/og/blog/takken-phase3-pager-glossary-completion.png?v=2026-06-15T00%3A00%3A00.000Z&title=%E5%AE%85%E5%BB%BA%E6%95%99%E7%A7%91%E6%9B%B8%20Phase%203%20%E5%AE%8C%E6%88%90%EF%BC%9A%E5%89%8D%E5%BE%8C%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA%20pager%20%2B%20%E7%9F%A2%E5%8D%B0%E3%82%AD%E3%83%BC%E3%83%8A%E3%83%93%20%2B%20%E7%94%A8%E8%AA%9E%E9%9B%86%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E5%8C%96&author=Kei%20Komatsu&sig=c3745b5940187f0b",1781580075850]