[{"data":1,"prerenderedAt":385},["ShallowReactive",2],{"content-/tokibo-jitsurei-private-data-and-svg-timeline":3,"all-pages-for-dir":362,"related-/tokibo-jitsurei-private-data-and-svg-timeline":363,"og-image-/tokibo-jitsurei-private-data-and-svg-timeline":384},{"id":4,"title":5,"body":6,"category":340,"concepts":341,"description":342,"extension":343,"meta":344,"navigation":345,"ogImage":341,"path":346,"project_name":347,"published":348,"publishedAt":349,"seo":350,"source":351,"stem":352,"tags":353,"todo":341,"unpublished":348,"updatedAt":341,"__hash__":361},"pages/2026-06/2026-06-13/tokibo-jitsurei-private-data-and-svg-timeline.md","不動産登記簿の実例ページを dev 限定で実装し、git 履歴から個人データを浄化した日",{"type":7,"value":8,"toc":327},"minimark",[9,22,27,30,37,57,60,64,67,70,77,81,84,90,100,110,115,125,132,136,143,146,156,159,176,179,185,189,192,198,201,221,224,228,231,237,240,243,246,263,266,270,285,291,294],[10,11,12,13,17,18,21],"p",{},"不動産登記簿の解説サイト ",[14,15,16],"code",{},"tokibo"," に「実物の土地謄本を読み解く実例ページ」を足した。dev 環境でだけ見える private ページとして実装し、本番ビルドからは個人データを自動で除外する仕組みまで組んだ。途中で「個人データを含むコミットを GitHub に push 済み」という事故が発覚し、",[14,19,20],{},"git filter-repo"," で履歴を完全浄化することになった。後半は同じページに Q&A と縦長の紙芝居 SVG タイムラインを追加した。",[23,24,26],"h2",{"id":25},"朝の発掘-何を引き継いだのか","朝の発掘 — 何を引き継いだのか",[10,28,29],{},"朝イチで「昨日のセッションで、不動産登記簿の解説に実物謄本のデータ化を仕込んでハンドオフしたはず。建物の謄本を途中まで読んでた気がする」とうろ覚えのまま Claude Code に投げた。",[10,31,32,33,36],{},"memo を漁ってもらったら ",[14,34,35],{},"memo/2026-06-12/tokibo-handover.md"," が出てきた。読んでみると現実は記憶とズレていた。",[38,39,40,48,54],"ul",{},[41,42,43,44],"li",{},"実物の謄本は「建物」ではなく",[45,46,47],"strong",{},"土地",[41,49,50,51],{},"分析は途中ではなく",[45,52,53],{},"完了済み",[41,55,56],{},"Turso DB に登記簿の見方の専門書データも入っていて、参照可能な状態だった",[10,58,59],{},"「見つからない」と昨日言っていた書籍データも、本人の探し方が甘かっただけで普通に登録されていた。記憶はあてにならない。memo を残しておいて助かった、というのが朝イチの感触。",[23,61,63],{"id":62},"計画-codex-レビュー-修正","計画 → Codex レビュー → 修正",[10,65,66],{},"ハンドオフ書を読み直すと、本来やりたかったのは「謄本を構造化データに落として、解説ページとして読めるようにする」ことだった。地図表示、権利関係の整理、担保情報、家系図、Q&A — このあたりを 1 ページにまとめる。",[10,68,69],{},"ただし謄本そのものは個人データなので、本番に出すわけにはいかない。dev でだけ動くページにする必要がある。",[10,71,72,73,76],{},"設計が複雑になりそうだったので、いつもどおり計画を memo に書き起こして Codex（GPT-5）にレビューさせた。返ってきた指摘のうち重要だったのは 2 点で、",[14,74,75],{},"postgenerate"," フックの実体を見ずに計画を書いていた箇所と、リークスキャンの責務分離が曖昧だった箇所。指摘どおりに直して再レビュー、承認を取って実装に入った。",[23,78,80],{"id":79},"実装-dev-限定で動かす仕組み","実装 — dev 限定で動かす仕組み",[10,82,83],{},"実装は段階を分けた。",[10,85,86,89],{},[45,87,88],{},"Step 1: .gitignore で安全網を最初に貼る。"," private データ用のディレクトリを最初から除外しておく。これを最初にやらないと、うっかりコミットしたときに事故る。",[10,91,92,95,96,99],{},[45,93,94],{},"Step 2: リークスキャンスクリプト＋ postgenerate フック＋マーカー。"," ビルド成果物に private マーカーが残っていないかをスキャンして、見つかったらビルドを落とす。",[14,97,98],{},"pnpm generate"," の後段に組み込んだ。",[10,101,102,105,106,109],{},[45,103,104],{},"Step 3: 章レジストリ・Hub・Layout の devOnly 対応。"," ",[14,107,108],{},"import.meta.dev"," でフィルタを噛ませて、本番では実例ページが章一覧に出てこないようにした。",[10,111,112],{},[45,113,114],{},"Step 5-7: private 本文コンポーネント、ページシェル、memo の参照更新。",[10,116,117,120,121,124],{},[45,118,119],{},"Step 8: テスト。"," 既存テストの import 作法に合わせて書いた。",[14,122,123],{},"pnpm test:run"," で全 278 件 pass。",[10,126,127,128,131],{},"dev で ",[14,129,130],{},"/tokibo/jitsurei"," を開いたら、土地の権利の流れ・家系図・担保情報・地図がページ上に並んだ。",[23,133,135],{"id":134},"事故発覚-個人データが-github-に-push-済み","事故発覚 — 個人データが GitHub に push 済み",[10,137,138,139,142],{},"実装の途中、安全確認のために git の状態を見ていたら「個人データを含む memo ファイルが既にコミット・push 済み」と判明した。",[14,140,141],{},".gitignore"," を貼る前のコミットに紛れ込んでいた。",[10,144,145],{},"ここで手が止まった。",[10,147,148,149,152,153,155],{},"GitHub からは消えたコミットでも、履歴の中には残っている。",[14,150,151],{},"git rm"," してもダメで、過去のコミット自体から消す必要がある。",[14,154,20],{}," を使う場面だが、作業ツリーに影響するし、並行作業がないかも確認しないといけない。",[10,157,158],{},"進め方:",[38,160,161,164,170,173],{},[41,162,163],{},"並行セッションが回っていないことを確認",[41,165,166,167,169],{},"一時クローンを別ディレクトリに作って、そこで ",[14,168,20],{}," をかける",[41,171,172],{},"浄化されたリポジトリで GitHub に force-push",[41,174,175],{},"ローカルの本体リポジトリも同期し直す",[10,177,178],{},"force-push は危険な操作なので、普段なら絶対に避ける。今回は履歴に個人データが乗っかっている時点で「force-push しない方が危険」という判断になった。Claude Code に実行してもらい、ローカルとリモートの両方からデータが消えたことを確認した。",[10,180,181,182,184],{},"学びとしては「",[14,183,141],{}," を貼る順番を間違えるとここまで影響が広がる」という一点に尽きる。最初に安全網を貼る Step 1 は、機械的なステップに見えて実は事故防止の本丸だった。",[23,186,188],{"id":187},"qa-借金額は土地の値段とイコールか","Q&A — 「借金額は土地の値段とイコールか？」",[10,190,191],{},"実装が落ち着いたあと、ユーザー本人からの素朴な質問が飛んできた。",[193,194,195],"blockquote",{},[10,196,197],{},"「これって、借金とセットで担保が書いてあるじゃないですか。これって要するに、土地の値段とほぼイコールだと考えていいんですかね」",[10,199,200],{},"直感的にはそう見えるが、答えは「ほぼイコールとは言えないが、ざっくりした下限の目安にはなる」。理由を 3 つに整理して Q&A セクションに足した。",[38,202,203,209,215],{},[41,204,205,208],{},[45,206,207],{},"掛け目で割り引く",": 貸す側は時価の 60〜80% 程度しか貸さない。担保額より時価のほうが大きい",[41,210,211,214],{},[45,212,213],{},"評価方式が違う",": 担保評価額・公示地価・実勢価格はそれぞれ別物",[41,216,217,220],{},[45,218,219],{},"抵当順位がある",": 1 番抵当・2 番抵当の合計が担保力を表すので、1 行だけ見ても意味がない",[10,222,223],{},"Q&A の置き場所は地図の前にした。読者が地図を見てピンが立った瞬間に「で、いくらの土地なの？」と思うはずなので、その手前で答えておく流れにする。",[23,225,227],{"id":226},"縦長の紙芝居-svg-タイムライン","縦長の紙芝居 SVG タイムライン",[10,229,230],{},"最後に「権利関係の変遷をイベントごとに縦長で図解してほしい。紙芝居・4 コマ漫画的に」という追加注文。",[10,232,233,236],{},[14,234,235],{},"svg-diagram"," スキルのデザインルールとアンチパターン集を読み込んでから描いた。家系図パートで「人物 3 箱の座標が重なり回避のために妙な translate がかかっている」というミスを見つけて修正もした。SVG を手で書くと、座標計算をサボった箇所が後から効いてくる。",[10,238,239],{},"完成したタイムラインは、所有権の移転・抵当の設定・抹消の流れがイベント単位で縦に並ぶ構成にした。スマホで縦スクロールしながら読める粒度。",[23,241,242],{"id":242},"コミット",[10,244,245],{},"最後にコミット 4 件を切ってもらった。",[38,247,248,253,258],{},[41,249,250],{},[14,251,252],{},"50420738 docs(memo): 実物謄本ビューアーページの実装計画を追加",[41,254,255],{},[14,256,257],{},"bea5732f feat(tokibo): 実物謄本の実例ページを dev 限定で追加（個人データは git 管理外）",[41,259,260],{},[14,261,262],{},"87fee541 feat(build): 非公開データのリークスキャンを postgenerate に追加",[10,264,265],{},"コミット前の安全確認で、計画書のなかに 2 件、地番らしき文字列が残っていたのが見つかった。伏せて再コミット。ここまで来てもまだ漏れがある、というのが今回の事故の根深さを示している。",[23,267,269],{"id":268},"朝イチの別件-tokibo-に共通パンくずを足した","朝イチの別件 — tokibo に共通パンくずを足した",[10,271,272,273,276,277,280,281,284],{},"同じ日の早朝にもう 1 件、関連修正を入れていた。",[14,274,275],{},"/tokibo/*"," 配下の章ページに戻り導線がないという指摘を受け、",[14,278,279],{},"TokiboChapterLayout"," を新設してパンくずを生やした。ユニットテスト 25 件 pass。コミット ",[14,282,283],{},"af9dbc56 feat(tokibo): 章ページに共通レイアウト（パンくず）を追加","。",[10,286,287,288,290],{},"この修正があったおかげで、夕方に実例ページを足したときも ",[14,289,279],{}," 経由で自動的にパンくずが付いた。レイアウトを 1 箇所に集約しておくと、後続の追加が一段楽になる。",[23,292,293],{"id":293},"今日の学び",[38,295,296,304,310,316,321],{},[41,297,298,303],{},[45,299,300,302],{},[14,301,141],{}," は機能追加より先に貼る","。後追いでは履歴に残る",[41,305,306,309],{},[45,307,308],{},"計画は memo に書いて Codex でレビュー","。今回も致命的指摘が 2 件出た",[41,311,312,315],{},[45,313,314],{},"private データを扱うページは「dev 限定」を最初から設計に組み込む","。後付けは漏れる",[41,317,318],{},[45,319,320],{},"filter-repo + force-push は最終手段だが、個人データに対しては使う覚悟を持つ",[41,322,323,326],{},[45,324,325],{},"コミット直前の安全確認をスクリプト化する価値はある","。手作業の grep だと漏れる",{"title":328,"searchDepth":329,"depth":329,"links":330},"",2,[331,332,333,334,335,336,337,338,339],{"id":25,"depth":329,"text":26},{"id":62,"depth":329,"text":63},{"id":79,"depth":329,"text":80},{"id":134,"depth":329,"text":135},{"id":187,"depth":329,"text":188},{"id":226,"depth":329,"text":227},{"id":242,"depth":329,"text":242},{"id":268,"depth":329,"text":269},{"id":293,"depth":329,"text":293},"dev",null,"土地謄本の解説ページを Nuxt 上で実装する過程で、private データを誤って git にプッシュしたことに気づき、filter-repo で履歴ごと消した。Codex レビュー、リークスキャンの postgenerate 化、紙芝居 SVG タイムラインまでを 1 日で詰めた記録。","md",{},true,"/tokibo-jitsurei-private-data-and-svg-timeline","mdx-playground",false,"2026-06-13T00:00:00.000Z",{"title":5,"description":342},"make-diary","2026-06/2026-06-13/tokibo-jitsurei-private-data-and-svg-timeline",[16,354,355,356,357,358,359,360],"不動産登記簿","Nuxt","git","filter-repo","SVG","Codex","プライバシー","iMYf-RaF-hWyD3O5-29OkzMpG3c7WiGKAq92AxXyCyM",[],[364,368,372,376,380],{"title":365,"path":366,"publishedAt":367},"ガイド /tokibo に第1〜8章を俯瞰する『イントロダクション』を入れて、各章へのSVG地図リンクを埋め込んだ","/tokibo-introduction-chapter","2026-06-14T00:00:00.000Z",{"title":369,"path":370,"publishedAt":371},"2026年5月12日の開発日記 - SVG対照表とTurso DB取り込み、財務諸表クイズの並列展開","/2026-05-12-diary","2026-05-12T00:00:00.000Z",{"title":373,"path":374,"publishedAt":375},"Vueページは必ずWorkerバンドルに載る — 静的HTML化と「島マウント」でCloudflare Workersの上限から逃げる","/worker-bundle-reduction-content-islands","2026-07-29T00:00:00.000Z",{"title":377,"path":378,"publishedAt":379},"語源英単語4000語をどう一覧化するか — Codex実装の停滞からナビゲーション統合まで","/gogen-eitango-word-list-navigation","2026-07-21T00:00:00.000Z",{"title":381,"path":382,"publishedAt":383},"PPT Masterを読んだので、SVG配布スキルに移植する部分だけ拾った","/ppt-master-extract-svg-parts","2026-07-01T00:00:00.000Z","https://log.eurekapu.com/og/blog/tokibo-jitsurei-private-data-and-svg-timeline.png?v=2026-06-13T00%3A00%3A00.000Z&title=%E4%B8%8D%E5%8B%95%E7%94%A3%E7%99%BB%E8%A8%98%E7%B0%BF%E3%81%AE%E5%AE%9F%E4%BE%8B%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%20dev%20%E9%99%90%E5%AE%9A%E3%81%A7%E5%AE%9F%E8%A3%85%E3%81%97%E3%80%81git%20%E5%B1%A5%E6%AD%B4%E3%81%8B%E3%82%89%E5%80%8B%E4%BA%BA%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E6%B5%84%E5%8C%96%E3%81%97%E3%81%9F%E6%97%A5&author=Kei%20Komatsu&sig=ea793796d74558f1",1786424369178]