🎸

Anthropicの男がコードを読むなと言った日

に公開

俺はコードを全行読む男だった。

PRが飛んでくる。差分を開く。500行。目を細める。変数名を追う。型を確認する。ロジックの分岐を脳内でシミュレートする。「ここ、なんでこの書き方にしたの?」とコメントを残す。2時間経つ。次のPRが来る。また500行。目がかすむ。コーヒーを淹れる。淹れたコーヒーが冷める頃に、やっと半分。

これが俺の日常だった。コードレビューという名の苦行。いや、苦行なんて言ったら修行僧に失礼か。修行僧は悟りがある。俺にはない。あるのは「LGTM」と書いた後の虚無感だけだ。😮‍💨

そんな日々に、ある言葉が降ってきた。

Vibe Coding。

🎤 Anthropicの男

2025年のことだ。AnthropicのErik Schluntzが講演で言い放った。

もともとの言葉はAndrej Karpathyのものだ。OpenAIの創設メンバーで、テスラのAI部門長だった男。彼がVibe Codingを定義した。

「完全にvibesに身を委ねろ。指数関数的成長を受け入れろ。コードの存在すら忘れろ」 🌊

最初に聞いたとき、正直に言う。何を言ってるんだこの人は、と思った。コードの存在を忘れる?それ、仕事放棄じゃないの?

でもErikはさらに踏み込んだ。

CursorやCopilotを使ってコードを書く。AIの提案をチェックして、修正して、またAIに投げる。この密なフィードバックループ——これはまだVibe Codingじゃない、と。

「完全にコードから離れること。それが核心だ」 😳

そしてこう続けた。

「コードの存在を忘れろ。でもプロダクトの存在は忘れるな」

ここで俺の脳内に電流が走った。コンパイラの話をしたんだ、Erikは。昔、プログラマーはコンパイラが吐くアセンブリを全行チェックしていた。コンパイラを信用していなかったから。今、アセンブリ出力を確認するプログラマーがどれだけいる? ゼロだ。コンパイラを信頼するようになった。同じことがコード生成で起ころうとしている。

🌙 22,000行の夜

Erikが語った話で、俺の椅子から落ちそうになったのはこれだ。

Anthropic社内で実際に起きた話。ある強化学習のコードベースに、22,000行の変更を加える必要があった。従来なら2週間かかる作業だ。2週間。10営業日。毎日コードを読んで、書いて、テストして、レビューして、直して、また書いて。想像するだけで目が乾く。👁️

それを1日でやった。

1日だ。朝はじめて、夜には終わっていた。22,000行。 🚀

種明かしはこうだ。

まず、数日間かけて人間が要件を定義した。「何をしたいか」を徹底的に詰めた。ここに手を抜かなかった。15分とか20分じゃない。数日だ。Claudeのために包括的なガイダンスを書いた。

次に、リーフノード戦略。これが味噌だ。🍖

コードベースを木に例える。幹があって、枝があって、葉がある。幹や太い枝——コアアーキテクチャ——に手を出すのは危険だ。他のすべてがそこに依存している。だから葉っぱを狙う。末端のコード。他のコンポーネントが依存していない部分。ここなら、多少のヘマをしても爆発半径が小さい。

そしてレビュー。22,000行を全部読んだか? 読んでない。 拡張性が重要な部分だけ、人間が重点的にレビューした。あとはテストで担保した。ストレステストを設計して、長時間回して、安定性を確認した。

従来のやり方 Vibe Codingのやり方
⏰ 2週間 ⚡ 1日
📖 全行レビュー 🎯 戦略的ポイントレビュー
🐢 段階的実装 🚀 大規模一括変更
😰 保守的 💪 野心的

俺はこの話を聞いて思った。待てよ、これ、CTOが専門外のチームを管理するのと同じ構造じゃないか。 🤔

そう、Erikもそこに触れた。

CTOは自分の専門外の分野のエキスパートを管理する。コードを全行読めなくても、受け入れテストで検証する。プロダクトマネージャーはコードを1行も読めなくても、プロダクトを実際に使って品質をチェックする。CEOは会計のプロじゃなくても、重要な数字のスポットチェックで財務を監督する。

実装の詳細を理解せずに検証できる抽象化レイヤー——これは文明と同じくらい古い問題だった。 そしてソフトウェアエンジニアリングにも、ついにその波が来た。

🔧 俺もやってみた

聞いただけじゃダメだ。やらなきゃ。

Erikの話を参考に、俺も試した。小さいプロジェクトからだ。いきなり22,000行は怖いから。😅

ClaudeのPMになれ 📋

まず意識を変えた。「Claudeが何をしてくれるか」じゃなくて、**「俺がClaudeのために何ができるか」**を考える。Claudeは新入社員だ。優秀だけど、文脈を知らない新入社員。

プロンプトに15分かけた。いや、20分。何を作りたいか。既存のコードベースのどこを見ればいいか。どんなパターンに従ってほしいか。どんなテストが必要か。全部書いた。

最初は面倒くさいと思った。でも、この20分が後の数時間を消し飛ばした

リーフノードを狙え 🍃

コードベースの依存関係を眺めた。どこが葉っぱか。他のモジュールが依存していない部分はどこか。そこから攻めた。

結果、多少変な実装があっても影響範囲が限定的だった。直すのも楽だった。最初に幹を触ろうとして事故った過去の自分に教えてやりたい。末端からやれ、と。

テストは3つでいい 🧪

Erikが言っていた。テストは処方的にこう要求しろ。

  1. ハッピーパス(正常系が通ること)
  2. エラーケース1つ(壊れたときに適切に壊れること)
  3. もう1つエラーケース(別の角度から壊れてみること)

エンドツーエンドテスト。実装に密結合したユニットテストじゃなくて、入力と出力だけ見るテスト。Claudeは放っておくと実装の中身にべったり張り付くテストを書く。それを矯正してやるのが俺の仕事だった。

Claude Code + Cursorのハイブリッド 🔀

大きい実装はClaude Codeでやる。ターミナルからファイルを探索して、計画を立てて、一気に書く。

細かい修正はCursorでやる。特定の行をピンポイントで直したいとき、VS Codeの中でCursorに指示を出す。

真のVibe Codingではないかもしれない。Erikの定義からすれば、まだコードに触りすぎだ。でもこれが俺にとっての現実的な妥協点だった。完全にコードから離れる勇気は、まだない。まだ。 😶

📈 指数関数の話をさせてくれ

ここからが怖い話だ。

AIが処理できるタスクの長さは、7ヶ月ごとに倍増している。📊

  • :約1時間のタスクが限界
  • 来年:1日分の作業がいける
  • 再来年:1週間分の作業が可能

Erikはこうも言った。20年後を「モデルが2倍良くなる」と考えるな。「百万倍賢く速くなる」と考えろ、と。1990年代のコンピュータと今のコンピュータの差だ。あの頃のPCで何ができた? ソリティアか? 今は? リアルタイムで4K動画を編集しながらSlackとZoomを同時に回してる。

同じ桁の変化が、コード生成に起きる。 🌊

Erikはこうも言った。今日、Vibe Codingをしなくても問題ない。今の仕事は今のやり方でこなせる。でも1〜2年後に「俺は全部の行を自分で書く/読む」と言い張っていたら、新しいモデルの恩恵を受けられない。チームのボトルネックになる。

適応する開発者と、しない開発者の生産性格差が指数関数的に開く。 📐

学習の話もした。従来、アーキテクチャの良し悪しを学ぶには2年かかった。プロジェクトを回して、失敗して、また回して。AIで高速イテレーションすれば、6ヶ月で同じ学びが得られる。同じ期間で4倍多くの「試行」が可能になる。

これは怠け者には最悪のニュースだ。表面的な作業で満足する人と、AIを使って深い理解を得ようとする人の差が、これまで以上に開く。個人の学習姿勢がすべてを決める時代。 🎓

🎸 余韻

俺はまだ全行読む癖が抜けない。PRの差分を開くと、つい目が追ってしまう。

でも知ってしまった。22,000行を1日でやった人間がいることを。アセンブリ出力を誰もチェックしなくなったことを。CTOが専門外のコードを読まずに組織を回していることを。

「全行読む」時代は終わる。 たぶん、思っているより早く。

でも「プロダクトを理解する」時代は終わらない。 むしろ、それしか残らない。

コードは読まなくていい。でもプロダクトは見ろ。ユーザーの声は聞け。何を作っているかは忘れるな。

Anthropicの男はそう言っていた。 🎸

GitHubで編集を提案

Discussion