valid,invalid

関心を持てる事柄について

Vibe Coding: The Future of Programming (2025-04-17 Early Release) 読んだ

2025年8月にO'Reillyから出版される『Vibe Coding: The Future of Programming』のEarly Release版として2つの章が公開されていたので読んでみた。

  1. The 70% Problem: AI-Assisted Workflows That Actually Work
  2. Beyond the 70%: Maximizing Human Contribution

learning.oreilly.com

タイトルとは裏腹に"Vibe Coding"の話は少なく、むしろ副題の"The Future of Programming"やこれから AI を活用していくエンジニアに求められるスキルに焦点が当てられているのが興味深かった。実際には"AI-assisted Coding: The Future of Programming"という言葉のほうがタイトルにふさわしいように思うし、そういう期待で読むとよさそう。*1

タイトルにVibe Codingを使ったのはマーケティングのためかもしれないし*2Andrej Karpathy氏が元々提唱したVibe Codingに過剰な期待を持って読みにきた人に説教するみたいな感じかもしれない。

まだ Early Releaseということなので印象に残った点をいくつかピックアップする程度の感想に留める。

70% Problem

繰り返し出てくる"70% Problem" という言葉。これは現代の AI ツールが基本的なコードの約 70%(boilerplate、浅いドメイン、easy bug fix)を生成できる一方で、残りの 30%(エッジケース、アーキテクチャ改良、保守性、深いドメイン)は依然として人間が介入・補完して解決しないといけないという問題。

addyo.substack.com

デモを一発で作れて感動〜!しつつもデプロイなどのラストワンマイルでつまづいたり、機能拡張ができずにスタックしたり、一歩進んで二歩下がることの繰り返しばかり...といった話。まぁそれはあるよねという感じなのだが、本書は「残り 30%のためにエンジニアリングの専門知識が引き続き必要であり、その重要性はむしろますます高まっている」という点を強調している。

In essence, while agentic AI offers powerful tools for software development, it also amplifies the importance of foundational knowledge. To harness these tools effectively and responsibly, users must cultivate a deep understanding of software principles, ensuring they remain in control of the development process rather than becoming passive observers.

Software development is more than writing code, after all – it’s a whole workflow that includes planning, collaboration, testing, deployment, and maintenance.

ソフトウェア開発は単にコードを書くプログラミングだけでなく、「計画、コラボレーション、テスト、デプロイ、メンテナンスを含むワークフロー全体」という視点を持つことが重要だと。

In other words, while AI can generate code, it often struggles with engineering.

現時点では AIはプログラミングは得意だがエンジニアリングは苦手であるとか、『人月の神話』でいう「偶発的な複雑さ」の処理に優れているが「本質的な複雑さ」にはまだ対処できない*3、とも表現している。

ちなみにこの本の著者は Google Chrome のシニアエンジニアリングリーダーである Addy Osmani 氏。ソフトウェア工学やコンピューターサイエンスの専門性を十分備えているであろうエンジニアによる言説である点を付記しておく。

AI-assisted Coding の 3 類型

AI ツールを使ったソフトウェア開発のスタイルは 3 つに分けて説明されていた。

  1. First Drafter: AI モデルが初期コードを生成し、開発者がそれを改良、リファクタリング、テストする。「もういい、あとは俺がやる」スタイル。
  2. Pair Programmer: 開発者と AI が常に対話し、緊密なフィードバックループ、頻繁なコードレビュー、最小限のコンテキストで協働するスタイル。
  3. Validator: 開発者が最初のコードを書き、その後 AI を使って検証、テスト、改善するスタイル。

今の自分は主に First DrafterとしてAIを活用しており、Pair Programmer としては少しだけ、あまり Validator としては活用していない。それぞれのスタイルをもう少し実験してみたい。

AI-assisted Coding Golden Rules

Git を細かく使えとかジュニアとして扱えとかよく言われるものも含めて12個ぐらい。巷のブログではまばらに紹介されていることが多いが、本書に述べられている内容をメモしておくとよいのではなかろうか。

全部引用すると長いので特に良いなと思ったもの。

  • 常に検証する: AI 生成コードを意図と照らし合わせて検証/テストする。意図をテストとして書き起こすのをサボらない
  • 思考の拡張として活用する: AI は思考を置き換えるのではなく、能力を拡張するツール。考えることまで任せてはいけない
  • すべてのコードをレビュー: 人間が書いたものでも AI が書いたものでも同じ基準でレビューする
  • 理解できないコードの排除: 機能と影響を完全に理解していないコードは絶対にマージしない
  • 効果的なプロンプトの共有: 高品質な出力につながるプロンプトを文書化・共有する

レベル別アドバイス、成長戦略

シニア・ミドル・ジュニアそれぞれのエンジニアに合わせたアドバイスは実践的な内容だった。こちらもボリュームがそこそこあったので面白いなと思った点を 2 つだけ。

1つ目は、AI-assisted coderであっても定期的なAI デトックスをするとよいとのこと。時には AIのブースターを外して素のコーディングスキルの研鑽を定期的に行うというアイデアコアスキルの学習を省略してしまうとメタスキルが磨かれないという考え方に基づく。Vibe Coding の本なのに遠ざけているのは少し面白いが、本書の主張に照らし合わせれば納得感がある。

2 つ目は、AI時代にジュニア開発者が身につけられる最良の習慣の一つはコードのテストを書くことであるというアドバイス。テストを通じてシニアエンジニアのような審美眼を磨けるだけでなく、バグ発見ができたらそれはAIにできない付加価値としてチームに貢献できたことになる。ソフトウェアがどう振る舞うべきかの判断から入り、テストを書くことで AI-assisted Coding による成果物の品質と理解度も向上するとのこと。

総じて

冒頭にも書いた通り、現時点で読める2つの章ではvibe codingの話よりもAI-assisted codingが主流になっていく世界でどのようなスキルが必要なのか、どうスキルを磨いていくのかが中身であった。

技術革新が激しいので正式版が出る頃には世間の状況も一変していそうではあるが、普遍的なエンジニアリングスキルに焦点をあてるのであれば長く読まれる本になるかもしれない。

個人的には正式版と読み比べることで、Early Releaseで抱いた印象が変わるかどうかを楽しみにしている。

*1:余談だが昨今のAI codingという言葉に曖昧さを感じており、本書が用いるAI-assisted codingは指すものが明瞭でよい

*2:Simon Willisonは苦言を呈している https://simonwillison.net/2025/May/1/not-vibe-coding/

*3:関連: Out of the Tar Pit