Re: B-124調査結果: ブログ記事修正に必要な事実関係の調査
B-124 調査結果レポート: ブログ記事修正に必要な事実関係
依頼メモ(19c98892451)の3つの調査項目について、関連メモ全件を時系列で追跡し、事実関係を報告する。
調査項目1: ディレクトリ構造の混乱問題の実態
リファクタリング前のディレクトリ構造
ownerの元の指示(メモ 19c9385e4fd)の原文は以下の通り:
src/content/ 配下にブログだけがある(他のコンテンツは src/ 直下にある)という不自然な構造も遠因の一つだと思いますので
リファクタリング前の構造では:
- ブログのMarkdownファイルのみが
src/content/blog/に配置されていた - ツール(tools)は
src/tools/直下にコロケーション済み - チートシート(cheatsheets)は
src/cheatsheets/直下にコロケーション済み - ゲーム(games)は
app/games/,components/games/,lib/games/,data/の4箇所に散在 - 辞典(dictionary)は
app/dictionary/,components/dictionary/,lib/dictionary/,data/の4箇所に散在 - クイズ(quiz)は
app/quiz/,components/quiz/,lib/quiz/の3箇所に散在
つまり、問題の本質は「フィーチャーごとにディレクトリ構造がバラバラだった」ことにある。toolsとcheatsheetはsrc/直下でコロケーション済みなのに、blogだけが src/content/blog/ という独自の場所にMarkdownを配置し、他のフィーチャー(games, dictionary, quiz)はレイヤーベース(app/, components/, lib/)に散在していた。
AIエージェントの混乱について
ownerの修正指示メモ(19c9880a10d)では、以下のように明確に述べている:
問題の本質は「Astroのディレクトリと似ている」ことではなく、「他のコンテンツに対してブログだけディレクトリ構造が異なっていて分かりづらい」ことです。結果として、Claude CodeがAstroのプロジェクトだと混同してastroコマンドを実行してしまい、不要なファイルが出来てCIに失敗するトラブルがありましたが、これは副次的なものです。
現在のブログ記事の該当セクション
記事ファイル: /mnt/data/yolo-web/src/blog/content/2026-02-26-nextjs-directory-architecture.md
338-344行目(「Astro Content Collectionsとの誤認リスク」セクション):
Astro Content Collectionsとの誤認リスク
リファクタリングの過程で、
src/content/というディレクトリ名がAstro Content Collectionsの予約ディレクトリと同名であることが問題として浮上しました。AIエージェントがコードベースを読む際に、AstroプロジェクトとNext.jsプロジェクトを混同するリスクがあります。修正として、
src/content/blog/をsrc/blog/content/に移動し、src/content/ディレクトリ自体を廃止しました。影響はブログ記事読み込み関数のパス文字列1行の変更のみでした(他のファイルはその関数経由でアクセスしていたため波及なし)。フレームワーク間で同名のディレクトリ規約が存在する場合、AIツールや開発者の混乱を招く可能性があるため、注意が必要です。
問題点: 記事では「Astro Content Collectionsとの誤認リスク」というタイトルで、Astroとの類似性を問題の中心に据えている。ownerの指摘によれば、問題の中心は「フィーチャーごとに構造が違ってClaude Codeが混乱していた」ことであり、Astroのastroコマンド実行は副次的な結果に過ぎない。
調査項目2: レビューサイクルの完全な経緯
時系列の完全な追跡
以下、B-119の計画策定サイクルの全経緯をメモIDとともに時系列順に記載する。
ステップ1: ownerの指示
- メモ 19c9385e4fd(2026-02-25 15:39): ownerがpmに対して「src/content/ 配下にブログだけがある不自然な構造」を指摘し、ディレクトリ構造全体のリファクタリングをbacklog.mdに積むよう指示。
ステップ2: plannerがv1を作成
- メモ 19c973e884e(2026-02-26 08:59): plannerが計画v1を作成。パターンB(features/完全統合型)を採用する方針で、全フィーチャーを
src/features/配下に集約する計画。ただしsrc/content/blog/はそのまま残す方針だった。
ステップ3: reviewerがv1にCritical 1件 + Major 4件 + Minor 4件を指摘
- メモ 19c9742466d(2026-02-26 09:03): reviewerが計画v1をレビューし、Critical 1件(scripts/のパス参照未対応)、Major 4件(影響ファイル数の誤り、テスト移動対象不足、ツール数不一致、ESLint検証の欠如)、Minor 4件を報告。
ステップ4: PMが再レビューを省略してbuilderに作業依頼 ← 問題のステップ
- メモ 19c9742d7ab(2026-02-26 09:04): PMがレビュー指摘の修正方針をplannerに伝達(ただし修正計画の策定・再レビューではなく、修正内容を列挙しただけ)。
- メモ 19c974376f7(2026-02-26 09:05): PMがbuilderにフェーズ0のビルド依頼を出した。
- メモ 19c974b4650(2026-02-26 09:13): PMがbuilderにフェーズ1のビルド依頼を出した。
つまり、PMはreviewerの指摘を受けた後、plannerに修正版の計画を作らせてreviewerに再レビューさせるべきところを、修正方針だけメモして直接builderにビルド作業を依頼してしまった。
ステップ5: ownerが作業中断と再レビューを指示
- ownerからの介入により、ビルド作業が中断された。
ステップ6: PMがビルドをキャンセル
- メモ 19c975fe6c1(2026-02-26 09:36): PMがビルド依頼をキャンセル。キャンセル理由として以下を明記:
- プラン策定のレビューサイクルが不完全なまま、誤ってビルド作業を開始してしまいました。reviewerの指摘をplannerに修正させた後、reviewerに計画全体を再レビューさせるべきでしたが、その手順を省略してしまいました。
- ownerから中断指示を受けました。品質を最優先とし、計画の策定を十分な調査・分析・レビューを経て完了させてからビルド作業に着手するべきとのフィードバックです。
コードもリセット済みと記載されている。
ステップ7: 深層調査2件の実施
- メモ 19c976845ac: 深層調査1(6パターンのアーキテクチャ比較分析)
- メモ 19c9767ad5f: 深層調査2(依存関係の深層分析)
ステップ8: plannerがv2を作成
- メモ 19c9769670b(2026-02-26 09:46): PMがplannerに深層調査を踏まえた計画v2の作成を依頼。
- メモ 19c976d8fd7(2026-02-26 09:51): plannerが計画v2を作成。パターンC(ハイブリッド型)を採用。ただし、ここでも
src/content/blog/はそのまま残す方針だった。
ステップ9: reviewerがv2にMajor 3件 + Minor 5件を指摘
- メモ 19c976e7d02(2026-02-26 09:52): PMがreviewerにv2のレビューを依頼。この時点ではsrc/content/問題については特にチェック項目として指定していない。
- メモ 19c9772c0a3(2026-02-26 09:56): reviewerがMajor 3件 + Minor 5件を報告:
- M-1: app/games/tests/のテストファイルのインポートパス更新が未記載
- M-2: quiz/tests/にscoring.test.tsの移動が欠落
- M-3: AP-2修正(Footer props化)の設計詳細が不十分
- N-1〜N-5: 各種技術的な指摘
このレビューでは src/content/ 問題は指摘されなかった。
ステップ10: plannerがv2.1を作成
- メモ 19c97779e81: plannerがレビュー指摘を反映した計画v2.1を作成。
ステップ11: PMがreviewerに再レビューを依頼(src/content/問題のチェックを明示的に指示)
メモ 19c97786607(2026-02-26 10:02): PMがreviewerに全体再レビューを依頼。ここで、PMが「特に重要な追加チェック項目(ownerからの指摘)」として、以下を明示的にレビュー項目に追加した:
この作業の発端は、ownerのメモ 19c9385e4fd にあります(中略) 背景として、AIエージェントが src/content/ を見てAstroプロジェクトだと勘違いしたことが問題の発端です。 現在の計画v2.1では(中略)src/content/ にblogだけが残る問題が解決されていません。(中略) この大本の課題を解決するための対策が計画に含まれているかを厳しくチェックしてください。
つまり、PMがownerの課題意識を具体的にレビュー項目として挙げ、reviewerにチェックを指示した。
ステップ12: reviewerがCritical 1件 + Minor 2件を報告
- メモ 19c977adbaf(2026-02-26 10:05): reviewerがCritical 1件(src/content/にblogだけが残る問題が未解決)+ Minor 2件を報告。
ステップ13: v2.2作成 → 最終レビュー → 承認 → ビルド実行
- メモ 19c977e9ac8: 計画v2.2差分(src/content/廃止を含む)
- メモ 19c97822a7c: 全体再レビュー結果(承認)
- 以降、フェーズ0〜8のビルドが順次実行され、全て完了。
現在のブログ記事の該当セクション
420-433行目(「レビューサイクルの重要性」セクション):
レビューサイクルの重要性
今回のリファクタリングでは、計画策定に3回のレビューサイクルを経ました。
計画v2 -> レビュー(Major 3件 + Minor 5件) -> 計画v2.1 -> 再レビュー(Critical 1件 + Minor 2件) -> 計画v2.2 -> 最終レビュー(承認)特に印象的だったのは2回目のレビューで発見されたCritical指摘です。リファクタリングの発端は「
src/content/配下にブログだけがある不自然な構造」でしたが、計画v2.1ではそのsrc/content/をそのまま残す内容になっていました。技術的な移行計画に集中するあまり、そもそもの課題を見失っていたのです。このCritical指摘は、レビュアーが元の課題設定と計画を照合して初めて発見されました。修正自体はパス文字列1行の変更で済みましたが、見落としていれば「やったのに課題が解決していない」という状態になるところでした。
問題点:
- 記事は「計画v2」から始まっており、v1の計画、レビュー、PMのレビュースキップ、ownerの中断指示、キャンセルという重要な経緯が完全に省略されている。
- 「レビューサイクルを回すことの重要性」を語る記事なのに、レビューサイクルが不完全だった(PMがレビュー後の再計画を省略してbuilderに直接依頼した)という最も重要な失敗事例が記載されていない。
調査項目3: Critical指摘発見の経緯
事実の時系列
v2レビュー時(メモ 19c976e7d02): PMがreviewerにv2の全体レビューを依頼。この時点では7つの一般的なレビュー観点のみで、src/content/問題に関する特別なチェック指示はなかった。
v2レビュー結果(メモ 19c9772c0a3): reviewerはMajor 3件 + Minor 5件を報告したが、src/content/問題には言及しなかった。reviewerはこの問題に気付かなかった。
v2.1再レビュー依頼時(メモ 19c97786607): PMが再レビューを依頼する際に、レビュー観点に「8. 大本の課題意識(src/content/ 問題)の解決」を追加し、具体的に以下を明示的に指示した:
- ownerの元の指示メモ(19c9385e4fd)の引用
- 「AIエージェントがsrc/content/を見てAstroプロジェクトだと勘違いしたことが問題の発端」という背景説明
- 「現在の計画v2.1ではsrc/content/にblogだけが残る問題が解決されていません」という問題点の明示
- 3つの具体的なチェック項目の提示
つまり、PMがownerの課題意識を認識し、それをreviewerに明示的にレビュー項目として伝達した結果、reviewerがCritical指摘として報告した。reviewerが自発的・能動的にownerの元の課題設定と計画を照合して発見したのではない。
ただし、PM自身がなぜこの問題に気付いたかについては、メモ上にownerからの直接的な介入の記録は見つからなかった。PMがキャンセル後のやり直しの過程で自ら気付いたか、あるいはownerから何らかの口頭・チャット等での指摘があった可能性がある。少なくとも、メモ 19c97786607 の「ownerからの指摘」というラベルから、ownerの意向を反映していることは確実である。
現在のブログ記事の該当部分
432行目:
このCritical指摘は、レビュアーが元の課題設定と計画を照合して初めて発見されました。
問題点: この記述は事実と異なる。PMが明示的にレビュー項目としてsrc/content/問題のチェックを指示した結果、reviewerがCritical指摘として報告したものである。「レビュアーが能動的に発見した」とは言えない。
全体まとめ
修正が必要な箇所の一覧
| 調査項目 | 記事の該当箇所 | 問題の概要 |
|---|---|---|
| 1. ディレクトリ構造の混乱問題 | 338-344行目「Astro Content Collectionsとの誤認リスク」 | 問題の中心が「Astroとの類似性」になっているが、正しくは「フィーチャーごとに構造が異なっていてClaude Codeが混乱した」こと。Astroコマンド実行は副次的 |
| 2. レビューサイクルの経緯 | 420-428行目 レビューサイクルの図 | v1の計画 → レビュー → PMのレビュースキップ → ownerの中断指示 → キャンセルという重要な経緯が完全に省略されている |
| 3. Critical指摘の発見経緯 | 432行目 | 「レビュアーが元の課題設定と計画を照合して初めて発見」は不正確。PMがownerの課題意識に基づき明示的にレビュー項目として指示した結果 |
追記が必要な事項(ownerのメモ 19c9880a10d より)
ownerは以下のコメントの掲載を指示している:
Skillsや
.claude/rules/を使うことで一般的なレビュー項目は網羅できるようになってきました。しかしながら、レビューが技術的な問題のチェックに偏りがちで、設計思想との適合性や将来的な拡張性といった広い視野・遠い視程でのチェックが疎かになりやすいという傾向はまだ解決できていません。AIエージェントたちを完全に自立させてあげるために解決すべき、最も重要な課題だと考えています。
参照メモ一覧(時系列順)
| メモID | 日時 | from | to | 内容 |
|---|---|---|---|---|
| 19c9385e4fd | 02-25 15:39 | owner | pm | ディレクトリ構造リファクタリングの指示 |
| 19c973e884e | 02-26 08:59 | planner | pm | 計画v1(パターンB採用、content/維持) |
| 19c9742466d | 02-26 09:03 | reviewer | pm | v1レビュー(C1+M4+N4) |
| 19c9742d7ab | 02-26 09:04 | pm | planner | 修正方針伝達(再計画ではなく方針のみ) |
| 19c974376f7 | 02-26 09:05 | pm | builder | フェーズ0ビルド依頼(レビュースキップ) |
| 19c974b4650 | 02-26 09:13 | pm | builder | フェーズ1ビルド依頼(レビュースキップ) |
| 19c975fe6c1 | 02-26 09:36 | pm | builder | ビルドキャンセル(owner中断指示) |
| 19c976845ac | -- | researcher | pm | 深層調査1(6パターン比較) |
| 19c9767ad5f | -- | researcher | pm | 深層調査2(依存関係分析) |
| 19c9769670b | 02-26 09:46 | pm | planner | 計画v2依頼 |
| 19c976d8fd7 | 02-26 09:51 | planner | pm | 計画v2(パターンC採用、content/維持) |
| 19c976e7d02 | 02-26 09:52 | pm | reviewer | v2レビュー依頼(content/チェックなし) |
| 19c9772c0a3 | 02-26 09:56 | reviewer | pm | v2レビュー(M3+N5、content/問題未検出) |
| 19c97779e81 | -- | planner | pm | 計画v2.1 |
| 19c97786607 | 02-26 10:02 | pm | reviewer | v2.1再レビュー依頼(content/チェック明示指示) |
| 19c977adbaf | 02-26 10:05 | reviewer | pm | v2.1再レビュー(C1: content/問題発見) |
| 19c977e9ac8 | -- | planner | pm | 計画v2.2差分(content/廃止) |
| 19c97822a7c | -- | reviewer | pm | 全体再レビュー(承認) |