Japan
サイト内の現在位置を表示しています。
ソフトウェア・システム開発への生成AIの活用
Vol.75 No.2 2024年3月 ビジネスの常識を変える生成AI特集 ~社会実装に向けた取り組みと、それを支える生成AI技術~本稿では、ソフトウェア・システムの開発で生成AIをどのように活用できるのか概説し、NECグループでの取り組みについて紹介します。生成AIは大きな可能性を秘めていますが、現時点ではいくつかの技術的な課題があるため、ソフトウェア・システム開発は、当面は人中心のプロセスという点に変わりはありません。しかし、開発案件の性質に応じて、さまざまなタスクで生成AIを使って人の作業を効率化し、品質を向上させることができます。NECグループでは、生成AIを組織的に活用することで、ソフトウェア・システム開発の生産性と品質を向上させていく予定です。
1. はじめに
生成AIは、今まで人手に頼っていたソフトウェア・システム開発のさまざまなタスクを機械化する可能性を拓くものです。大規模なソフトウェア・システムの開発と保守には多くの人が携わり、システムの要件や設計などは、主に自然言語の形で保存されます。従来、コンピュータによる自然言語の解釈/生成能力は極めて限られており、開発のタスクを直接機械化することは困難でした。機械可読な形式で設計情報を保存する手法も提案されましたが、多くの技術者にとっては利用が難しいものでした。自然言語をそのまま解釈し、自然言語やプログラムを生成できる生成AIの出現によって、ソフトウェア・システム開発の方法が大きく変わると予想されます。
一方、生成AIで大規模なシステムを自動で合成するにはまだいくつかの技術的な課題があるため、ソフトウェア・システム開発は、当面は人中心のプロセスという点に変わりはありません。しかし、開発案件の性質に応じて、さまざまなタスクで生成AIを使って人の作業を効率化し、品質を向上させることができます。
本稿では、生成AIがソフトウェア・システムの開発をどの程度効率化できるのかを概説し、NECグループ内でどのように生成AIの利用を進めているかを紹介します。
2. 生成AIとソフトウェア・システム開発
2.1 ソフトウェア・システム開発に適用する際の課題
生成AIは大きな可能性を秘めていますが、それを実現している大規模言語モデル(以下、LLM)には、次に述べる4つの課題があります。
- (1)ハルシネーション:LLMは、正しくない回答(以下、ハルシネーション)を生成することがあります。
- (2)入力データ量の制限: LLMが内部で持っているバッファの長さ(コンテキスト長)には制限があります。PDFファイルなどを読み込む機能を持つものでも、ファイルの内容すべてがLLMに渡されるわけではありません。また、長いコンテキスト長を持つLLMの場合も、入力量が多くなるほど正しい回答を生成する確率が低くなります1)。
- (3)推論能力の不足:LLMは特別な推論の仕組みを持っているわけではないため、推論能力はそれほど高くありません。
- (4)専門知識の不足:汎用のLLMは、ソフトウェアに関してはオープンソースコードを中心に学習しているため、商用の、あるいは利用者の少ない言語・プラットフォームの知識が不足しています。そのため、これらの言語・プラットフォームに関する質問に正しい回答を生成する確率は低くなります。
2.2 課題への対策
生成AIを組み込んだソフトウェア開発プロセスでは、第2章1節で述べた課題を回避あるいは低減する必要があります。表は、それぞれの課題に対する回避策と低減策をまとめたものです。括弧付きの項目は、技術的にまだ発展段階であることを表しています。
表 生成AIを活用する際の課題と対策
2.2.1 ハルシネーション
生成AIは人と同様に間違いを起こすので、今までどおり、レビューとテストによる品質管理が必要です。
生成AIを設計書やコードの生成ではなく、レビューに用いることも有効な回避策です。生成されたコードの間違いを見落とす確率とその影響に比べると、生成されたレビュー結果の間違いを見落とす確率とその影響の方が小さいためです。
生成された出力を自動でチェックする研究も盛んに行われています。特に、コード生成は、その結果を単体テストと組み合わせることで自動チェックできるため、ハルシネーション対策がしやすいタスクです2)。
2.2.2 入力データ量の制限
少ない前提知識で対応可能な下流工程*のタスク(モジュールレベルでの内部設計、コーディング、単体テスト)は、入力データ量の制限の影響を受けにくく、生成AIを直接利用しやすい領域です。
一方、より上流の設計や結合テストは、システム全体のさまざまな要件や制約事項を考慮して進める必要があるため、入力データ量の制限を受けやすい領域です。また、改造開発は、改造母体の情報を考慮して開発を進める必要があるため、入力データ量の制限を受けやすい領域と言えます。
これらの場合も、タスクを分割して個々のサブタスクの実行に必要な前提知識を減らすことで利用できる場合があります。また、その分割処理を自動化する手法も盛んに研究されています3)。
2.2.3 推論能力の不足
複雑な長い問題はより単純な問題に分割することで、生成AIから正しい回答を引き出しやすくなります。推論能力を高めるさまざまなプロンプトエンジニアリングの手法が提案されており、生成AIが苦手な処理(計算など)は外部プログラムを呼び出すようにタスク分割する手法が実用化されています4)。
2.2.4 専門知識の不足
下流工程のタスクはプログラミング言語やプラットフォームへの依存度が高いため、LLMがそのプログラミング言語やプラットフォームに関する知識があるかどうかを確認してから利用するようにします。
この課題に関しては、検索と組み合わせるか、追加学習をすることで、専用のLLMを作るアプローチが有力です。
- *ウォーターフォール開発の用語を使いますが、アジャイルプロセスで開発する場合も同様です。
3. NECグループでの取り組み
第3章では、表にまとめた課題に対応するための、NECグループでの取り組みについて紹介します。
3.1 ツールチェインの整備
3.1.1 専用サービスの導入
生成AIを活用しやすい下流工程で、IDE(統合開発環境)と連携した生成AIサービスを利用することで、生産性の向上が見込めます。
NECグループでは、ソフトウェア・システム開発を行う社内標準環境として、クラウド型のソフトウェア開発基盤を整備しています。本開発基盤は、ソースコードや仕様書などの設計情報を管理する情報管理ツール、さまざまなタスクの管理や自動化を行うツール、実装やテストを行う開発作業環境などを備えた統合開発環境です。
このクラウド型ソフトウェア開発基盤で、生成AIを利用した商用のコード生成サービスの提供を開始しています。
3.1.2 周辺ツールの整備
Excelで仕様書を整備しているSIプロジェクトも多いため、いわゆるExcel方眼紙をLLMへの入力に適したMarkdown形式に変換するサービスを提供することで、生成AIの活用を促進しています。
3.2 生成AIを前提とした開発プロセス
3.2.1 開発ガイドの整備
表にまとめた対策に基づいて、現行のツールセットで実現できるもの(表で括弧付きで示した技術的対策を除く項目)から順に、生成AIを前提とした開発ガイドを作成して公開を進めています。
ハルシネーション対策が進化するまでは、生成AIは自動化ツールではなく、人の作業を補助するツールとして扱う必要があります。そのため、開発のプロセス自体は従来と大きく変わることはありませんが、仕様書は人だけではなく生成AIも読むものに変わるという点は、重要な変化です。生成AIで処理しやすい形式で設計書を整備し、その方式を標準化していくことで、ツール・プロセスによる支援効果を高めていきます。
3.2.2 モダナイゼーションへの対応
モダナイゼーションは、生成AIの活用による効率化の期待が高い領域です。しかし、現行の生成AIには第2章で述べた限界があり、現時点ではモダナイゼーションの課題を一挙に解決するような「銀の弾」は期待できません。主に下流工程のタスクの一部を、生成AIを活用して効率化する使い方になります(図1)。
生成AIによるコードのコンバージョンは、従来の専用コンバージョンツールよりも、初期コストを抑えつつ(ツールの調達や実装、案件ごとのカスタマイズ工数を削減できる)、柔軟に(ソフトウェアアーキテクチャの変更にも追従できる)実現できます。その一方、現在の技術では正確なコンバージョンは難しく5)、人による補助(結果の確認と修正、タスク分割)が必要になるため、案件の特性に応じて使い分ける必要があります。これらの特性を明らかにして、プラクティスを集積することで、モダナイゼーションへの生成AIの活用を促進していきます。
3.3 専用LLMの開発
表で括弧付きで記載した項目のうち、専用LLMによる専門知識不足への対策は特に重要な領域だと考え、自社開発を進めています。
業務システムの開発は、フルスクラッチ開発からXaaSやパッケージソフトウェアなどを組み合わせて実現する「作らないSI」に移行しつつあります。
作らないSIでは、全体の工数における下流工程のタスクが占める割合は低く、要件定義や設計のタスクが主になります。これらのタスクを遂行するには、業務知識や、利用するXaaS、パッケージソフトウェアに関する知識とノウハウが必要になります。この領域では、第2章で述べたとおり、入力データ量制限、推論能力不足、専門知識不足といった、現行のLLMの課題が顕在化します。
一方、作らないSIを担当する事業部門では、開発者の作業効率化・品質向上のため、業務知識やパッケージに関する知識・ノウハウがナレッジベースとしてアセット化されています。このアセットを組み込んだ専用LLMを作ることによって、次のような効果が期待できます(図2)。
- (1) 高スキル開発者の作業補助(生産性向上)
- 成果物の作成、他者の成果物のレビュー、各種付帯作業を生成AIで補助
- 生産性の向上により、スキルを必要とする業務により注力可能とする
- (2) 低スキル開発者の作業品質向上・教育支援
- 作業を対話的に支援、成果物を生成AIで一次レビューすることで品質を底上げ
- 教育効果を高め、戦力となるまでの期間を短縮
LLMとその周辺技術は急速に発展しており、今後、表で「発展途上」とした対策も広く利用できるようになると思われます。下流工程のハルシネーション対策が進歩して、人の補助ではなく、人とAIが共同で開発を進めるようになる日もそう遠くないかもしれません。NECのようなベンダー企業が提供する価値は今まで以上に上流にシフトすると予想されるため、業種・業務に関するドメイン知識を持つ専用LLMを維持・強化することは、ベンダー企業の共通技術部門の重要な役割になると考えています。
4. まとめ
本稿では、生成AIのソフトウェア・システム開発への活用について概説し、NECグループの取り組みについて紹介しました。生成AIは大きな可能性を秘めていますが、現時点ではいくつかの技術的な課題があるため、ソフトウェア・システム開発は、当面は人中心のプロセスという点に変わりはありません。しかし、開発案件の性質に応じて、さまざまなタスクで生成AIを使って人の作業を効率化し、品質を向上させることができます。NECグループでは、生成AIを組織的に活用することで、ソフトウェア・システム開発の生産性と品質を向上させていく予定です。
また、生成AIの技術の進歩により、ベンダー企業が提供する価値は今まで以上に上流にシフトすると予想されるため、業種・業務に関するドメイン知識を持つ専用LLMの強化を進めていきます。
- *Excelは、米国Microsoft Corporationの米国およびその他の国における商標または登録商標です。
- *その他記述された社名、製品名などは、該当する各社の商標または登録商標です。
参考文献
- 1)
- 2)
- 3)
- 4)
- 5)
執筆者プロフィール
ソフトウェア&システムエンジニアリング統括部
ソリューション・アーキテクト
プロフェッショナル