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

AIに曞かせたコヌドをAIで怜査しよう


アプリ開発講座③技術的負債を、AI自身にあぶり出させる

#ClaudeCode #技術的負債 #AI駆動開発

AIにコヌドベヌス党䜓を健康蚺断させる仕組みず、その指摘の6〜8割が誀怜知だった実枬、そしお盎す前に1件ず぀仕分ける4ステップをたずめたした。

この蚘事を読むず埗られるもの

・どんなプロゞェクトにも䞀から導入できる、負債あぶり出しの仕組み分析コマンド1本skill 2本を䜜らせる導入プロンプト党文 ・指摘を🔎🟡🟢に分類させるための刀定基準ず、レポヌトの読み方 ・誀怜知を芋抜く4ステップの怜蚌手順ず、5段階の仕分け衚 ・「なぜ盎さなかったか」たで埌から远える、怜蚌結果の出力フォヌマット ・運甚に乗ったあず、䞀蚀で党工皋を回すための堎面別プロンプト4本

こんな人におすすめ

・AIに曞かせたコヌドが増えおきお、党䜓の健党性を把握できなくなっおいる人 ・AIのレビュヌ指摘をそのたた盎しお、動いおいたコヌドを壊した経隓がある人 ・CLAUDE.mdが肥倧化しおきお、運甚ルヌルの眮き堎所に悩んでいる人

読む前に、先に枈たせおおいおほしいこず

・タヌミナルパ゜コンに文字でコマンドを打぀画面のこずですをただ䞀床も開いたこずがない人。先に①芁件定矩線で、Claude Codeを動かすずころたで枈たせおください。そのうえで、この蚘事に戻っおきおもらえれば倧䞈倫です ・Windowsを䜿っおいお、WSLWindowsの䞭でLinuxを動かす仕組みをただ入れおいない人は、先にWSLを入れおください。この蚘事の実装䟋は、bashが䜿える環境を前提にしおいたす。ここだけは、買っおからでは埋められない前提です
この蚘事は、①②で䜜ったアプリを手元に眮きながら読む回です。コマンドはすべお、Claude Codeにそのたた貌れる圢で茉せおいたす。タヌミナルを自分で開く必芁はありたせん。
そのうえで、次に圓おはたる方には向きたせん。
・すでに「指摘を怜蚌しおから盎す」運甚が回っおいる人。仕組みではなく実枬倀だけを芋たいなら、実枬倀ず蚈枬条件は無料郚分にすべお茉せおいたす
・コピペすればそのたた動く完成スクリプトが欲しい人この蚘事が枡すのはAIにその仕組みを䜜らせるための導入プロンプトです。ファむル構成・蚭定倀・コマンドオプションは茉せおいたすが、シェルスクリプトやAST lint〔コヌドの構造を機械的に怜査する自䜜ルヌル〕の本文そのものは付いおいたせん
・゜ヌスコヌドを倖郚のモデルに送信できない環境の人この仕組みは、察象ファむルの䞭身をAIに枡すこずが前提です

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

Claude Codeでアプリを䜜り、育おおいくたでを5本に分けお曞いおいたす。
① 芁件定矩線 ── 䜕を䜜るかを、Claude Codeに䌝わる圢で蚀葉にする
② 蚈画→実装→テスト・なぜなぜ分析線 ── 仕様曞からアプリを組み䞊げ、䞍具合を根本から盎す
③ 技術的負債を、AI自身にあぶり出させる ── ただ衚面化しおいない問題を、先回りで掗い出させる この蚘事
④ AIのなぜなぜ分析が浅くなる理由ず、2軞の暪䞊びチェック ── 芋぀けた1件を、二床ず再発しない圢で盎しきる
â‘€ セキュリティ監査線 ── 人に䜿っおもらう前に、危ない箇所を掗い出す
番号は公開順です。読む順ではありたせん。はじめおアプリを䜜るなら①②、人に䜿っおもらう前に⑀、アプリが育っおきたら③④、の順が自然です。どの蚘事から読んでも単䜓で完結したす。
5本ずも、コヌドを曞いたこずがない方が読める圢にしおありたす。③④はコマンドの結果を読む堎面が出おきたすが、打぀のはClaude Codeなので、読んで刀断できれば足りたす。
5本を通しお䞀貫しおいるのは、AIの出力をそのたた信じないずいう姿勢です。芁件定矩曞も、実装も、AIが出したバグや脆匱性の指摘も、芁所で人間が確かめる。その確かめ方を各蚘事で具䜓的に扱っおいたす。

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

この蚘事に぀いおだけ、範囲を先に断っおおきたす。この蚘事だけでも、負債をあぶり出しお仕分けるずころたでは動きたす。芋぀けた1件を根本から盎しきる郚分は、④で深掘り。


レポヌトに🔎が6件䞊んでいたした。䞊から順に盎しおいけば、コヌドベヌスは健党になるはずでした。

ずころが1件ず぀実際のコヌドず突き合わせたら、盎す䟡倀があったのは1件だけでした。残りの5件は、過去に䞀床バグを盎した結果ずしお今の圢になっおいる箇所か、そもそも今のコヌドパスでは螏めない箇所だったのです。

わたしのプロゞェクトPythonで曞いた株䟡チャヌト分析ツヌルで3回蚈枬しお、誀怜知率は**83%82%60%**でしたうち1回はセキュリティ監査の指摘です。3回ずも、指摘の6割から8割が空振りでした。

この蚘事では、AIにコヌドベヌス党䜓を健康蚺断させる仕組みをれロから導入する手順ず、その指摘を鵜呑みにせず仕分けるための怜蚌手順を扱いたす。結論から蚀うず、効いたのは分析の粟床を䞊げるこずではなく、分析ず修正のあいだに怜蚌を1工皋はさむこずでした。

先に、蚀葉ずシリヌズの䜍眮づけ

芋慣れおいる方は次の章たで飛ばしお構いたせん

画像

この蚘事では「盎す䟡倀がなかった指摘」をたずめお、広い意味で誀怜知ず呌びたす。埌半に出おくる仕分け衚の⚪印は、そのうち最も狭い意味実は壊れおいなかったものを指したす。

なぜ、AIコヌディングでは負債のあぶり出しが必芁なのか

人間だけで開発しおいた頃に比べ、AIコヌディングでは技術的負債が速く・芋えにくく・繰り返し溜たりたす。しかもそれは、開発者の怠慢ではなくAIの特性そのものから来おいたす。

理由は5぀ありたす。

画像

1. 生成速床がレビュヌ速床を超える

AIは数千行のコヌドを数分で曞きたす。人間の目芖レビュヌは远い぀きたせん。

「読み切れないたた積み䞊がる」状態が垞態化しやすく、定期的にコヌドベヌス党䜓を健康蚺断させる仕組みがないず、負債は気づかれないたた増え続けたす。

2. もっずもらしさぞの過信automation bias

AIが曞くコヌドは文法も呜名もコメントも敎っおいお、説明も流暢です。だから人間のレビュアヌは「倧䞈倫だろう」ず過信しやすくなりたす。

やっかいなのは、むしろ壊れやすい箇所ほど芋た目がきれいに仕䞊がるこずです。䞊行性、䟋倖凊理、境界倀、タむムゟヌンずいった、本来もっずも疑うべき郚分がそうなりたす。

3. タスク単䜍の局所最適

AIは䞎えられた1タスクの範囲では正しく動くコヌドを曞きたす。しかし、コヌドベヌス党䜓の暗黙の前提たでは螏たえたせん。

たずえば「この倀は、DBに入る前に必ず正芏化されおいる」ずいう前提があるずしたす。新しく足した経路だけがその正芏化を通っおいなくおも、その機胜単䜓では動いおしたう。こうした食い違いは、機胜ごずに芋おいるかぎり芋えたせん。

4. 蚘憶が匕き継がれない

人間の゚ンゞニアは「前にこれで痛い目にあった」を芚えおいたす。AIにも蚘憶の仕組みはありたす。CLAUDE.mdは毎セッション読み蟌たれたすし、Claude Codeには自動メモリClaude自身が孊びを曞き溜める仕組み。既定でオンもありたす。

ただし自動メモリはマシンロヌカルで、しかも䜕を残すかをAI自身が遞びたす。「必ず守られる」保蚌はありたせん。別のマシン、別の゚ヌゞェント、CIの䞭では、その孊びは効きたせん。

lintやテストずしおルヌル化しない限り、同じ倱敗パタヌンが圢を倉えお䜕床でも再発したす。

5. 怜出する偎もAIであるずいう問題

そしお5぀目が、この蚘事の栞心に぀ながりたす。負債を芋぀ける分析コマンド自䜓もAIで動くため、2぀目に挙げた「もっずもらしさぞの過信」をそのたた匕き継ぐのです。

指摘を鵜呑みにしお盎すず、誀怜知たで拟っおしたい、動いおいたコヌドを逆に壊しかねたせん。

この5぀はどれも、人間が普通にレビュヌしおいれば防げた類の問題ではありたせん。AI前提の開発ペヌスだからこそ構造的に生たれる問題です。

党䜓像2系統の怜出ず、1本の確認フィルタ

そこで、負債を芋぀ける仕組みを2段構えにしたす。

画像
系統A: AI深掘り分析䞍定期・人間ドック
  分析コマンドを実行
    → プロゞェクトの党゜ヌスをバッチ分割しAIに投げる
    → 優先床🔎🟡🟢付きレポヌトを生成
    → 【必ず経由】1件ず぀「今も本圓に壊れおいるか」を仕分け
    → ✅本物ず確定したものだけ、根本原因たで掘っお盎す

系統B: 機械ゲヌト血圧蚈
  lint型チェックテストを䞀発実行するコマンド
    → 䞀床ルヌル化した既知パタヌンの再䟵入を止める
    → pre-commit hook に茉せお「毎コミット匷制」にする

系統Aは人間ドックにあたりたす。ただ症状が出おいない病気の芜を、経隓豊富な医垫AIの目でざっず芋぀けおもらうむメヌゞです。ただルヌル化されおいない未知の負債を、広く拟うのが圹目です。

系統Bは血圧蚈や䜓枩蚈です。決たった項目だけを、毎回機械的に枬りたす。䞀床特定しおルヌル化した既知パタヌンの再䟵入を防ぐのが圹目です。

この蚘事の䞻圹は系統Aですが、系統Bが無いず系統Aで芋぀けたものが積み䞊がるだけになりたす。有料゚リアには、䞡方をたずめお䜜らせるための環境構築プロンプトも入れおありたす。

そしお、この2぀の間にもう1本だけ、絶察に倖せないものがありたす。

この蚘事の栞心AIの指摘は、6〜8割が誀怜知だった

人間ドックには「疑わしきは党郚報告する」性質がありたす。実は健康なのに「芁粟密怜査」ず蚀われるこずが倚いのず同じで、AIの分析も誀怜知を倧量に含みたす。

これは感芚の話ではありたせん。わたしのプロゞェクトで実際に蚈枬した数字がこれです。

画像

・🔎 critical ず刀定された指摘6件のうち、実際に盎す䟡倀があったのは1件だけ誀怜知率83%
・セキュリティ監査候補49ä»¶ → 1件ず぀反蚌を詊みる圢で怜蚌し、確定したのは9件誀怜知率82%
・別のレポヌト🔎が5ä»¶ → 即修正の䟡倀があったのは2件誀怜知率60%

数字の読み方だけ先に断っおおきたす。3぀ずも同じPythonプロゞェクト1本での蚈枬で、母数は6件・49件・5件ずばら぀きがありたす。2぀目は技術的負債ではなくセキュリティ監査で、しかも「候補」49件からの絞り蟌みなので、1぀目・3぀目🔎ず確定刀定された指摘ずは性質がやや違いたす。母数が1桁のものは、1件の刀定が倉わるだけで割合が16〜20ポむント動きたす。

もうひず぀、蚈枬に䜿ったモデルはclaude-opus-4-8です。分析に䜿うモデルを倉えれば、この割合も圓然倉わりたす。

なので「83%」ずいう数倀の粟床は圓おにしないでください。持ち垰っおほしいのは「空振りが倚数掟になる」ずいう芏暡感のほうです。䜕割かは分からないが、半分以䞊は倖れおいる前提で運甚を組む。それだけで十分に蚭蚈が倉わりたす。

2぀目に挙げたセキュリティ監査に぀いおは、実際の監査のかけ方芳点を指定するプロンプト、指摘を反蚌させる手順、実斜タむミングを⑀のセキュリティ監査線にたずめおありたす。なお「反蚌」ずは、指摘を支持する根拠ではなく指摘ず食い違う事実を探しにいくこずで、この蚘事でいう怜蚌の䞭身そのものです。以降は「怜蚌」で統䞀したす。

この蚘事は技術的負債、⑀はセキュリティず察象が違いたすが、指摘を鵜呑みにせず確かめおから盎すずいう手順の骚栌は共通です。

なぜAIは、こんなに誀怜知を出すのか

理由ははっきりしおいたす。分析に枡しおいるのが、コヌドベヌスの䞀郚だけだからです。

党゜ヌスを䞀床にAIぞ枡すこずはできないので、10ファむルず぀のようなバッチに分けお枡したす。するずAIから芋えおいるのは、そのバッチに入ったコヌドだけです。呌び出し元がどこで倀を䜜っおいるか、その挙動を守るテストがあるか、過去にどんな修正が入ったか、なぜこの順序になっおいるかを曞いたコメント──刀断に必芁な材料のほずんどが、芖界の倖にありたす。

だからAIは、目の前のコヌドだけを芋お「これは壊れおいる」ず曞きたす。特に倚いのが、「過去に䞀床バグを盎した結果ずしお今の挙動になっおいる」箇所を、再びバグずしお指摘するパタヌンです。

぀たり、䞁寧に盎しおきたプロゞェクトほど誀指摘を呌び蟌みやすい構造になっおいたす。指摘をそのたた盎しにいくず、動いおいたコヌドをわざわざ元に戻す䜜業になりかねたせん。

だから、盎す前に怜蚌する

ここから導かれる運甚が verify-then-fix怜蚌しおから盎す です。指摘を受け取ったら、すぐ盎しにかからず、1件ず぀「今も本圓に壊れおいるか」を確かめる工皋を必ず挟みたす。

やるこずは単玔で、AIに芋えおいなかった4぀を、人間が芋にいくだけです。

  1. 実コヌドを開いお読む ── レポヌトの説明文ではなく、珟物ず、その倀がどこから来おいるかを芋る

  2. 既存テストを動かす、たたは小さく再珟する ── その挙動を守っおいるテストがないかを芋る

  3. git履歎を匕く ── 過去に同じ問題を盎しおいないかを芋る

  4. 日付぀きコメント・docstringを読む ── 意図的にそうしおいる理由が曞かれおいないかを芋る

4぀ずも、バッチを読んだだけのAIには手が届かない情報です。だから人間が確認する䟡倀がある。

この4぀を通したうえで、5段階✅本物🟡降栌🟠意図的に察応しない⚪誀怜知🔁解決枈みに仕分け、✅だけを修正に回したす。

この5぀は怜蚌の結果を衚すもので、レポヌト偎の優先床🔎🟡🟢ずは別軞です。同じ🟡が䞡方に出おきたすが、指しおいるものが違いたす。優先床の🟡は「䞭くらいの重芁床」、仕分けの🟡は「䞻匵が過倧だったので栌䞋げ」です。

各ステップで具䜓的に䜕を芋るか、どのコマンドを叩くか、仕分け結果をどう曞き残すかは有料゚リアで扱いたす。

合蚀葉はこうです。

件数を枛らすのが仕事じゃない。正しく盎すのが仕事。

火灜報知噚が湯気で鳎っおも、たず自分の目で火事か確かめたすよね。報知噚を無芖はしないけれど、鳎った党郚に消防車は出さない。それず同じ考え方です。

ここたでで持ち垰れるこず🔎の定矩を曞き換える

無料郚分の最埌に、今日そのたた䜿えるものを眮いおおきたす。

曞き換えるのは、AIにコヌドレビュヌを頌むずきのプロンプトのうち、優先床の付け方を指瀺しおいる箇所です。すでにAIレビュヌを回しおいる人なら、その指瀺文の該圓箇所を差し替えるだけで効きたす。

🔎高優先床の定矩に「珟圚のコヌドパスで再珟可胜なもの」ずいう条件を入れおください。

AIに優先床を付けさせるず、攟っおおけば「理論䞊は起こりうる」ものたで🔎に入りたす。結果、🔎が20件䞊んで優先順䜍が意味をなさなくなる。わたしの手元で🔎が6件や5件に収たっおいたのは、この線匕きを先にプロンプトぞ曞いおおいたからです。

画像

1行を差し替えお、1行を足す。これだけで、レポヌトから「理論䞊のリスク」ず「様匏矎動䜜に圱響しない曞匏レベルの指摘」がたずめお消えたす。件数は枛りたすが、読む䟡倀は䞊がりたす。

ただAIレビュヌを回しおいない人は、貌り先がないので次の䟝頌文をそのたた䜿っおください。仕組みを䜜る前に、レポヌトがどんなものかを1回芋られたす。

このプロゞェクトの <ディレクトリ、䟋: src/> 配䞋を、シニアレビュアヌずしお
レビュヌし、技術的負債を Markdown で指摘しおください。
各指摘には 堎所(file:行番号) / 珟象 / 根本原因 / 修正方針 / 怜蚌方法 を付けおください。
優先床は🔎🟡🟢の3段階ずし、🔎は silent failure・デヌタ喪倱・䞊行性バグ・
「珟圚のコヌドパスで実際に再珟できるバグ」に限っおください。
型泚釈やドキュメンテヌションコメントの远加、コヌド敎圢ルヌルPEP8等
レベルの指摘は曞かないでください。

ただし、これは指摘の量を絞る話であっお、残った指摘が正しいかどうかはただ䜕も確かめおいたせん。AIが誀怜知を出す割合そのものは、この2行では倉わりたせん。誀怜知を修正䜜業たで持ち蟌たせないのは、この先の怜蚌工皋の仕事です。

ここたでが、この仕組みの蚭蚈思想です。


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

・導入プロンプト党文読者が埋めるのは5か所だけ。察象プロゞェクトの䞭身をAIが知らなくおも、分析コマンド1本ずskill 2本を䞀床に構築できたすず、その蚭蚈意図3か所

・誀怜知を芋抜く4ステップの怜蚌手順各ステップの具䜓的な確認内容ずgitコマンド、どこたでAIに任せおどこから自分で刀断するかの線匕き、5段階の仕分け衚、「なぜ盎さなかったか」たで残る出力フォヌマットのひな圢

・CLAUDE.mdを薄いたた保぀skill分割の蚭蚈䜕をCLAUDE.mdに曞き、䜕をSKILL.mdぞ出すか。トリガヌ文ずdescriptionの実䟋぀き

・運甚に乗ったあず䞀蚀で党工皋を回す堎面別プロンプト4本普段づかいPDCA環境構築系統Bのゲヌトずpre-commitごず䜜らせる仕分けだけ生成物が仕様どおりでないずきの再指瀺

・導入時の受け入れチェックリスト5項目、非察話実行で萜ちないための具䜓的なコマンド指定、初回で぀たずく8パタヌンのトラブルシュヌティング衚、実際に動いおいる実装䟋ファむル構成・バッチ蚭定・skillの眮き方・コマンドオプション7皮


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

あなたぞのおすすめ