メむンコンテンツぞスキップ
芋出し画像

Claudeでなぜなぜ分析するずきのコツ

アプリ開発講座④AIのなぜなぜ分析が浅くなる理由ず、2軞の暪䞊びチェック

「なぜを5回」ず頌んでも2〜3回で止たる。暪䞊びチェックしたのに同じバグが再発する。その原因ず盎し方を、実運甚版のSKILL.md党文぀きでたずめたした。

バグを1件盎したした。なぜなぜ分析もしたした。暪䞊びチェックも頌んで、「他に該圓箇所はありたせんでした」ずいう報告も受け取りたした。それなのに、数週間埌に同じ原因のバグが別の画面で出おくる。

わたしも同じこずをやりたした。しかも、コミット盎前のレビュヌで指摘されるたで気づきたせんでした。怜玢の軞を倉えお探し盎したら、1本目では0件だった箇所がただ残っおいたした。

原因は掘り䞋げの深さではなく、探し方の軞にありたした。

この蚘事を読むずできるようになるこず

・AIの「なぜ」が2〜3段で止たったずき、圹割を指定しお5段目たで掘り盎させられる ・1本の怜玢で「該圓なし」ず蚀われおも、別の軞から探し盎しお残りを拟える ・以䞊を毎回指瀺せずに、バグ修正を頌むだけで自動で回せる

こんな人におすすめ

・AIに「なぜを5回」ず頌んでも、2〜3回で止たっおしたう人 ・暪䞊びチェックを頌んだのに、埌から同じ原因のバグが別の堎所で出おきた人 ・再発防止策が「ドキュメントに曞いおおきたす」で毎回終わっおしたう人

読む前に、順番の確認だけ

・Claude Codeなどのコヌディング甚AIをただ䜿っおいない人は、先に①芁件定矩線ぞ。Claude Codeを動かすずころたで枈たせおから、この蚘事に戻っおきおください
・タヌミナルパ゜コンに文字でコマンドを打぀画面のこずですをただ䞀床も開いたこずがない人も、同じく先に①ぞ。この蚘事のコマンドは、すべおClaude Codeにそのたた貌れる圢で茉せおありたす
・pytest / mypyをただ入れおいない人完了条件の「テスト党グリヌン」「型チェック」がそのたたでは満たせたせん。6ステップのうち5぀は䜿えたす
・今回はバグを盎しきるずころたでで、再発防止たでは手を広げないず決めおいる人には、埌半が過剰かもしれたせん
・チヌム開発で、コミットメッセヌゞの曞匏を自分の䞀存では倉えられない人。6ステップのうち、蚘録の型を決める最埌の1぀が䜿えたせん

②を読んだ方ぞこの蚘事は䜕が違うか

②で枡した簡易版SKILL.mdは玄50行で、「2぀の角床から探す」ずだけ曞いおありたした。この蚘事はその角床の䞭身動詞軞ず受け手軞、䞡方をすり抜ける3皮類の曞き方、0件が停物かどうかの確かめ方、3件以䞊でlint化を必須にする線匕きを、コマンドず160行のSKILL.md党文で埋めたす。②の簡易版はそのたた差し替えられたす。

このシリヌズの5蚘事に぀いお

Claude Codeでアプリを䜜り、育おおいくたでを5本に分けお曞いおいたす。

① 芁件定矩線 ── 䜕を䜜るかを、Claude Codeに䌝わる圢で蚀葉にする
② 蚈画→実装→テスト・なぜなぜ分析線 ── 仕様曞からアプリを組み䞊げ、䞍具合を根本から盎す
③ 技術的負債を、AI自身にあぶり出させる ── ただ衚面化しおいない問題を、先回りで掗い出させる
④ AIのなぜなぜ分析が浅くなる理由ず、2軞の暪䞊びチェック ── 芋぀けた1件を、二床ず再発しない圢で盎しきる この蚘事
â‘€ セキュリティ監査線 ── 人に䜿っおもらう前に、危ない箇所を掗い出す

番号は公開順です。読む順ではありたせん。はじめおアプリを䜜るなら①②、人に䜿っおもらう前に⑀、アプリが育っおきたら③④、の順が自然です。どの蚘事から読んでも単䜓で完結したす。

5本ずも、コヌドを曞いたこずがない方が読める圢にしおありたす。③④はコマンドの結果を読む堎面が出おきたすが、打぀のはClaude Codeなので、読んで刀断できれば足りたす。

5本を通しお䞀貫しおいるのは、AIの出力をそのたた信じないずいう姿勢です。芁件定矩曞も、実装も、AIが出したバグや脆匱性の指摘も、芁所で人間が確かめる。その確かめ方を各蚘事で具䜓的に扱っおいたす。

5本を個別に買うず4,020円ですが、マガゞンなら1,500円です。3本以䞊読む予定なら、そちらのほうが安くなりたす。今埌远加する回も、远加料金なしで読めたす。

盎したはずのバグが、別の堎所から顔を出す

冒頭に曞いた再発は、運が悪かったわけではありたせん。暪䞊びチェックのやり方に、構造的な取りこがしがあるからです。この蚘事では、その取りこがしがなぜ起きるのかず、二床ず起こさないための手順を扱いたす。

扱うのは3点セットです。(1) 掘るなぜなぜ分析で根本原因たで䞋りる、(2) 掗い出す暪䞊びチェックで同型箇所を党件拟う、(3) 機械化する再発防止をlintかtestに萜ずす。

欠陥郚品のリコヌルに近い䜜業だず思っおください。1台で䞍具合が出たら、同じ郚品を䜿った車を党郚点怜する。そしお次のロットから蚭蚈を倉える。(3)が抜けるず、点怜した先から同じ郚品がたた䜿われたす。

以降の実䟋ずコマンドは、わたしが実際に運甚しおいるPython補のプロゞェクトから採っおいたす。蚀語やアプリの皮類が違っおも、考え方はそのたた䜿えたす。

実際に起きたこず1軞で怜玢しお「該圓なし」、実は4箇所残っおいた

わたしがPythonで曞いた、株䟡チャヌトの分析ツヌルでの話です。

日時の扱いに関するバグを盎したした。原因のパタヌンをastimezone(JST)ずいうメ゜ッド呌び出しだず特定したした。日時を日本時間に倉換する凊理です。それでコヌド党䜓を怜玢した結果が「他に該圓なし」。そう刀断しお、コミットの手前たで進みたした。

ずころが、コミット盎前のレビュヌで指摘が入りたす。同じ関数の䞭に同型の箇所がある、ず。ここでひやりずしたした。

そこで怜玢の仕方を倉えお、今床は「日時の倀そのもの」を軞に探し盎したした。するず、4箇所の同型パタヌンが残っおいるこずが分かりたした。

なぜ最初の怜玢で芋぀からなかったのか。答えは単玔です。

同じ皮類の問題でも、コヌド䞊の曞かれ方は耇数に分裂するからです。

この䟋では、日時を扱う操䜜がastimezoneだけではありたせんでした。strftimeやisoformatにも分かれおいたのです。同じ問題を衚す操䜜の名前が3皮類あったこずになりたす。そのうちの1぀で怜玢した時点で、残り2皮類は最初から芖界に入っおいたせん。

このほかに、関数呌び出しの圢をしおいない「文字列ぞの盎接埋め蟌み」も1皮類ありたした。こちらは埌半で別立おに扱いたす。

ここから埗られた教蚓がこれです。

操䜜の名前をひず぀決めお怜玢するず、曞き方が3皮類に分裂しおいる堎合、3分の2は最初から探せおいない。

実際この件では、怜玢の軞を倉えた瞬間に4箇所が出おきたした。「該圓なし」は、探しおいなかっただけだったわけです。あのずきレビュヌがなければ、そのたたコミットしおいたした。

察凊法は、怜玢を2軞に分けるこずです。䞭身を先に曞いおおきたす。

  • 動詞軞どんな操䜜をしおいるかAPI名・挔算子・メ゜ッド名

  • 受け手軞䜕に察しお操䜜しおいるか倉数名・属性名・型

この2本を、別々のコマンドで流したす。動詞軞で挏れたものは受け手軞で拟えたすし、その逆も成り立ちたす。わたしが最初にやったastimezone(JST)ずいう怜玢は、動詞ず受け手を1本に混ぜたものでした。だから他の動詞も、他の受け手も、䞡方すり抜けたわけです。

分けたあず具䜓的にどう曞くか。grepで拟えない経路をどう探すか。芋぀かった件数でどう察応を倉えるか。ここから先は有料゚リアで扱いたす。

「なぜ」が浅くなるのは、各段に圹割がないから

もうひず぀、よくある悩みがありたす。「なぜを5回ず頌んでも、2〜3回で止たる」ずいうものです。

AIに任せた堎合も、自分でやった堎合も同じように起きたす。原因ははっきりしおいたす。

各段が「同じ抜象床の蚀い換え」になっおしたうからです。

たずえば、こんな掘り䞋げを芋たこずはありたせんか。

なぜ1: ゚ラヌが出た
なぜ2: 凊理が倱敗したから
なぜ3: 想定倖の倀が入ったから

これは掘り䞋げではありたせん。同じこずを3回蚀い盎しおいるだけです。抜象床が䞊がっおも䞋がっおもいないので、䜕回繰り返しおも根本原因にはたどり着きたせん。

これを防ぐには、各段にあらかじめ「䜕を答える段か」ずいう圹割を割り圓おおおく必芁がありたす。Why1は芳枬事実、Why2は盎接原因、Why3はコヌド䞊の蚭蚈刀断。このように、段ごずに答えるべき問いを固定しおしたいたす。

圹割を決めおおけば、AIに頌んだずきも段の意味が明確になりたす。蚀い換えでお茶を濁せなくなるからです。

再発防止策が「ドキュメントに曞く」で終わるず、必ず戻っおくる

3぀めの問題です。再発防止策ずしお「コヌディング芏玄に远蚘したした」で終わらせるパタヌン。

わたしのプロゞェクトで、再発防止を人間のレビュヌ任せにしたバグ修正を6件さかのがっお远跡したした。結果は、そのほが党件が再発しおいたした。新しく曞かれた別の箇所で、同じテヌマずしお埩掻しおいたのです。

人間のレビュヌに担保を任せるず、既存の箇所は盎っおも、新しく曞かれる箇所で同じテヌマが埩掻したす。特にAIにコヌドを曞かせおいる堎合は芁泚意です。AIは前のセッションの反省を芚えおいないので、ドキュメントに曞いただけのルヌルはほが機胜したせん。

だから再発防止策は、**lint化最優先 test化  docsに曞くだけ最終手段**ずいう優先順で遞びたす。既補のlintルヌルで足りなければ、自分のプロゞェクト甚のチェックを曞くずころたで含みたす。

そのうえで「docsに倒しおいいか」を刀断するためのゲヌトを、あらかじめ甚意しおおく必芁がありたす。

党䜓像6ステップ

ここたでの3぀の問題に、それぞれ察凊を割り圓おたす。するず、手順はこの6ステップになりたす。

1. 症状を1行で曞く
      ↓
2. Why5で掘る各段に圹割を割り圓おる
      ↓
3. 原因のパタヌンを「探せる圢」に抜象化する
      ↓
4. 暪䞊びチェック動詞軞 × 受け手軞の2軞で怜玢
      ↓
5. 再発防止策を決めるlint化 > test化 > docs
      ↓
6. コミットに Why5 ず暪䞊び結果を蚘録する


画像

この6ステップを毎回手で回すのは珟実的ではありたせん。だから最埌にSKILL.mdずしお登録しお、自動発動させたす。

SKILL.mdずいうのは、Claude Codeが自分から読み蟌んでくれる手順曞のファむルです。「これに圓おはたる䟝頌だ」ず刀断したずきに発動したす。決められたフォルダに眮くだけで登録できたす。毎回プロンプトに手順を貌る䜜業が芁らなくなりたす。これがいちばんの利点です。

持ち垰り浅いなぜなぜ分析の芋分け方3぀

ひず぀枡しおおきたす。手元にあるWhy5が浅いかどうかを、その堎で刀定するための3぀の目印です。

1. 段が進んでも、䞻語が倉わらない。 Why1からWhy5たで、ずっずコヌドの話で終わっおいる。掘れおいるWhy5は、コヌドから人・プロセスぞ䞻語が移りたす。

2. Why5が「䞍泚意」「確認䞍足」で終わっおいる。 これは原因ではなく、原因の探玢を打ち切る蚀葉です。ここで止たっおいたら、ただ1段も掘れおいたせん。

3. 再発防止策が「気を぀ける」になっおいる。 原因が人の意識に眮かれおいる蚌拠です。機械化できる圢になっおいたせん。

3぀のうち1぀でも圓おはたったら、その分析はやり盎しです。たずは自分の盎近のコミットで詊しおみおください。わたしは3぀ずも圓おはたるコミットが、ぜろぜろ芋぀かりたした。

SKILL.mdの冒頭だけ、先に芋せたす

有料゚リアの䞭心は、この6ステップをたるごず自動発動させるSKILL.mdです。

䞭身が芋えないものにお金は出しにくいず思いたす。冒頭のdescriptionず「完了条件」だけ、実物のたた出しおおきたす。

---
name: why5-and-horizontal-check
description: バグ修正・技術的負債の察応時に、症状を消すだけで終わらせず、
  Why5で根本原因を掘り䞋げ、動詞軞ず受け手軞の2軞怜玢で同型箇所を党件掗い出し、
  再発防止策をlint/testたで機械化する。バグ修正・䞍具合察応・゚ラヌ調査・
  技術的負債ぞの察応を頌たれたずきに䜿う。
---

## 完了条件

次のすべおを満たすたで、完了ず報告しない。

- Why5たたは本質に到達した段数が蚘録されおいる
- 暪䞊びチェックを動詞軞・受け手軞・補助軞で実斜し、各軞の怜玢コマンドず
  件数が蚘録されおいる0件の軞も蚘茉する
- 再発防止策が決たっおいる「修正のみ・再発防止なし」は犁止。
  怜出0件の堎合ず、埌述の省略ケヌスに該圓する堎合はれロ確認の蚘録で足りる
- Why5ず暪䞊び結果を、コミットメッセヌゞ本文の定型ブロックに蚘録した
- lint / 型チェック / テストをすべお実行し、党グリヌンである

抜粋の䞭に出おくる「補助軞」は、2軞では拟えない曞き方を別立おで探すための3本目です。「埌述の省略ケヌス」ずあわせお、有料゚リアで扱いたす。

効くのは「完了条件」の曞き方です。手順だけ曞いたスキルは、AIが途䞭で切り䞊げお「察応したした」ず蚀っおきたす。**先に「これを満たすたで完了ず蚀うな」を䞊べおおくず、途䞭で止たりにくくなりたす。**この考え方だけでも、手元のスキルに移怍できたす。

この抜粋は党䜓の1割匷で、残りは有料゚リアにありたす。

ここから先で手に入るもの

・Why5の5段階の型各段の圹割を固定した察応衚・実䟋぀きず、5段で止めるか続けるかの刀断基準2぀
・そのたた投げるAIぞの差し戻し文浅い掘り䞋げを3段目からやり盎させる指瀺。コピペ可
・2軞のgrepコマンド4本macOSやripgrepでも動く圢停の0件を出さないための泚意぀きず、grepで拟えない経路3皮、怜玢手段の䜿い分け衚
・3件ルヌルず件数の数え方、コミット前チェックリスト5項目、docsに倒す前に答える3぀の質問
・lintチェッカヌの最小雛圢Pythonのastで曞いた玄65行。CI蚭定ずpre-commit蚭定぀きず、既存コヌドが真っ赀になったずきの段階導入手順
・コミットメッセヌゞのテンプレヌト党文ず、実運甚版SKILL.md党文玄160行、眮き堎所
・CLAUDE.mdの曞き方・぀たずき4ä»¶


 
 
元SIerのシステム゚ンゞニア。開発ず品質管理QAを経隓し、今はセカンドラむフ䞭。AIを䜿い始めた人や非゚ンゞニアに向けお、Claude・Claude Codeの䜿い方をコピペで詊せる手順にしおいたす。AIに任せおも品質を萜ずさない進め方が軞です。たずは固定蚘事からどうぞ。

あなたぞのおすすめ