ソフトウェアとAI:プロッティング vs パンツィング
本記事では、ソフトウェア開発における2つのアプローチ——プロッティング(トップダウンの計画)とパンツィング(ボトムアップのコーディング)——がAIツールの使用にどのように影響するかを探る。著者は、AIデリゲート(自律型)はプロッティングに適し、AIアシスタント(協調型)はパンツィングに適すると主張する。既存のコードベースでは、パンツィングが理解を構築し、デリゲートは学習を妨げる。グリーンフィールドプロジェクトではデリゲートのリスクは低いが、それでも「遊びながら学ぶ」プロセスを奪うことでプログラミングの喜びを損なう可能性がある。鍵は、現在の開発フェーズに合わせてAIスタイルを選択することである。
ソフトウェア開発と小説執筆の間には興味深い類似性がある。小説には2つのスタイルがある。「プロッター(計画者)」は書き始める前に世界観やキャラクター、大筋を構築する。「パンツァー(即興者)」は数人の魅力的なキャラクターと設定だけを持ち、書きながら物語の行き先を決める。これらのスタイルはソフトウェア開発にも反映される。プロッティング(計画型開発)はコードを書く前に設計文書を通じて解決策を練り上げることを重視し、パンツィング(即興型開発)はコード自体を思考の道具として扱い、それを書くことで問題理解を深める。
AIツールはこれらのスタイルに応じて異なる役割を果たす。著者はAIを2種類に分類する。「デリゲート(委任型)」は自律的に目標を達成し、高水準の仕様から直接成果物を生成する。「アシスタント(支援型)」は自動補完、コードレビュー、リサーチなどを通じて人間と協調する。デリゲートはプロッティングに適している。なぜなら、既存の理解をコードに変換するからだ。アシスタントはパンツィングに適しており、開発者が既存のコードやドキュメントから知識を抽出し、理解を深めるのを助ける。
実際の応用において、開発者が直面する2つのシナリオ——既存コードベース(ブラウンフィールド)と新規プロジェクト(グリーンフィールド)——はAIの使い方に大きな影響を与える。ブラウンフィールドでは、特に大規模で歴史のあるシステムでは、開発者はしばしばパンツィングを採用して徐々にシステムを理解する必要がある。この状況ではデリゲート型AIは効果的でない。なぜなら、ボトルネックはコーディングではなく理解だからだ。一方、アシスタント型AI(自動提案やコードレビューなど)は学習プロセスを効果的に支援する。グリーンフィールドプロジェクトでは制約が少ないため、デリゲート型AIのリスクは低く、開発を加速できる。しかし、それでもAIに全てのコード生成を任せると、開発者が問題を探索しながら学ぶ「遊び」のプロセスが奪われ、プログラミングの喜びや専門知識の蓄積が損なわれる可能性がある。
最終的に著者は、万能なAIスタイルは存在しないと強調する。鍵は、現在の開発フェーズとタスクの性質に合わせて適切なAIツールを選択することである。問題を理解している段階ではデリゲートを使い、まだ探索・理解の段階ではアシスタントを使う。この選択によって、効率性を高めると同時に、プログラミングの喜びと知識の深さを守ることができるのだ。