見出し画像

生成AI用の要件定義を書いて、シンプルなソフトウェア開発をしてみる

今回は、結構しっかりめに生成AI向けの要件定義を書いて、ChatGPTにソフトウエアを作ってもらう内容となっています。
なので、やりとりは最小で済むようになっています。(このプロジェクトはわずか10分で完成しました!※コード部分)

内容としてはかなりシンプルなものですが、箇条書きテキストをランダムに並べ替えるものかつ、先頭につく番号を補正するものです。

ちなみに、要件定義に不慣れな方向けに、この辺もサクッと作れるテクニックを後述しています。

こういうのが必要で探したのですが、見つからなかったので作りました。

使用目的としては、MacやWindows、スマートフォンからもアクセス可能で、迅速かつ簡単に利用できるようにWEB技術(HTML、JavaScriptなどのブラウザベースの技術)を採用しています。

全HTMLコードを以下のリンクで公開しています。(後ほどGitHubにも置きます。)
ヘッダー部分は少し改造しています。これはオリジナル版がChatGPTのリンク切れで消えたためです。。。

以下、ChatGPTとのやりとり全量です。

比較的しっかり要件定義を書くと、やりとりは最小で済むので良いですね。
いつもは、もっとふわっとしたところから始めがちなので、余裕があればこういう風にフォーマットを作るのもアリですね。

AI向け要件定義

上記を作るにあたって作成したものです。今回作成したいもので項目を埋めていますが、埋めていないバージョンもこの中で公開しています。
また、自分が別途使っていたひな形を流用したので、テスト計画等不要なものもありますので、そこは削ってChatGPTに連携しても良いかもしれませんが、そのままでも差し支えなさそうです。

AI向けソフトウェア開発要件定義フォーマット

1. プロジェクト概要
• 目的:HTML入力エリアに入力された箇条書きテキストの並び順を、ボタンクリックでランダムに変更するプログラムの開発。

2. 機能要件
• ユーザーがHTMLのテキスト入力エリアに箇条書きのテキストを入力できる機能。
• 「実行」ボタンをクリックすると、テキストの並び順がランダムに変更される機能。
• 並び替え後のテキストにおいて、先頭の番号は連続した番号に更新される機能。

3. ユーザーインターフェイスとデザイン
• シンプルなテキスト入力エリアと「実行」ボタンが配置されたインターフェイスの設計。

4. 技術的要件
• 使用する技術:HTML, JavaScript, CSS。
• 具体的なコードの例:

// ボタンがクリックされたら、以下の関数を実行
function shuffleList() {
// 入力されたテキストを行に分割し、配列に格納
// 配列の要素をランダムに並び替え
// 並び替えたテキストを表示エリアに出力
}

5. テスト計画
• 入力と出力のテスト:入力されたテキストが正しくランダムに並び替えられるかのテスト。
• インターフェイスのテスト:ボタンクリックや表示の確認。

6. コミュニケーションと報告
• 開発中の進捗に関する質問や、完成したプログラムのレビュー要請。

7. 追加の要件
• 要件変更や新たな機能の追加に関するリクエストがある場合、具体的な指示を提供。

8. 具体的な実行結果の例
• 入力例:

1.イカ
2.タコ
3.イルカ

• 実行後の出力例(ランダムに変更されるため、以下は一例):

1.タコ
2.イルカ
3.イカ

• また、番号が一意でない場合の入力例:

1.タコ
1.イカ

• 実行後の出力例(ランダムに変更されるため、以下は一例):

1.イカ
2.タコ

ListShufflerの要件定義

上記プラス、先頭に以下を入れて指示をしています。

以下に連携する要件定義に則り、完全に動作するものを作って下さい。 一切コードを省略してはいけません。そのままで完全に動作するものとしてください。完成後にダウンロードリンクを連携ください。
---
(ここに上記要件定義をペタッと)

追加のプロンプト

これでほぼ一発でダウンロードリンクまで作ってくれますが、さらに追加の指示にもあるように、ちょっと期待通りで無かったところは、修正依頼を出しています。

この辺指示が曖昧だったかもしれません。
もっと明確に指示しても良かったですね。

公開するにあたって、別途作ってもらってたデザイン(CSS等)とはマージしていますが、ベースとして動くものはこれだけで作れてしまうので、非常に便利ですね。

要件定義も作ってもらおう

要件定義とは

要件定義とは、ソフトウェアやシステムを作る際に、何を実現する必要があるかを明確に決めることです。これにより、目指すべき目標や機能、制約などを具体的に定義し、開発の方向性を決定します。(ChatGPTより)
要するに、何かソフトウエアを作るときに、一番最初に作る、結構しっかりめのドキュメントです。

要件定義もつくってもらおう

ChatGPTにメモ書きレベルのものを連携しても作ってくれます。
例えば、以下のように連携しても大丈夫です。

以下リンクはやりとり全量です。

以下の「やりたいこと」をその下の要件定義フォーマットに落とし込んでください。
#やりたいこと
箇条書きのテキストの並び順を変えるプログラムを作って下さい。入力エリアはhtmlで、実行ボタンを押す都度並び順はランダムになるそうていです。
javascriptやCSS等、webの技術は使用可能です。
例えば
1.イカ
2.タコ
3.イルカ
と入力エリアに入力された際に実行ボタンを押すと、
1.タコ
2.イルカ
3.イカ
のように変化します。
先頭の番号は必ずしも一意ではありません。
例えば、
1.タコ
1.イカ
といったものもあり得ます。
その際には、ランダムで並び替えた際に、数字も順になるように置き換えてください。
---
(ここに要件定義のフォーマットをペタッと)

メモ書きレベル

出来上がったものは、微妙なときもあるので、そこはちょっと手で修正しましょう。特に、例にこだわる(期待する動作結果を豊富にする)と、良いものができやすいです。

要件定義のフォーマット

以下はあくまでサンプルです。良いように書き換えてください。

AI向けソフトウェア開発要件定義フォーマット
1. プロジェクト概要
• 目的:

2. 機能要件




3. ユーザーインターフェイスとデザイン


4. 技術的要件

• 具体的なコードの例:

5. テスト計画



6. コミュニケーションと報告


7. 追加の要件


8. 具体的な実行結果の例
• 入力例:

要件定義のフォーマット

余談

今回、上限値(最大何行入力出来るようにするか)等は考慮していないので、そういうのを入れても良かったかなと思いました。
ただ、この辺はプロジェクトの性質や、予期される課題によっても左右するところかなと思います。(アジャイルかウォーターフォールか等も鑑みて、工程のどのタイミングで決めるのか。)
まあ、とりあえず作るのであれば、この程度でよいかなと思います。期待通りでなければ、追加の指示を与えるだけでよいので、そんな気にしなくて良いかと思います。

おまけ(見出し画像)

DALL-E 3

この記事が気に入ったらサポートをしてみませんか?