自分の頭を使え:LLM時代のエンジニアリング標準
LLMの普及により、ソフトウェアエンジニアは「バイブコーディング」の罠に陥り、コードの真の所有権を失う危険性がある。本記事では、コードの理解と所有権を維持し、厳格なエンジニアリング慣行と人間によるレビューの重要性を説く。
大規模言語モデル(LLM)の登場により、ソフトウェア開発は専門家だけのものではなくなった。誰でもAIを使ってソフトウェアを書けるようになったことは良いことだ。しかし、私は多くの熟練エンジニアが「バイブコーディング」(vibe-coding)の罠に陥っているのを目撃している。彼らは設計し、考え、実装するという従来のプロセスを放棄し、代わりに大量の質の疑わしいコードを高速に生成している。それは平均的なユーザーに期待されるものであり、資格のあるエンジニアの仕事ではない。
速度の罠
LLMは光速でコードを生成するが、この利点は適切に導かれなければならない。あなたのツールが個人のスクリプトから他人に使われるものに変わると、問題が発生し始める。LLMに修正を頼むことは、コードベースの制御を失う正確な方法だ。コード所有権の概念を考えてみよう:自分でコードの仕組みを説明し、バグを特定できるなら、それはあなたのコードベースだ。しかし、すべての編集をLLMに頼っていれば、ソフトウェアを管理しているのではなく、AIにもはや理解できないランダムなコードを操作させていることになる。
たとえ大規模なチーム開発であっても、速度だけが目標ではない。AI支援開発では、コミット内容、副作用、テストの更新、ベストプラクティスに細心の注意を払う必要がある。最終的に、LLMがコードを生成したとしても、あなたはその動作を説明できなければならない。安定した開発プロセスなしに単にLLMをすべての問題に投入すれば、コードベースは急速に制御不能になる。
所有権 vs. 保管権
あなたは単に速く動きたいのか、それとも保守可能でスケーラブルで安全で、本当に自分のものと言えるシステムを構築したいのか。純粋なカウボーイ(cowboy)は最速で結果を出すことだけを気にし、後は他人にコードのメンテナンスを任せる。これはスケーラブルではなく、コードを引き継いだ者はリライトを検討し、あなたの(実際にはあなたのものではない)設計判断を非難するだろう。カウボーイには所有権がなく、あなたは所有者ではなく保管人として行動している。所有者のメンタルモデルは異なる:システム全体のマップを頭に持ち、アーキテクチャの選定理由、エッジケース、モジュール間の依存関係を理解している。AIとの関係も健全で、LLMを生産性向上ツールとして使い、すべての出力をレビューし、コミットされたコードを一行ずつ説明できる。バグが発生した場合、原因となるコード領域を特定し、修正が全体に与える影響を理解した上で迅速に対処できる。
しかし、組織やプロジェクトは開発者に「速く、速く、速く」とプレッシャーをかけ、彼らを所有者から保管人へと静かに格下げしている。彼らはより速く動いていると思っているが、実際にはシステムの制御をAIに明け渡し、技術負債が遅れて襲いかかるのを待っているだけだ。
AIの正しい活用:インフラと新しいネットiquette
個人開発者も企業も、基本に立ち返り、強固なエンジニアリング慣行とガードレールを設定すべきだ。理想的な環境とは:共有目標に向かって働く人々、コミットされたコードの真の所有権、コード品質・安全性・長期的保守性を保証する構造化された環境でエージェントと人がシームレスに協働する。基本ルールはシンプルだ:人間とエージェントの役割と責任を定義し、カウボーイを禁止する。従うべき標準を設定する。開発者とエージェントがルールと標準を遵守するためのツールを整える。CI/CDですべてを強制する。人は人と話す。AI支援コーディングは適切な所有権のもとで行う。エージェント生成コードは人間がレビューすることを必須とする。人間が書いたIssueにAIの生出力で応答することを禁止する。
これは1980年代のネットiquette(初期のコンピュータネットワークとUsenetで生まれた)の復活だ。誰かが時間をかけて書いたものに対して、AIが生成したスラップ(slop)で返すことには私は激怒する。あなたも時間をかけて読み、適切な回答を書くべきだ。自分の頭を使え。
ツールに関しては、強いCI/CDが明白な提案だ:リンター、フォーマッター、プリコミットを使用し、テストスイートは人間がレビューし正確であることを確認する。さらに、AIのカスタマイズを活用する:明確なガードレールを定義したAGENTS.mdファイル、そしてエージェントの思考とツール使用を導く少数の人間が書いたスキル(skills)を用意する。
結論
AIは生産性向上のための増幅器である。良いエンジニアリング習慣を増幅すれば、品質を損なうことなく速度を生み出し、コードベースの真の所有権を保証する。怠惰を増幅すれば、ノイズでリポジトリを埋め尽くし、すぐに所有権のない保管人になってしまう。ツールを活用し、ワークフローを加速させよ。しかし、エンジニアとしての判断力を決して手放すな。自分の頭を使え。