powered by TechFeed
表示モード
Deep Dive

AIにコードを書かせてレビューするのは幻想だ — 「自分で書いてAIにレビューさせる」クラフトコーディングという逆転発想

8月16日、Peter Bloemが「AI coding without the vibes」と題した記事を公開した。「AIにコードを書かせて自分がチェックする」という運用は、現実には機能しない——そう断じた上で、「自分で書いてAIにレビューさせる」というクラフトコーディングの考え方と、その実践ルールを詳述している。

8月16日、Peter Bloemが「AI coding without the vibes」と題した記事を公開した。「AIにコードを書かせて自分がチェックする」という運用は、現実には機能しない——そう断じた上で、「自分で書いてAIにレビューさせる」というクラフトコーディングの考え方と、その実践ルールを詳述している。


「AIに書かせてチェック」は幻想だ

AIコーディングが当たり前になった今、プロのエンジニアも含め、多くの人がAIにコードを書かせ、テストが通ればOK、という運用をしている。これが「バイブスコーディング」だ。

※「バイブスコーディング(vibe coding)」とは、AIが生成したコードの中身を深く理解せず、動作確認だけで採用していくスタイルを指す。2025年初頭にAI研究者のAndrej Karpathyが提唱した概念として広く知られている。

Bloemはこれを根本から問い直す。「書く」と「チェックする」の2段階に分けたとき、AIにできるのはどちらか、という問いを立てる。

AIに書かせて自分がチェックする、というのは理屈の上では成立する。だが現実には機能しない。AIは冗長なコードを高速で大量に吐き出す。人間の注意力がそれに追いつけるはずがなく、しばらくすると信頼してチェックをやめてしまう。レアなバグは「滅多に起きない」からこそ目を慣らせない。

「他人のコードをレビューするのは苦行だ。自分でコードを書くのは楽しい。」

Bloemはこう述べた上で、逆にすればいいと言う。自分でコードを書き、AIにレビューさせる。それだけだ。


3種類のベーカーで整理するコーディングスタイル

記事では、3人のパン職人のアナロジーでコーディングスタイルを分類している。

  • ハンナ(手作りコーダー): AIを一切使わず、すべて手で書く。品質へのこだわりは本物だが、スケールしない
  • ヴィヴィアン(バイブスコーダー): AIに丸投げし、テストと本番の挙動だけを監視する。個々のコードへの関心はない
  • カーラ(クラフトコーダー): 商業的に運営しながら、コードの本質的な品質にこだわり続ける。ツールは使うが、品質向上に寄与する使い方しかしない

Bloemが提唱するのはカーラのスタイル、すなわちクラフトコーディングだ。「AIを使わない」ではなく、「AIを自分の品質基準に合う形でだけ使う」という考え方である。


クラフトコーディングが最も刺さる領域:科学コード

Bloemは自身が助教授であり、研究者の立場からこの問題を語っている。科学コードは正しさが最優先であり、バグがあれば論文ごと無効になる。バイブスコーディングが致命的なのはこの領域だ。

自身の経験として、「動いているように見えるが実はバグを抱えたコード」をClaudeに見せると、必ずどこかに重大な問題を指摘されたと述べている。それもFalse Positiveではなく、自分が確認して「確かにバグだ」と認めるものばかりだったという。

「これまでClaudeに見せたコードで、深刻な問題を指摘されなかったものは一つもない。コードは動いているし、自分でも問題は見えなかった。しかし問題は存在していた。」

PhD時代は自力でテストスイートを書いてデバッグに何週間も費やしていたが、今はその余裕がない。AIによるレビューはその代替として機能している、というのが率直な評価だ。


クラフトコーディングの10のルール

「Hand-written, AI reviewed(手書き、AIレビュー)」を実践するための具体的な指針として、以下の10項目が示されている。

  1. IDEにAIを入れない。LLM補完も含め、すべての文字は自分の指でタイプする。GitHub CopilotのようなAI自動補完を排除することで、コードへの主体的な関与を保つ
  2. できればAIにコードベースへのアクセスを与えない。Webインターフェースにスニペットをコピペするにとどめ、アクセスするとしても読み取り専用に限定する
  3. AIに何かを実行させない。提案はAI、実行は自分
  4. AIのチャット欄からコードをコピペしない。AIが提案したコードをそのまま貼り付けるのではなく、内容を理解した上で自分の手で写経する。「動くから使う」ではなく「理解してから使う」が原則だ
  5. 普通の検索でできることにAIを使わない
  6. AIに聞く前にドキュメントを読む
  7. 自分で解けない場合にのみAIに解法を聞く。まず自分で考える時間を取る
  8. AIにレビューを頼む前に自分でコードをチェックする
  9. コードを実行してまず自分で確認し、その後AIにレビューさせる
  10. 理解できない提案は実装しない

Bloem自身も「疲れているときに雑なコードを書いてClaudeにデバッグさせてしまう」と正直に認めており、これらを宗教的に守っているわけではないとしている。ただ、理想を把握した上でそこに近づこうとすることに意味があると述べている。


スキルの劣化という本質的なリスク

記事が最も強調するのは、AIへの過度な依存による認知スキルの劣化だ。「自分が本当に理解しているかどうかを正確に測る能力」は、大学やキャリア初期に苦労して身につけるものだが、AIに丸投げし続けると、理解したつもりになりながらその能力が育たない。

Bloemは「認知スキルは筋肉と同じで、鍛えにくく、失いやすい」と表現する。これは学生への警告であると同時に、AIが使えるようになった後のキャリアを歩む現役エンジニア全員への問いかけでもある。

バイブスコーディング対クラフトコーディングという対立軸は、単なるツールの使い方の話ではない。コードを書くという行為を通じて何を身につけるか、あるいは何を失うか、という問いに直結している。


詳細はAI coding without the vibesを参照していただきたい。