powered by TechFeed
表示モード
Deep Dive

【海外記事紹介】「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コーディングの話題で真っ先に出てくるのがバイブコーディング(vibe-coding)だ。AIにコードを書かせ、テストが通ればOK、という姿勢。もともとはカジュアルな遊び方を指す言葉だったが、今や多くのプロの開発現場でも同様のことが起きている——AIが書いたコードを本人が一行も読まずに本番に入れる、というやり方だ。

Bloemはこのアプローチに対して明確に懸念を示す。「やる」と「確認する」の両方をAIに委ねれば、自分が何も学ばないばかりか、理解していると自己欺瞞に陥る、と。


3人のパン職人で理解する「クラフトコーディング」

記事で最も印象的な部分が、パン職人のアナロジーだ。

  • ハンナ(ホームベーカー):すべてを手作業でこなす。品質へのこだわりは本物だが、スケールしない。→ 手書きコーダー
  • ヴィヴィアン(大規模商業ベーカリー):食品科学者に判断を委ね、売上と原価だけを見る。パンの品質そのものには興味がない。→ バイブコーダー
  • カーラ(クラフトベーカリー):商業的に運営しながらも、プロセスの質にこだわる。手ごねはしないが、どのニーディングマシンをどう使うかを自分で判断する。→ クラフトコーダー

カーラのポジションがBloemの提唱するスタイルだ。道具を使うことを拒否しない。しかし、道具が品質向上に資する形でのみ使う。


核心的な主張:「AIにやらせるな、AIにレビューさせろ」

Bloemの基本的な提案はシンプルだ。

コードは自分で書く。AIはレビュアーとして使う。

AIにコードを書かせてそれを確認する、という逆の方向は機能しないとBloemは言う。理由も明確だ。「他人のコードを隅々まで確認するのは苦痛だ。自分でコードを書くのは楽しい。AIは多弁で、複雑にしすぎる傾向があり、速い。人間の注意力がそれに追いつくことは現実的にありえない」。

一方、自分で書いてAIにレビューさせる方式は、実際にどれくらい機能するのか。Bloemは自身の経験を具体的に書いている。

「これまでAIにコードスニペットを見せて、深刻な問題を指摘されなかったことは一度もない。コードは動いているし、私自身も何もおかしいとは思っていない。だが問題はある」

彼はアシスタントプロフェッサーとして教育業務に多くの時間を割かれ、コードを書く時間が減っている。博士課程で身につけたデバッグの規律も錆びついてきた。その状況でAIのコードレビューを試したところ、毎回バグが見つかったという。そして「私が提案を実装するのは、自分がその内容を理解した場合のみだ」と明記している。誤検知ではなく、本物のバグだと確認した上で対処している。


「クラフトコーディング」の10の掟

Bloemは具体的な実践指針として10項目を挙げている。

  1. IDEにAIを入れない。LLM駆動の自動補完も含む。すべての文字は自分の指でタイプする
  2. できればAIにコードベースへのアクセスを与えない。スニペットをコピペしてWebインターフェースに貼る
  3. AIに何かを実行させない。提案はAI、実行は自分
  4. AIのチャットボックスからコードをコピペしない
  5. 普通の検索でできることにAIを使わない
  6. AIに聞く前にドキュメントを読む
  7. 自分で解決できない場合のみ解決策を聞く。まず自分で考える時間を取る
  8. AIにレビューを頼む前に、自分でコードを確認する
  9. コードを実行して問題を確認してからAIにレビューさせる
  10. 理解できない提案を実装しない

Bloemは「これらを厳格に守っているわけではない」とも認めている。疲れているときにだらしないコードを書いて、自分でチェックせずにClaudeに渡してしまうことがある、と。ただし「理想が何かはわかっている。そこに向かって押し続ける」と述べている。


このアプローチが特に有効な領域

Bloemは科学コードを、クラフトコーディングが強く求められる領域の一つとして挙げる。科学の場合、コードの産物は論文における「アイデアの正しさの証明」であり、コードが「ほぼ正しい」では困る。本番コードは顧客が気づかなければ軽微なバグが許容される場面もあるが、科学コードでのバグは論文を無効化しうる。

そのため著者は「論文の著者は、コードが論文のアイデアを正確に実装していることを保証する責任がある。それにはコードを一行ずつ熟知している必要がある」と述べる。バイブコーディングではその保証ができない。


「スキルの劣化」という問題

Bloemが繰り返し言及しているのが、AIへの過度な依存によるスキル劣化のリスクだ。「認知的スキルは筋肉に似ている。鍛えるのは大変で、失うのは簡単だ」。これは学生だけでなく、AI以前にスキルを培った経験者にも同様に当てはまる、と指摘している。


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