牛乳を六個買ってしまわないように、要件定義や設計書の曖昧さ回避にChatGPTを使おう!

# こんにちは

### 要件定義の曖昧な表現は辞めよう！
という題材について先日こんな記事を投稿したところ、ご好評いただき初のトレンドにも載りました。

https://qiita.com/SZR/items/8524fe3a22a2faa47b7a

ありがとうございます。

今回は 要件定義の曖昧さ回避にChatGPTを上手く活用してみよう！ ということで、上記記事と同様の曖昧な表現について、ChatGPTに尋ねてみました。
([前記事](https://qiita.com/SZR/items/8524fe3a22a2faa47b7a)を読んでいなくても本記事だけで読める内容になっておりますが、また読んでいない方は合わせて読んでいただけると嬉しいです!)

## まえがき
前回の記事タイトルにもしたエンジニアの自虐ネタ
#### 「牛乳を一つ買ってきてください。卵があったら六つ買ってきてください。」 について
前回の投稿にも載せましたが、以下の結果になりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728856/63eb927a-7014-f129-841d-fe2df3db599f.png)

面白いですね。

## 本編

 実例をもとにChatGPTに曖昧さがないか確認してもらいました。

## 事例その1

```
以下の条件に合うデータが存在する場合、○○の処理をおこなう。
・「hoge」カラムの値が××であるデータ
・「fuga」カラムの値が△△であるデータ
```

この表現については、「AND条件なのかOR条件なのか曖昧である」という問題が発生していました。

### 事例その1 ChatGPTの回答

ChatGPTにこの内容についてどんな捉え方があるか聞いてみました。結果は以下の通りです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728856/4d128960-a480-543b-db6a-dfcff9924718.png)

素晴らしいですね! 
まさに求めていた答えが返ってきました。

## 事例その2

```
○○の操作を実行した後に本操作(B操作とします)を実行した場合、××の処理をおこなう。
```

この書き方の曖昧な点は、
」 ○○の操作を実行したあと、別の操作を行ってからB操作を行った場合やかなりの時間放置した後でも××の処理が行われるのかどうか不明」
という問題でした。

### 事例その2 ChatGPTの回答

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728856/bb21bcc3-e17d-1c5e-7017-8721f6e3e622.png)

 これについてもこちらが想定していた曖昧さに加え、複数の捉え方があることを教えてくれました!
 
 ## 事例その3

```
○○の初期値は空白とする
```
 「空欄にすればよいのかスペースを入れる必要があるのか、スペースだとしても半角なのか全角なのか、「空白」と文字を入れておけば良いのかわからない」
というものでした。
これ、結構な頻度であります。。
 
 ### 事例その3 ChatGPTの回答
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728856/5c59cd9d-07e9-dc43-8969-0ad763184a9a.png)

この問題については、具体的な回答を得ることができませんでした。(私のプロンプトが悪い可能性はあります。)
しかし、曖昧さがあるという点についてはChatGPTも認識しているようで、「他のコードやプロジェクトの実装内容に合わせて考えろ」といった旨の回答が出力されました。

「曖昧さがある」ということは間違いないことが確認できましたので、及第点でしょう。

## 事例その4

```
○○には現在日時が入ります。
```

フォーマットやタイムゾーンについて不明確という問題点がありました。

 ### 事例その4 ChatGPTの回答

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728856/4c02eef0-645a-01c3-f465-be205009a6f7.png)

一般的には明確だとしたうえで、フォーマットおよびタイムゾーンの件について触れてくれています!
曖昧さ検出という点においてはこちらも問題なく指摘していると考えて良いでしょう。
便利ですね。


## 事例その5

```
10桁ある番号のうち、1桁目～6桁目の値に + 9999 した値を表示
```

`1234567890`という番号であった場合、`1234569999`と表示してほしいのか、`1234577889`と表示してほしいのか?
下六桁という可能性もあるとコメントでご指摘いただきました。

 ### 事例その5 ChatGPTの回答

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728856/87538559-0cb3-e81a-3a86-ae5d2c91b55d.png)

こちらについても複数のパターンについて教えてくれたので、曖昧な表現であることは間違いないです。
しかし、気になるのは `1234569999` が候補に含まれていないことですね。

 `1234569999` について追加で質問してみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728856/656451bc-6eb2-51ca-8a10-55caff1d01c2.png)

理解はしている様子なので、おそらく出力候補数の問題だったのでしょう。今回は曖昧さが存在するかどうかについてを目的としているので目的としては達成しており試していませんが、
「考えられる候補について全て教えてください」というプロンプトであれば出力されていたかもしれません。
私の経験上、一番求められていることが多い `1234569999` の可能性は低いとChatGPTは考えたのでしょうか? 不思議ですね。


## まとめ

今回は前回の記事と同様の内容について、ChatGPTで曖昧さがないか確認できないかという内容でした。

結果としては

### ChatGPTは要件定義の曖昧さ検出に利用できる

と言える結果になりました。
業務で使用するためには実際の単語や値をぼかす手間はありますが、曖昧ではないと思っていても実は曖昧な表現って結構あるので、
要件定義を作成する際、そして要件定義を受け取った際にはChatGPTを利用して曖昧さがないか確認してみても良いかもしれませんね。

## あとがき

読んでいただきありがとうございました。
ソースコードの誤字脱字チェックなんかもそうですが、チャット型の生成AI、本当に便利ですね。大きく世界が変わりました。
「情報漏洩の危険があるからChatGPTは使用禁止!」という考え方の会社さんもありますが、使い方について教育したうえで社内でChatGPTを活用する風潮を作ることでかなり効率が上がるのではないでしょうか。

私も早速ChatGPTを利用した曖昧さチェックを業務で行っておりますが、

### 取引先でも送付前にぜひ一度実施してほしいですね!

お忙しいところ恐縮ですが、何卒よろしくお願い申し上げます。。

# andmore

他にもこんな記事書いてます。

https://qiita.com/SZR/items/8524fe3a22a2faa47b7a

https://qiita.com/SZR/items/3e3a02e6c316438fe5a3

https://qiita.com/SZR/items/1c8a7be4267071f6c295

https://qiita.com/SZR/items/dce75a3d08c5170d4365

https://qiita.com/SZR/items/f46822b009fa47e1ca53

https://qiita.com/SZR/items/176586cde17ea0e9828a

https://qiita.com/SZR/items/a000cbaa583dcd2a344b

https://qiita.com/SZR/items/1d8edaf95fa2f5bbe821