[{"data":1,"prerenderedAt":716},["ShallowReactive",2],{"content-/2026-07-05-diary":3,"all-pages-for-dir":714,"og-image-/2026-07-05-diary":715},{"id":4,"title":5,"body":6,"category":696,"concepts":697,"description":698,"extension":699,"meta":700,"navigation":599,"ogImage":697,"path":701,"project_name":702,"published":703,"publishedAt":704,"seo":705,"stem":706,"tags":707,"todo":697,"unpublished":703,"updatedAt":697,"__hash__":713},"pages/2026-07/2026-07-05/diary-2026-07-05.md","2026年7月5日の開発日記 - 講座を1本出し、AI協働の足回りを棚卸しした日曜",{"type":7,"value":8,"toc":677},"minimark",[9,14,18,22,29,32,37,40,46,64,75,78,82,85,89,100,108,110,114,124,128,150,158,160,164,167,171,182,190,192,196,199,203,214,222,224,228,231,235,246,254,256,260,263,267,290,298,300,303,540,542,545,583,585,588,642,644,647],[10,11,13],"h1",{"id":12},"_2026年7月5日の開発日記","2026年7月5日の開発日記",[15,16,17],"p",{},"今日は前半で「作るもの」を3つ片付けて、後半は「作る道具そのもの」を棚卸しした一日だった。\n午前はスキルを講座に変える第3弾（Excel風HTMLモック）を計画から本番公開まで一気に通し、\n理科教材の植物バッチの事実チェックと、消えていたXの動画ダウンロードボタンの復活を並行で進めた。\n午後は毛色が変わって、過去5GBの会話ログから自分がAIに繰り返してきた小言を抽出してルール化し、\nサブエージェントにSonnet 5を使ったときの品質を実測で検証し、明日つなぐ予定のリモートデスクトップ手順書を点検した。\n「人間が方針と違和感を持ち、AIが手を動かす」という分担を、成果物だけでなくモデル選定や環境設定の層にまで持ち込んだのが今日の通しテーマだった。",[19,20,21],"h2",{"id":21},"今日のタイムライン",[15,23,24],{},[25,26],"img",{"alt":27,"src":28},"タイムライン","/2026-07/2026-07-05/timeline-2026-07-05.png",[19,30,31],{"id":31},"今日やったこと",[33,34,36],"h3",{"id":35},"_1-スキルを講座化する第3弾excel風htmlモックを本番公開までeurekapu-nuxt4","1. スキルを講座化する第3弾「Excel風HTMLモック」を本番公開まで（eurekapu-nuxt4）",[15,38,39],{},"自分のClaude Codeスキルを読者向けの講座に変えるシリーズの第3弾を、朝の積み残し棚卸しから始めて、一日で本番デプロイまで届けた。\n題材は「Excelの見た目をHTMLで再現する」デザインルール集スキル。第2弾（Excelに投資銀行の書式を当てる）とちょうど裏表の関係で、シリーズに並べる意味があった。\n実装計画をCodexでレビューして固め、本文6章はSonnet 5のサブエージェント6体で並列執筆、テスト2,631件パスまで通した。",[15,41,42],{},[43,44,45],"strong",{},"主な成果:",[47,48,49,53,56],"ul",{},[50,51,52],"li",{},"積み残し確認 → 題材選定 → 実装計画（Codexレビュー2件反映）→ Step 1〜10実装 → 公開前レビュー → 本番公開を1日で完走",[50,54,55],{},"実画面を見て2件の不具合（8列デモ表の横スクロール／コードの二重エスケープ）を拾って修正",[50,57,58,59,63],{},"公開後に生成物の反復（同じ文字列が136回・144回…）を実測し、宣言的にシートを組む ",[60,61,62],"code",{},"excelSheet()"," APIの次の計画まで起こした",[15,65,66,69,70],{},[43,67,68],{},"詳細:"," ",[71,72,74],"a",{"href":73},"/skill-to-lesson-excel-html-mock","Claude Codeスキルを講座化する第3弾——「Excel風HTMLモック」レッスンを計画から本番公開まで一日で作った",[76,77],"hr",{},[33,79,81],{"id":80},"_2-中学受験理科植物教材の事実チェックを完了mdx-playground","2. 中学受験理科「植物」教材の事実チェックを完了（mdx-playground）",[15,83,84],{},"前セッションで生成・登録・テスト587件パスまで済ませ「事実チェックだけ未了」で寝かせていた植物カテゴリ8トピックを、仕上げまで押し込んだ。\n統括は上位モデルのまま、日本語の文章を書く実働だけSonnet 5サブエージェント8体に振る分業にした（植物単元は上位モデルの安全分類器が生命科学として誤反応しがちなため）。\n狙いどおりSVG幾何の破綻が2件（critical）浮いて、両方をdev環境の描画で直したのを自分の目で確認して閉じた。",[15,86,87],{},[43,88,45],{},[47,90,91,94,97],{},[50,92,93],{},"事実チェック8体並列 → critical 2件・minor 18件。critical はどちらも重点を張ったSVG幾何だった",[50,95,96],{},"蒸散の気孔（核・葉緑体が細胞外に浮いていた）と種子発芽（種が水没して対照実験が潰れていた）を修正",[50,98,99],{},"レポートには無かった「根の断面のラベル色ずれ」を目視で追加発見。直しすぎない判断（色の濃淡差・断面の向き）も明記して残した",[15,101,102,69,104],{},[43,103,68],{},[71,105,107],{"href":106},"/science-course-plants-factcheck","中学受験理科『植物』教材を事実チェック——SVG幾何の破綻2件を上位モデル統括×Sonnet 5の分業で潰した",[76,109],{},[33,111,113],{"id":112},"_3-消えていたxの動画ダウンロードボタンを復活chrome-extension-x","3. 消えていたXの動画ダウンロードボタンを復活（chrome-extension-x）",[15,115,116,117,120,121,123],{},"「そういえば動画のDLボタン最近見てないな」という違和感から始まった。DevToolsで一緒にXのDOMを掘ったら、原因は拡張ではなくX側にあった。\nXが動画を遅延ロードに切り替えて、再生するまで ",[60,118,119],{},"\u003Cvideo>"," をDOMに置かなくなっていた。",[60,122,119],{}," 一本足で判定していた拡張が、全部「動画なし」に倒れていた。",[15,125,126],{},[43,127,45],{},[47,129,130,137,147],{},[50,131,132,133,136],{},"拡張が生きているか（",[60,134,135],{},"chrome://extensions","）を先に潰してから相手のDOMを疑う順序で、原因を素早く切り分け",[50,138,139,142,143,146],{},[60,140,141],{},"hasVideo"," 判定に再生ボタン・プレビュー覆い・サムネイル画像の ",[60,144,145],{},"querySelector"," フォールバックを3つ追加",[50,148,149],{},"検索フィード7件・ブックマーク3件すべてでボタン復活を目視確認、セキュリティレビュー指摘ゼロを確認してコミット",[15,151,152,69,154],{},[43,153,68],{},[71,155,157],{"href":156},"/x-video-download-button-fix","自作Chrome拡張のXの動画ダウンロードボタンが消えた——DOM構造の変化を追って復活させた",[76,159],{},[33,161,163],{"id":162},"_4-過去5gbのログから毎回の小言を抽出してルール化claude-code-tools","4. 過去5GBのログから「毎回の小言」を抽出してルール化（claude-code-tools）",[15,165,166],{},"モデルが賢くなっても同じ失敗が消えないことに区切りをつけるべく、印象論をやめて過去ログを一次資料にした。\nClaude CodeとCodexの全セッションログ（約4,600ファイル・5GB）から自分の不満・訂正・叱責を機械抽出し、10並列のサブエージェントで「本物のキレか、引用・議論の文字列か」を判定させた。",[15,168,169],{},[43,170,45],{},[47,172,173,176,179],{},[50,174,175],{},"生の候補2,327件 → 本物と判定された約250件（9割がノイズ）→ 頻度×強度で13本のルールに収束",[50,177,178],{},"最頻出は「表示に触れたら報告前に自分の目で描画確認」（約70件）。半年間ずっと同じ4〜5種で怒っていたのが数字で可視化された",[50,180,181],{},"git管理外にあったCodex側ルールを、実体をgit配下へ移してシンボリックリンクを張る構成に組み替え、差分が追える形にした",[15,183,184,69,186],{},[43,185,68],{},[71,187,189],{"href":188},"/recurring-complaints-rule-extraction","過去5GBのAI会話ログから『毎回繰り返す小言』を抽出してルール化した",[76,191],{},[33,193,195],{"id":194},"_5-sonnet-5でもスキルの品質を落とさないか実測で検証claude-code-tools","5. Sonnet 5でもスキルの品質を落とさないか、実測で検証（claude-code-tools）",[15,197,198],{},"サブエージェントにSonnet 5を使うと品質が落ちるのでは、という不安を勘で片付けず、欠陥を仕込んだテキストを校正させて検出率で採点した。\nユーザーレベルのスキルは手順型・知識型・判断依存型の3タイプに分かれ、リスクは判断依存型（文章校正・図解）に偏っていた。最適化の型は「指示を増やす」のではなく「判断を検証可能にする」方向に置いた。",[15,200,201],{},[43,202,45],{},[47,204,205,208,211],{},[50,206,207],{},"判断依存型3本を検証ゲート化、手順型6本にDoD（完了前チェック）を追加。全部に一律ではなく実態を見て外すものは外した",[50,209,210],{},"「善意の追加ルールが品質を落とす」事故を実測で発見（過剰修正禁止を単独追加 → honda 22/24→17/24 悪化 → 「見送り禁止」とペアでv2 23/24）",[50,212,213],{},"「見直せば必ず良くなる」は否定。NG/OK例が豊富なスキルは下手にいじらないほうが安全と分かった",[15,215,216,69,218],{},[43,217,68],{},[71,219,221],{"href":220},"/sonnet5-skill-optimization-pilot","Sonnet 5でもスキルの品質を落とさない — Claude Codeスキル最適化パイロットの記録",[76,223],{},[33,225,227],{"id":226},"_6-tailscale-rdp手順書をレビューして落とし穴を潰すpersonal","6. Tailscale + RDP手順書をレビューして落とし穴を潰す（personal）",[15,229,230],{},"明日サブ機（Win11 Home）→メイン機（Win11 Pro）のリモートデスクトップをつなぐ前に、前に書いた手順書を点検した。\n骨子は正しかったが、「初回は動くのに数か月後に急に繋がらなくなる」落とし穴が抜けていた。補足3点を書き、断定に不安があったのでcodex（gpt-5.5）にセカンドオピニオンを取った。",[15,232,233],{},[43,234,45],{},[47,236,237,240,243],{},[50,238,239],{},"キー失効（180日）・RDPはPIN不可・BitLockerプリブート認証の3点を補足。codexが全て重要度「高」と判定し、断定を条件付きに整理",[50,241,242],{},"codexが4点目「Run unattended（無人モード）」を追加で発見。手順書の計6箇所に反映",[50,244,245],{},"メイン機の現状確認で、まさにその未設定（Tailscaleが NoState でIP未取得）に片足を突っ込んでいたと判明",[15,247,248,69,250],{},[43,249,68],{},[71,251,253],{"href":252},"/tailscale-rdp-setup-review","Tailscale + RDP手順書をレビューして落とし穴を潰す — キー失効と無人モードをcodexと詰めた",[76,255],{},[33,257,259],{"id":258},"_7-codexレビューとステータスラインのサブpc再現条件を棚卸しclaude-code-tools","7. Codexレビューとステータスラインの「サブPC再現条件」を棚卸し（claude-code-tools）",[15,261,262],{},"母艦で組んだ便利機能が「母艦でしか動かないもの」になっていないか、2つの不安を実物で潰した。",[15,264,265],{},[43,266,45],{},[47,268,269,280,287],{},[50,270,271,272,275,276,279],{},"Codexレビューの実体は ",[60,273,274],{},"codex exec -m gpt-5.5 \"...\""," を叩くだけ。プラグイン・スキルは任意で、移設で気をつけるのは各PCで ",[60,277,278],{},"codex login"," し直すことだけ",[50,281,282,283,286],{},"ステータスラインはClaude Code標準のstatusLineに自作Pythonを噛ませた2段構成。設定もスクリプトも ",[60,284,285],{},"~/.claude"," のdotfilesリポジトリでgit管理されていて、cloneすれば再現できると確認",[50,288,289],{},"「gitに乗っていない自作機能こそサブPCで真っ先に消える」を目視で確かめられた",[15,291,292,69,294],{},[43,293,68],{},[71,295,297],{"href":296},"/dev-env-codex-review-and-statusline","CodexレビューをサブPCで再現する条件と、Claude Codeステータスラインの仕組みを調べた",[76,299],{},[19,301,302],{"id":302},"今日の試行錯誤",[304,305,306,328],"table",{},[307,308,309],"thead",{},[310,311,312,316,319,322,325],"tr",{},[313,314,315],"th",{},"#",[313,317,318],{},"テーマ",[313,320,321],{},"試したこと",[313,323,324],{},"結果",[313,326,327],{},"気づき",[329,330,331,351,370,391,407,424,440,456,473,490,506,523],"tbody",{},[310,332,333,337,340,345,348],{},[334,335,336],"td",{},"1",[334,338,339],{},"Xの動画判定",[334,341,342,344],{},[60,343,119],{}," の有無だけで動画判定していた",[334,346,347],{},"失敗（遅延ロードで全滅）",[334,349,350],{},"相手のDOMは黙って変わる。判定を1要素に賭けると脆い",[310,352,353,356,358,364,367],{},[334,354,355],{},"2",[334,357,339],{},[334,359,360,361,363],{},"再生ボタン・覆い・サムネの ",[60,362,145],{}," を3つOR追加",[334,365,366],{},"成功（10件全復活）",[334,368,369],{},"複数の手がかりでORを取ると壊れにくい",[310,371,372,375,378,381,388],{},[334,373,374],{},"3",[334,376,377],{},"Excel講座",[334,379,380],{},"8列デモ表がモバイル幅で圧縮されていた",[334,382,383,384,387],{},"修正（",[60,385,386],{},"white-space: nowrap","）",[334,389,390],{},"元スキル本体にも戻さないと再生成で再発する",[310,392,393,396,398,401,404],{},[334,394,395],{},"4",[334,397,377],{},[334,399,400],{},"IF関数章のコード表示が二重エスケープ",[334,402,403],{},"修正（公開前レビューでも指摘）",[334,405,406],{},"「〜のはず」で済ませずスクショ目視で拾えた",[310,408,409,412,415,418,421],{},[334,410,411],{},"5",[334,413,414],{},"理科SVG",[334,416,417],{},"気孔の核・葉緑体が孔辺細胞の外に浮いていた",[334,419,420],{},"修正（実到達範囲で再計算）",[334,422,423],{},"制御点でなく曲線の実到達で計算し直す",[310,425,426,429,431,434,437],{},[334,427,428],{},"6",[334,430,414],{},[334,432,433],{},"種子発芽の種が水没し対照実験が潰れていた",[334,435,436],{},"修正（中心を水面に合わせ半分出す）",[334,438,439],{},"図と本文の対比の核心を守る",[310,441,442,445,447,450,453],{},[334,443,444],{},"7",[334,446,414],{},[334,448,449],{},"根の断面のラベル色だけ赤が残っていた",[334,451,452],{},"目視で追加発見→amberに統一",[334,454,455],{},"レポートだけでは齟齬は拾いきれない",[310,457,458,461,464,467,470],{},[334,459,460],{},"8",[334,462,463],{},"ログ抽出",[334,465,466],{},"生の抽出2,327件をそのまま信用しかけた",[334,468,469],{},"却下（10並列で本物判定→約250件）",[334,471,472],{},"9割がノイズ。生の数字を鵜呑みにしない",[310,474,475,478,481,484,487],{},[334,476,477],{},"9",[334,479,480],{},"スキル最適化",[334,482,483],{},"v1に「過剰修正の禁止」を単独で追加",[334,485,486],{},"悪化（22/24→17/24）",[334,488,489],{},"抑制ルールは単独で置くとSonnetが保守側に倒れる",[310,491,492,495,497,500,503],{},[334,493,494],{},"10",[334,496,480],{},[334,498,499],{},"「見送り禁止」とペアにしてv2",[334,501,502],{},"回復（23/24）",[334,504,505],{},"抑制と実行義務を両輪にする",[310,507,508,511,514,517,520],{},[334,509,510],{},"11",[334,512,513],{},"Tailscale補足",[334,515,516],{},"自分の断定3点をcodexで検証",[334,518,519],{},"成功（4点目発見＋条件付きに整理）",[334,521,522],{},"断定に不安があれば別モデルにセカンドオピニオン",[310,524,525,528,531,534,537],{},[334,526,527],{},"12",[334,529,530],{},"Tailscale確認",[334,532,533],{},"CLI出力がShift-JIS化けでJSONパース失敗",[334,535,536],{},"UTF-8で取り直すもNoState継続→GUI確認に切替",[334,538,539],{},"一系統が詰まったら深追いせず別系統に逃がす",[76,541],{},[19,543,544],{"id":544},"今日の学び",[47,546,547,553,559,565,571,577],{},[50,548,549,552],{},[43,550,551],{},"表示に触れたら、報告前に自分の目で描画を確認する。"," 今日はこれが3回効いた（理科のラベル色ずれ、Excelの横スクロール、Xボタンの復活）。どれもレポートや「〜のはず」では拾えず、スクショを見て初めて気づいた",[50,554,555,558],{},[43,556,557],{},"善意の追加ルールが品質を落とすことがある。"," 抑制系のゲートは単独で入れず「見送り禁止」とペアにする。採点できる形（欠陥を仕込んでdiffで数える）にしていたから退行に気づけた",[50,560,561,564],{},[43,562,563],{},"生の抽出数を信じない。"," 2,327件のうち本物は約250件。9割のノイズを並列エージェントで弾いたから、残りは本物だと胸を張れる",[50,566,567,570],{},[43,568,569],{},"断定に不安が混じったら別モデルに当てる。"," codexが3点を条件付きに直し、4点目を拾った。人間がやったのは「不安だから確認したい」と判断したことだけ",[50,572,573,576],{},[43,574,575],{},"便利機能がPC固有になっていないか、記憶でなく実物で棚卸しする。"," gitに乗っていれば再現はclone一発、乗っていない自作機能こそ真っ先に消える",[50,578,579,582],{},[43,580,581],{},"人間は方針と違和感を持つ係、AIは実働する係。"," その分担を、モデル選定（文章はSonnet 5・統括は上位モデル）や環境設定の層にまで持ち込めた一日だった",[76,584],{},[19,586,587],{"id":587},"明日やること",[47,589,592,605,611,617,627,636],{"className":590},[591],"contains-task-list",[50,593,596,601,602,387],{"className":594},[595],"task-list-item",[597,598],"input",{"disabled":599,"type":600},true,"checkbox"," メイン機のスリープを無効化する（",[60,603,604],{},"powercfg /change standby-timeout-ac 0",[50,606,608,610],{"className":607},[595],[597,609],{"disabled":599,"type":600}," Tailscaleを無人モード（Run unattended）にして、トレイが「Connected」になるまで見届ける",[50,612,614,616],{"className":613},[595],[597,615],{"disabled":599,"type":600}," 管理コンソールでメイン機のキー有効期限を無効化し、BitLockerのKey Protectorsを確認する",[50,618,620,622,623,626],{"className":619},[595],[597,621],{"disabled":599,"type":600}," サブ機（Home）にTailscaleを入れ、",[60,624,625],{},"mstsc"," でメイン機へ接続テスト",[50,628,630,632,633,635],{"className":629},[595],[597,631],{"disabled":599,"type":600}," Excel講座で見えた反復を ",[60,634,62],{}," ビルダーに共通化する（実測値つきの計画は起こし済み）",[50,637,639,641],{"className":638},[595],[597,640],{"disabled":599,"type":600}," スキル最適化の判断依存型の横展開（NG/OK例が豊富なものは触らない方針を再確認してから）",[76,643],{},[19,645,646],{"id":646},"関連記事",[47,648,649,653,657,661,665,669,673],{},[50,650,651],{},[71,652,74],{"href":73},[50,654,655],{},[71,656,107],{"href":106},[50,658,659],{},[71,660,157],{"href":156},[50,662,663],{},[71,664,189],{"href":188},[50,666,667],{},[71,668,221],{"href":220},[50,670,671],{},[71,672,253],{"href":252},[50,674,675],{},[71,676,297],{"href":296},{"title":678,"searchDepth":679,"depth":679,"links":680},"",2,[681,682,692,693,694,695],{"id":21,"depth":679,"text":21},{"id":31,"depth":679,"text":31,"children":683},[684,686,687,688,689,690,691],{"id":35,"depth":685,"text":36},3,{"id":80,"depth":685,"text":81},{"id":112,"depth":685,"text":113},{"id":162,"depth":685,"text":163},{"id":194,"depth":685,"text":195},{"id":226,"depth":685,"text":227},{"id":258,"depth":685,"text":259},{"id":302,"depth":679,"text":302},{"id":544,"depth":679,"text":544},{"id":587,"depth":679,"text":587},{"id":646,"depth":679,"text":646},"diary",null,"Excel風HTMLモック講座を計画から本番公開まで一日で通し、理科教材の事実チェックとXの動画DLボタン復活を片付けた。後半は過去5GBのログから自分の小言をルール化し、Sonnet 5でのスキル品質を検証し、Tailscale RDP手順書の落とし穴をcodexと詰めた一日。","md",{},"/2026-07-05-diary","daily-log",false,"2026-07-05T00:00:00.000Z",{"title":5,"description":698},"2026-07/2026-07-05/diary-2026-07-05",[708,709,710,711,712],"日記","Claude Code","AI協働","スキル","事実チェック","iBYllHvAiJkeCvJVt6VG_1zupNvwsD2A7g99qyw11uM",[],"https://log.eurekapu.com/og/blog/2026-07-05-diary.png?v=2026-07-05T00%3A00%3A00.000Z&title=2026%E5%B9%B47%E6%9C%885%E6%97%A5%E3%81%AE%E9%96%8B%E7%99%BA%E6%97%A5%E8%A8%98%20-%20%E8%AC%9B%E5%BA%A7%E3%82%921%E6%9C%AC%E5%87%BA%E3%81%97%E3%80%81AI%E5%8D%94%E5%83%8D%E3%81%AE%E8%B6%B3%E5%9B%9E%E3%82%8A%E3%82%92%E6%A3%9A%E5%8D%B8%E3%81%97%E3%81%97%E3%81%9F%E6%97%A5%E6%9B%9C&author=Kei%20Komatsu&sig=e77b108c02da079c",1783483676098]