要件定義に生成AIを活用することは可能なのか?
はじめに
以下のような記事がありました。
このnoteでは、プログラミングに生成AIを活用することをいくつも書いてきましたが、今回は「要件定義」フェーズに生成AIを活用することが果たして可能なのかについて考えていきます。
生成AIの得意なことと得意でないこと
これはいつも言われることですが、生成AIは何でもできるわけではありません。むしろ、弱点が明確だと言えるかもしれません。
生成AIの技術を、一言でいうと
過去の傾向から『それっぽい』回答を自動生成するプログラム
です。あくまで、学習に使ったデータをもとに「それっぽい何か」を出力しているだけで、正確なものを出力するわけではないという点に注意が必要です。
このnoteでは、将棋をテーマにいろいろな実験をしてきましたが、正確に「(日本の)将棋」を理解している生成AIサービスはほとんどなく、
将棋=Japanese Chessという訳から、チェスっぽい何か
を出力することがわかっています。
要求と要件の違い
さて、次に要件定義について考えてみます。そもそも、要件定義とは何でしょうか? そもそも
IT業界において「要求」と「要件」という2つの語は意味が全く異なる
のですが、そこから整理してみましょう。
よく、(昔の)ドラえもんの歌に例えるのですが
要求:空を自由に飛びたいな
要件:頭頂部に装着して、「飛びたい」という思念を受けると始動し、反重力を発生させて飛行が可能で、竹とんぼの軸の下方に小さい半球を取り付けた形状となってるといいな
くらい違います。ちなみに、外部仕様(機能仕様)とは
具体的なサイズ、飛行スピード、反重力(?)、…などの「スペック」
を指します。なので、要求と要件と仕様はすべて異なります。
生成AIに要件定義はできるのか?
さて、本題の「生成AIに要件定義はできるのか?」ですが、私は
少なくとも現時点の技術ではかなり難しい
と考えています。その理由は明確で、上述の通り「生成AIは『それっぽい』文字列しか書けない」からです。もし、要件が「それっぽい」だけなら、その後の仕様Fixの工程で手戻りになるだけです。文字通り
仕様=スペック(Specification)は一意(Unique)でないといけない
のです。
おわりに ~ 生成AIに「ソフトウェア開発」はできるのか
今回は「要件定義」フェーズに生成AIを活用することが果たして可能なのかについて考えてきました。私の結論は「現時点では不可能」というものでしたが、では生成AIはソフトウェア開発に全く活用できないのしょうか?
現時点では、以下のように限定的な方法で活用ができると考えています。
「要求の整理」に活用:ユーザの要求をインプットにして、「リスト化→要点抽出」し、ユーザへのヒアリング時に使うアイテムにする
「製造(実装)」に活用:プログラミングの「書き出し」に生成AIを使い、仕様に合うようにカスタマイズする
「各種テスト」に活用:仕様書をインプットにテストケース案を作成させ、仕様に合うようにカスタマイズする
以上のとおり、現時点では、要点抽出やたたき台を作るために活用し、その後有識者によるカスタマイズをすることで工数短縮を図るのが精一杯ではないかと考えています。
将来的に生成AIがさらに進化して、ぽんと入れると、望み通りのアウトプットができるようになるといいなと本気で思っています。今はまだそれが難しいというだけで。
(おわり)
課金してくれるととても嬉しいです。シェアしてもらっても嬉しいです。「いいね」も嬉しいですし、フォローも嬉しいです。要するに、どんなことでも嬉しいです。