AI 支援型プログラミング(AI-assisted programming)とは、大規模言語モデルの助けを借りてソフトウェアを書く実践全般である。ここではこの語を、バイブコーディング の同義語としてではなく、バイブコーディングがその下に含まれる包括的なカテゴリとして用いている。AI 支援型プログラミングのすべてがバイブコーディングではない(でもバイブコーディングは素晴らしい) で Simon Willison は、両者を混同すると狭いほうの用語が薄まり、LLM を責任ある形で使ったときに何が可能なのかについて誤った印象を与えると論じている。区別の基準となる問いは、どのモデルやエディタが使われたかではなく、コードがレビューされているかどうかである。この説明によれば、LLM がコードの生成に関わったとしても、そのコードがその後読まれ、テストされ、理解されたのであれば、LLM の関与はその活動が何であるかにとって重要ではない。
用法
この情報源でこの用語が持ち出されるのは、主に、レビューされない生成には求められないが職業的な実践には求められるものを示すためである。Willison は、開発者の仕事をコードや機能を生み出すこと以上のものとして捉えている。コードは、動作することが実証されていなければならず、他の人間や機械にとって理解可能でなければならず、その後の継続的な開発を支えられなければならない。そこには性能、アクセシビリティ、セキュリティ、保守性、コスト効率が関わってくる。そして彼は、ソフトウェアエンジニアリングを、明示的な要件と暗黙の要件を互いに比較衡量しながら、数多くの可能な解決策の中から選択していく営みだと特徴づけている。
この種の本番品質の作業について彼が掲げる個人的なルールは、そのコードが何をするのかを他人に正確に説明できないのであれば、自分のリポジトリにコミットしない、というものである。彼はこれを業界の慣習としてではなく自分自身の黄金律として述べており、自身のプロセスについては別途より詳しく書いていると記している。
適用される場面
この枠組みが対象としているのは、依拠され保守されることを意図したコード、つまり上述の基準が当てはまるあらゆるものであり、バイブコーディング が擁護される対象である、リスクの低いプロトタイプや使い捨てのプロジェクトとは対照をなす。また、開発者がモデルの生成したものを読み、評価できることを前提としている。その能力や意図が欠けている場合、その活動はより広い名前で呼ばれた狭いほうの活動であり、それこそがこの情報源が正そうとしている混同である。
Willison はまた、このやり方で効果的に作業することは本当に難しいと述べている。何がうまくいき何がうまくいかないかを知ることは、途中に隠れた落とし穴を抱えながら、時間をかけて直感を養っていく問題だという。この主張と上述の黄金律は、測定された基準や広く合意された基準ではなく、一人の実務家が自らの実践について語ったものである。
関連用語
- バイブコーディング — この実践のうち、コードがレビューされない部分集合