2026年7月6日の開発日記 - 学習ゲート付き開発ループを1日で実装して全リポジトリに広げた
2026年7月6日の開発日記
朝に計画書をレビューさせるところから始めて、夜には「コミットしようとするとクイズが出て、合格しないとコミットできない」仕組みが全リポジトリで動いていた。AIに書かせたコードを理解しないまま積み上げることへの対策を、この日1日で設計から実運用まで通した。合間に問題集アプリのPhase 2-3、仕事の進め方の型の記事化、ブラウザのChatGPT Proへ質問を投げる拡張ブリッジづくりも回した。
今日のタイムライン

今日やったこと
1. 学習ゲート付き開発ループの実装と全リポジトリ適用
Downloadsに置いてあった計画書 learning-gate-spec.html をレビューさせ、memoディレクトリに移して更新したあと、そのまま実装に入った。pre-commitフックが受領証を確認し、無ければコミットをブロック。/learn コマンドが差分の解説とブラウザクイズを出し、全問合格で受領証を発行する。回答履歴はTursoに保存し、/review コマンドが間隔反復で振り返りテストを出す。MCPサーバーの疎通テストと、前提を伝えない実運用テスト(「コミットして」→ブロック→/learn→合格→通過)まで確認した。午後には別リポジトリでゲートが発動しない理由を突き止め、git config --global core.hooksPath で全リポジトリ共通に昇格させた。
主な成果:
- pre-commitフック+/learn+/review+learn-quiz MCPサーバー(Turso履歴保存)一式
- 実運用テストで「自分で作らせたゲートに自分が落ちて再出題で合格」まで実証
- ユーザーレベル(全リポジトリ共通)への昇格と LEARN_SKIP の逃げ道整備
詳細: AIに書かせたコードを理解せずにコミットしない仕組み — 学習ゲート付き開発ループの実装と全リポジトリ適用
2. 問題集アプリ(レッスンクイズ)Phase 2-3 の実装
Codexレビュー2周済みの計画書を正として、学習ゲートの過去問を解き直せる問題集アプリを実装させた。dev専用のNitro API 3本、LessonQuiz.vue、practiceページで、サーバー側採点(正解インデックスをクライアントに漏らさない)と、practice回答が間隔反復のスケジュールに干渉しない設計を柱にした。検証は前後スナップショットの突き合わせと出現数カウントで機械的に証明する方針を通した。
主な成果:
- コミット bdba0ab4(14ファイル・+1,167行)+既存レッスンMD 2本への ::lesson-quiz 埋め込み
- Vitest 31件追加全パス、Chrome DevTools実機確認でコンソールエラー0
- 残作業3点(pnpm generate 最終確認・quiz-server MCP再起動・音声通知フック有効化)を計画書に追記
3. 仕事の進め方の「型」を記事化、SVG図解7点
頭の中だけで回してきた仕事の進め方の型(目標確認→課題特定→整理→ボトルネック特定→解決→方向性確認)を、doc-communicationとsvg-diagramの2スキルを読み込ませて公開記事と図解7点にした。30KBのグリッド整列リファレンスは3分割で読ませてセッションの不安定化を避け、図は毎枚lintで文字はみ出しを機械チェック。途中でモデルをFable 5に切り替え、本文をレビューさせて作り直した。
主な成果:
- 記事
/shigoto-no-kataと図解7点、svgManifest反映(コミット 77215cc9) - 表示確認で全体像の図の右側ループを修正し、修正内容はスキルへルール追記して横展開
4. ChatGPT Proへの拡張ブリッジとセッション運用の整備
codex CLIからは選べないブラウザ専用のChatGPT Proに、既存のChrome DevTools MCPを通信路として、chatgpt.comのページ側へ操作口(window.__gptBridge)を生やすChrome拡張を作らせた。最速モードで疎通→Proで本番の2段テストで経路を開通。あわせて3.4GBまで膨らんだセッション履歴2,601件をUSBへ二重退避してローカルを2.1GBに軽くし、朝イチには昨日の積み残しを直近3日の計画書と実物の突き合わせでクローズした。運営サイトの収益化パターン調査も非公開記事にまとめた。
主な成果:
- chrome-extension-chatgpt-pro リポジトリ(GitHubへpush済み)で質問→回答の往復がコピペなしで開通
- セッション履歴のUSB二重退避(圧縮0.81GB+展開版)と件数照合後の削除
- 積み残しゼロ化と収益化調査の非公開記事化
詳細: Claude CodeからブラウザのChatGPT Proに質問を投げるChrome拡張ブリッジを作った
今日の試行錯誤
| # | テーマ | 試したこと | 結果 | 気づき |
|---|---|---|---|---|
| 1 | MCP elicitation URLモード | 計画書の前提をスパイクサーバー+子プロセスClaude Codeで実機検証 | 失敗: Client does not support url elicitation が返り前提が崩壊。ブラウザページ直接オープン方式に変更 | 計画書の「検証必須の穴」はスパイクで先に潰すと本実装で手戻りしない |
| 2 | MCPサーバー疎通テスト | 起動確認→present_quizを1回だけ呼ぶ最小プロンプト→60秒/390秒のブロックテスト | 初回は「サーバー接続中」で諦めて終了。「接続中でも呼び続けろ」を明示したら通り、6.5分ブロックでも切られず成功 | ツールの戻り値を「人間のブラウザ回答待ち」に使う設計が成立する |
| 3 | 学習ゲートの実運用テスト | 前提を伝えず「コミットして」→ブロック→/learn→クイズ→受領証→コミット | 成功: ただし4問中3問正解で浮動小数点誤差の1問を落とし、再出題で合格 | 自分で作らせたゲートに自分が落ちる=ゲートの存在意義の実証 |
| 4 | learnが他リポジトリで発動しない | フック設定を調査→core.hooksPathをグローバル化しスクラッチリポジトリで検証 | 成功: pre-commitはgitのリポジトリ単位の仕組みだったと判明、グローバル昇格で解決 | gitにはユーザーレベルのフック置き場がデフォルトで無い。ローカル core.hooksPath 持ちのリポジトリはそちらが優先 |
| 5 | practiceページのルーティング | pages/lessons.vue がある状態で lessons/practice.vue を追加 | 失敗→解決: 子ルート扱いで描画されず、lessons/index.vue へ移動して解決 | Nuxtの同名ファイルとディレクトリの共存は親子ルートになる |
| 6 | SVG図解の量産 | 30KBのグリッド整列リファレンスを3分割で読ませ、毎枚lintチェックで量産 | 成功: 図解7点完成。表示確認で全体像の図の右側ループを1件修正 | lintがはみ出しを拾えば目視は意味の確認だけでよい |
| 7 | ChatGPT Proへの経路づくり | codexからのPro利用可否を調査→不可→DevTools MCP通信路+ページ側拡張の2段構成 | 成功: 最速モードで疎通→Proで本番テストまで開通 | 「通信路(既存MCP)」と「ページ側の操作口(拡張)」を分けて考えると短い橋で届く |
今日の学び
- pre-commit(gitの仕組み・リポジトリ単位)と /learn(Claude Codeの仕組み・ユーザーレベル)の非対称に気づくと、
core.hooksPathのグローバル化という1手で全リポジトリに広がる - 「干渉しない・漏洩しない」系の不変条件は、前後スナップショットのJSON突き合わせと出現数カウントで機械的に証明できる
- 座標が密集した大きなリファレンスは分割して読ませるとセッションが安定する
- 内部APIを叩くより正規UIを経由する方が、認証と仕様変更のリスクを背負わない