3つの領域に分類できるAI拡張型開発
──「AI拡張型開発」について「これまでソフトウェアエンジニアが行っていたアプリケーションの開発、テスト、デリバリーを、生成AIや機械学習などの人工知能 (AI) テクノロジーが支援することを指す」と定義しています。この定義から確認させてください。
まず、この定義で示しているのは、「支援」という言葉にあるように、AIが人間の開発者を置き換えるものではないことです。AIはあくまでも道具であり、人間の作業を拡張するもので、置き換えることはできない。人間がより良い仕事をするためのものです。また、AI拡張型開発は「AIによるコード生成」「AI拡張型テスト」「設計からコーディング」の3つに分類できます。この中では、AIによるコード生成の採用が最も進んでいます。大企業を対象に実施した2024年の調査「2024 Gartner Technology Adoption Roadmap for Large Enterprises Survey」では、ツールを展開済みとした回答が17%、展開中が23%と、AIによるコード生成ツールの採用が進んでいる状況がわかりました。
──生成AIによるコード生成は、開発者からの支持が高そうです。
ある企業で、経験豊富なエンジニアにコード生成のできるAIツールを評価してもらったところ、コードにバグがあった。あるいはセキュリティホールができたなどのフィードバックを得たそうです。報告を受けたマネージャーは、「使わないほうがいいのか?」と尋ねますが、エンジニアは「ぜひ使いたい」と乗り気です。この話が示唆するのは、生成AIのツールは完璧なコードを生成してくれるわけではないが、役に立つものであることです。ただし、このようなツールを経験の少ないエンジニアに渡すべきではありません。批判的に出力結果を評価できるエンジニアであれば、十分に使いこなすことができますが、知識や経験が少ないエンジニアは、生成された結果にバグがあるのに気づかず、そのままのコードを採用してしまうリスクがあるためです。
──では、どんなユースケースがコード生成で有効でしょうか。
大きく、「ボイラープレートコード(定型コード)を作る場合」、「コードのリファクタリング(読みやすく、修正しやすいコードに改善)を行う場合」、「レガシーモダナイゼーションを行う場合」の3つがあります。現在のツールは「機械学習を利用したコーディングアシスタント」のようなもので、IDE(統合開発環境)やコードエディターにプラグインされたものが中心です。プロンプトに指示やコードの数行を入力すると、10行〜数10行のコードを書き始めます。裏で動いているのはコーディングパターンを学習させたLLMです。開発者がツールを使うと、モデルの振る舞いを調整し、望ましい出力結果を提供する仕組みになっています。
充実してきた開発者支援の生成AIツール
──ツールベンダーはどんな領域をカバーしていますか。
多くのベンダーが参入していて、ソフトウェア開発のライフサイクルで領域を整理すると、「コード生成」「コード解析」「検索」「文書化」「DevOpsの自動化」が挙げられます。現時点でDevOpsの観点から評価すると、OpsよりもDev寄りの生成AIプラクティスが多い傾向です。