はじめに
NTTデータ先端技術株式会社にてアジャイル開発並びに技術調査業務に従事している志田です。2023年3月にChatGPTが一般利用可能になり、爆発的に普及してきました。従来の技術はまずはエンジニア層の間で認知、普及しその後エンドユーザに対して展開されるといった流れになりますが、このChatGPTをはじめとする生成AIは一足飛びにエンドユーザまで普及し、日常生活の中で使われ始めています。システム開発の現場においても、この生成AI技術の活用によってこれまでの業務が大きく変化していく可能性があります。今回、次回と2回にわたって生成AIのシステム開発業務への適用方法について考えていきたいと思います。
システム開発の流れ
現状のシステム開発を抽象化してとらえると以下のようになります。
- システムによって解決したい問題を明確にし、システムが持つべき機能/非機能を明確にする(要件定義)
- 要件を充足するためのシステムの制約条件と全体のアーキテクチャを策定する(基本設計)
- 必要なインフラや機能を構築・実装していく(設計・実装)
- 構築・実装した内容が要求を充足させるものかを確認する(試験)
こうして公開可能、利用可能となったシステムはリリースを経て運用保守やシステムの継続的な改善のプロセスに乗っていきます。やがて業務要求自体の消失、インフラやアーキテクチャの賞味期限切れによってシステムのリプレイスや破棄が発生してシステムはその役目を終えます。システム開発の流れの中でエンジニアは種々の情報を収集し判断し、サーバ構築やプログラムを記述し挙動の評価を行っていき、常に収集・判断・対応を繰り返していきます。
生成AIの登場
生成AI(Large Language Model)は、AIの中でもNLP(Natural Language Processing:自然言語処理)の一つとして研究されていたものです。従来のNLPは学習したモデルに対してさらに転置学習(Fine Turning)と呼ばれる特定のドメインに特化したチューニングを行い、特定問題に特化したAIを準備して利用するといったものでした。これに対してGPTをはじめとする生成AIでは、AIに対する指示文(Prompt)の内容でモデルをチューニングする手法を利用し、問題に特化するようなチューニングを行わなくともチューニング済みのモデルと同様の精度での回答を実現します。このチューニングレスの部分が重要で、これまでAIエンジニアでないと難しかったAIの活用のハードルを一挙に下げることとなり、爆発的に普及していきました。
普及の足掛かりになったのはやはりChatGPTで、チャット文によってAIに対して生成して欲しい文章を指示します。ChatGPTは受け取ったチャット文によって暗黙的にチューニングされ回答を返却します。ここでチャット形式のため複数回のやり取りが発生し、このやり取りを通じてChatGPTはチューニングを繰り返し最適な回答を出力できるようになります。このためChatGPTに渡すチャット文(Prompt)の内容が重要で、欲しい回答を得るにはチャット文を工夫する必要があり、プロンプトエンジニアといった言葉も生まれてきました。これにより、機械ではなく人間に対してチャットをしているような自然な文章生成が可能となりました。
これに加えてChatGPTでは頻繁に機能拡張が行われており、2023年9月時点では以下の機能が提供されています。
-
ChatGPT Plugin
ChatGPTによって取り扱うことのできるデータを拡張する機能がプラグイン機能です。よく利用されるものとしてはWWWから情報を取得し、その情報を使って回答を記述するWebpilotプラグインや、プロンプトから図版を生成する Show me diaglamプラグインがあり、GPTの言語モデルだけでなく多種多様なデータを取り込むための仕組みが提供されています。 -
Function Calling
ChatGPTに対して指示した内容から実行するべき機能(Function)を自動判断して呼び出す機能です。例えば「部屋の掃除をしてくれ」と依頼すると掃除機のAPIを呼び出して実際に掃除させるなど、テキストやデータの生成だけでなく任意のものを動かすことができます。 -
Code Interpreter
これまでもChatGPTに指示するとプログラムコードを生成することは可能でしたが、Code Interpreterではさらに生成したコードを実行し、その結果を表示する、またChatGPTによって評価判断ができるようになります。プログラムから読み出すデータもアップロードできるようになっており、データ分析なども特別な知識がなくても実施できるようになっています。 -
Custom Instruction
ChatGPTではプロンプトの内容から暗黙的にチューニングが行われますが、毎度毎度このプロンプトにチューニング用の文章を入れ込むのは面倒です。Custom Instructionではこのチューニング用のプロンプトを通常のチャットとは別に設定ができる機能で、これにより個人個人にカスタマイズされたかのようなAIを利用できます。
今後もChatGPTは精力的に機能拡張が進められていくことが予想されます。また、2023年9月にはChatGPT Enterpriseとして商用利用を見据えたセキュアでテナント分離がされたChatGPTの提供が始まっています。これらの機能拡張の方向性を見ると、ChatGPTはただのチャットボット用ソフトウェアでなく様々な人間の知的作業を自動化する可能性を秘めていることがわかります。特に、プロンプトへの指示から他のサービスを呼び出し、結果を得るという部分で複数のAIの組み合わせによって複雑な、人間の判断が必要だった部分においても自動化の可能性が出てきました。
生成AIによって変化するシステム開発
生成AIによる支援を受けることで、以下のようにシステム開発の方法も変わってくるかもしれません。
-
要件定義
顧客の要求を引き出したのち、システムとして一般的に持つべき要求、具備するべき機能などは生成AIによって候補が提示されるようになると考えられます。また、要求同士が矛盾していないか、実現が難しい要求はないかを生成AIが判断するようになるでしょう。 -
基本設計
要求を元に、要求を実現するための方式やアーキテクチャを生成AIが提示するようになっています。また、提示した要求を具現化するためのシステムの土台が自動的に構築するようになるかもしれません。 -
設計・実装
コードを生成して動作確認を行い、システムに組み込むという一連の流れは生成AIによって自動化されるでしょう。利用者は動作を確認し、取り込むかどうかの判断のみを行うようになります。 -
試験
要求から自動的に試験項目が生成され、かつ試験の実施も生成AIによって自動化されます。エンジニアは試験の結果を確認し、不足があれば再度試験の生成と実施を生成AIに依頼します。
また、生成AIの活用の範囲はシステム構築・開発だけにとどまらず、リリース後の運用といった点でも活用が考えられます。システムのログデータを収集し、データを分析して障害を検出し、検出した障害に対して対策を打つといった一連の流れはまさしく現状の生成AIとビッグデータ分析によって自動化が可能な範囲です。
前項でシステム開発とは人と人がコミュニケーションを取りながら少しずつ前進していくモデルだと述べました。生成AIが発達すると、このプロジェクトの進め方も変容し人と人のコミュニケーションだけではなく多くの部分を人とAIとのコミュニケーションによって問題解決を進めていくようになると考えられます。これは決して人が不要になるという話ではなく、従来のヒト×ヒトのコミュニケーションだけではなく、にヒト×ヒト×AIという形でのコミュニケーションが推進されていくことが予想されます。
このように、生成AIの活用で現状のシステムにかかわる業務が大きく変容する可能性があります。次回は具体的なサービス、製品を利用して、具体的に変容していくことを提示していきます。
※本記事はエヌ・ティ・ティ・データ先端技術株式会社から提供を受けております。著作権は同社に帰属します。
[PR]提供:エヌ・ティ・ティ・データ先端技術