要件定義

【テンプレ付】chatgptを使ってツールの要件定義をしたら工数が40時間→4時間になった

  • このエントリーをはてなブックマークに追加

「chatgptを使って要件定義の工数を削減したい」

「そもそもchatgptを使って質の高い要件定義ができるのだろうか」

とお悩みなのではないだろうか。

結論、chatgptで質の高い要件定義を短時間で実現することは可能だ。

実際に私もchatgptを使って下記のような要件定義書を完成させた。

通常この要件定義書を0から自力で作ろうと思うと40時間はかかるが、chatgptを使う事によって4時間で完成させることができた。

しかし、ただプロンプトをなんとな投げ掛ければ良いというわけではない。

目的を達成するために綿密に設計をしたプロンプトを投げかける必要がある。

また、要件定義の中でも
・chatgptに丸投げして良いところ
・自分で手直しをした方が良いところ
を精査することも大切だ

そこで今回は上記のような要件定義書を4時間で完成させるために、私がchatgptへ投げかけたプロンプトを全て公開をしていく。

また、要件定義のどの箇所をChatGPTに任せて良いのかをやってみた結果を踏まえて解説をしていく。

これからご紹介するプロンプトを投げかけながら、下記要件定義書のテンプレを埋めていけば、短時間で高品質な要件定義書を作ることができるだろう。

1 今回作ろうとしたシステム

今回は社内で使うライティングツールをシステム化する。

具体的には、コンテンツマーケティングのためのツールだ。ライターがライティングをし、レビュアーがレビューをして、最終的な記事をWordPressに入稿するために使う想定だ。

2 ChatGPTのキャラ設定と要件定義の流れの説明

まずは要件定義をするに当たって、ChatGPTにはどの立ち位置で回答をして欲しいのかのキャラ設定と、今後の流れの全体像を示してもらう。

以下を入力してください。

あなたはベテランのソフトウェアエンジニアです。要件定義の実力は業界随一と言われています。

これから私が新しいシステムの要件定義をするので、壁打ち相手になってください。

最終的には要件定義書を完成させたいです。 そのために必要なことを質問していってください。

必要があれば深掘りもしてください。 まずは最終的にどのような情報をまとめるかの全体像を教えてください。

3 システムの目的設定

ここからは要件定義に必要な情報を順に一つずつ質問してもらう。

以下を入力してください。

では一つずつ質問してください。

質問する際には、質問内容、質問の意図、回答者が回答する際に気をつけるべき観点を加えてください。

ポイント
質問をしてもらう際には、質問の内容とその意図、回答時に気をつけるべき観点があれば付け加えてもらう。

これをすることで、どういう意図の質問で何を考えて回答するべきかがわかりやすくなる。

4 システムの利用者と機能の特定

次にシステムの利用者と機能を特定する。

先ほどの目的への回答後にChatGPTから質問が返ってきているので、それに回答する。

利用者は主に記事執筆者、レビュアーの二人です。

両者にとってドキュメントの共有が容易である必要があります。 また、レビューを円滑にする観点から以下も必要です。
・執筆者は特に見てほしい点や迷っている点に目印をつけられると良いです。
・レビュアーは過去の事例などのチーム内ナレッジを容易に参照・共有できる。記事の更新履歴が確認できて、レビューを複数回行っている時の変更差分がわかると良いです。

また、レビュアーが記事をWordpressに入稿する必要があるため、ツールからクリック一つで入稿が完了するなどの工数削減ポイントがあると嬉しいです。

文章作成の補助機能もあると嬉しいです。

例えばタイトルのサジェスト機能、想定されるペルソナとそのニーズから章立てをサジェストする機能、複数の箇条書きされた文章から文章を組み立ててくれる機能

5 ここまでの内容を一旦まとめてもらう

ここまでで、要件定義において必要になるシステムの目的、利用者とそれに対して必要な機能のリストアップができたので、内容を一旦まとめてもらう。

以下を入力してください。

ここまでの内容を要件定義書にまとめてください

6 ユーザーストーリーを作成する

特定された利用者の情報を元に、ユーザーストーリーを作る。

ユーザーストーリー作成の意図としては、以下の2つある。
・ここまでで特定している機能に漏れがないかを確認し必要に応じて追加するため
・関係者とシステムの利用イメージを共有するために、システムを使った業務の流れをシーケンス図に起こすため

以下を入力してください。

ユーザーストーリーを作ってください

7 ユーザーストーリーからスイムレーンを作成する

ここでは特定したユーザーストーリーを元にスイムレーンを作成する。スイムレーンを作成すると、時系列で誰が何をするかがわかるため、システムを使った業務の全体像がわかりやすくなる。

上記のストーリーをPlantumlのActivity図のスイムレーンで表してください。

 これは全く別のストーリーですが、サンプルとして記法を紹介します。 
|マネージャー|
start
:チケットアサイン;

|エンジニア| 
:作業; 
:レビュー依頼; 

|マネージャー| 
:修正依頼;

ポイント
上記のサンプルの記法と一緒に指示を与えることが重要。これがないと、スイムレーンではない回答が返ってくる。

ここで出してもらったコードを以下のサイトで貼り付けてグラフにする。
http://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000

しかし、あまり良いフローではなかったので細かく指定し直す。単純に時系列で誰が何をするのかを記載する。

執筆者のユーザーストーリーを以下のように変更したいです。上から時系列で行動が並んでいます。
これをもとに以下を作ってください。
・PlantUMLのActivity図のスイムレーン


・レビュアーが執筆者にキーワードを提供する
・執筆者はペルソナを設定し、システムに書き込む
・執筆者はレビュアーにレビュー依頼をし、システム上のWebページを共有する
・レビュアーは供されたページを見て、レビューを実施し同一ページにコメントを残す。
・システムがレビュアーのコメントから、内容を把握し、過去に似たコメントがあれば過去の事例をサジェストする(ナレッジのシェアの目的)
・レビュアーは執筆者に対してシステム上からレビュー修正依頼をお願いする
・執筆者はレビューに基づいて内容を修正する
・執筆者は再度システム上からレビュアーに対してレビュー依頼をする
・レビュアーは修正された内容などの差分をチェックし、OKを出す。
・執筆者は合意が取れたペルソナをもとに章立てを検討する。
・執筆者はシステムに対して、ペルソナをもとに章立てをサジェストするように依頼する
・システムは執筆者に対して複数の章立てをサジェストする
・執筆者はその結果をもとにしてもしなくてもよく、章立てを作成する。
・執筆者はレビュアーにレビュー依頼をシステム上で出す。
・レビュアーはレビューする。(ここはペルソナ設定時のレビューと同じ展開)
・レビュアーがOKを出す。
・執筆者は本文を執筆する。
・執筆者は要素を箇条書きして、本文の上手いまとめかたのサジェストをシステムに依頼する
・システムは箇条書きをもとに、文体をいくつか提示してまとめかたをサジェストする
・執筆者はシステムからの援助をもとに文章を仕上げる。
・執筆者はレビュアーにレビュー依頼をシステム上で出す。
・レビュアーはレビューする。(ここはペルソナ設定時のレビューと同じ展開)
・レビュアーがOKを出す。
・レビュアーはシステムからWPに入稿する。

先ほどのウェブサイトにこのコードを貼り付けると以下のような図が得られた。

8 修正後のユーザストーリーに基づいて要件定義書を更新する

ここではユーザーストーリーを修正したため、要件定義書の機能要件も更新されると想定し、要件定義書を更新する。

以下を貼り付けてください。

上記のユーザストーリーをもとに要件定義書を書き直してください

ポイント
内容が更新されたらその都度セーブする感覚で、最新版のまとまった情報を取得し直している。

これをしないと、最後に要件定義書のまとまった情報を出力したい時に、ChatGPTのトークン上限に引っかかってしまい以前のやりとりの内容が引き継げないといったことが発生しかねない。

9 必要な画面一覧をリストアップする

ここでは必要な画面一覧をリストアップする。

以下を貼り付けてください。

必要な画面一覧と機能、その画面で表示する情報と入力が必要なデータを一つの表にまとめてください。
ChatGPTさんとのやりとりがしやすいように、表の出力もとになるコードも添付してください。

ポイント
以下3つのポイントがある。
・画面と機能の対応を表にまとめている。これをすることで、ここまでで特定されている機能の一覧との整合性を取っている。
・要件定義後の基本設計で行う画面の設計がより楽になるように、表示情報と入力データも参考までに出してもらっている。
・もし修正したくなった場合に表を直接いじれるように、表の元になったコードも出力してもらっている。

10 非機能要件を特定する

10-1 検討するべき非機能要件の一覧の認識を合わせる

ここではIPAが定めている非機能要件のリストを元に、このシステムで必要になりそうな非機能要件を特定する。

以下を貼り付けてください。

IPAが定めている非機能要件の大項目以下6つと、それぞれの中項目をリストアップして表にまとめてください。

可用性
性能・拡張性
運用・保守性
移行性
セキュリティ
システム環境・エコロジー

ポイント
まず、非機能要件の特定の前段階として、IPAが定めている非機能要件をリストアップしてもらっている。

10-2 検討するべき非機能要件の一覧に対して要否、対応内容、対応の優先度を表にまとめる

取得できた非機能要件の一覧に対して、このサービスでの対応要否・優先度、内容をまとめる。

以下を貼り付けてください。

上記の表の中項目単位で今回のサービスでの要否、対応内容の案、優先度を三段階で教えてください。また、その優先度になっている理由も他の項目と比較した上での見解を教えてください。

提示の方法としては、以下のような項目がある表形式でお願いします。また、中項目の数だけ表の行が作られることを想定しています。
・大項目、中項目、要否、優先度、対応内容の案、優先度の理由

ポイント
中項目の全てに対して検討をしたかったので、以下のように聞いた。これがないと、中項目の全てに対して検討がされていなかったり、任意の形に項目が作り替えられてしまう。
・「中項目の数だけ表の行が作られることを想定しています。」

11 最終的な内容をまとめてもらう

ここまでで決まった内容を元に要件定義書を出力する。

しかし、スイムレーンや画面一覧などは再度出力させるのは冗長なのでしていない。

以下を貼り付けてください。

ありがとうございます。
以下に引用する内容に加えて要件定義書を完成させてください。
非機能要件は前のやり取りで出た「要否:必須」の部分だけ追加して、それぞれの対応内容の案も含めてください

以下は、要求されたユーザーストーリーに基づいて要件定義書を書き直した例です。
---

# 要件定義書

## 1. システムの目的と目標
- 目的: コンテンツマーケティングにおける記事執筆、レビュー、レビュー修正、入稿のサイクルにおける工数削減
- 目標: 工数を半分に削減

## 2. システムの利用者
- 執筆者
- レビュアー

## 3. 機能要件
- ドキュメント共有機能
  - 執筆者とレビュアーがドキュメントを共有できる
  - アクセス制御とバージョン管理のサポート

- コメント・マーキング機能
  - 執筆者がドキュメントに目印やコメントをつけられる
  - レビュアーがコメントを残し、執筆者とのコミュニケーションを容易にする

- チーム内ナレッジ共有機能
  - システムがレビュアーのコメントから過去の事例をサジェスト
  - ナレッジの共有と活用を促進する

- WordPressへの入稿機能
  - ツールからクリック一つでWordpressに記事を入稿できる
  - 手動作業やコピーアンドペーストの手間を削減

- 文章作成の補助機能
  - タイトルのサジェスト機能
  - 章立てのサジェスト機能
  - 文章のまとめ方のサジェスト機能

## 4. その他の要件
- セキュリティ要件: アクセス制御とデータのセキュリティ対策
- パフォーマンス要件: 応答時間と同時ユーザー数の性能指標
- インターフェース要件: ユーザーインターフェースの設計とAPIの提供

---

以上が、要求されたユーザーストーリーをもとに書き直した要件定義書の一部です。要件定義書全体では、各要件の詳細や制約条件、優先度の設定なども記述する必要があります。

具体的な要件についてさらなる詳細があれば追加できますし、もし他の要件や変更がある場合は適宜追記してください。要件定義書はシステム開発の基盤となる重要なドキュメントであり、利害関係者の共通理解を形成するための貴重な資源となります。

ポイント
最終的にまとめるにあたって、ここまでで決まった内容をもう一度テキストで明示的に復習させている。これをしないと検討内容がすっぽりと抜けてしまう可能性があるためだ。

12 実際に使ってみてわかったChatGPTに任せると特に工数を削減できたところ

基本的に自分が0から作るのではなく、レビューする立場に回って案をブラッシュアップできるため成果物の質の向上と、作業効率のかなりの改善ができた。

以下の章で特に効率が良かったと感じた点を解説していく。

12-1 システムのユーザストーリーを設定し、機能要件をまとめる

ここの工程はかなり楽に成果物を作ることができた。

本来作業をするためには、以下の工程を踏む必要がある。そして、以下工程の2と3が同じくらい重い。
1 システム利用者の特定
2 システム利用者ごとのシステム利用フローの列挙
3 上記の図示

しかし、今回は2をやるだけで3はChatGPTがやってくれていた。多少の修正は必要だが、作業工程が単純に半分になった感覚だ。

恩恵は作業工数が半分になっただけではない。利用フローの列挙に集中することができるので検討の精度も格段に上がった。

12-2 システムの非機能要件を決める

ここの工程の作業時間も大幅に削れた。

前提として、筆者は非機能要件について考えたことがあまりなかった。そのため、本来作業をするためには以下の工程を踏む必要があると考えている。

1 非機能要件のリストアップ
2 プロジェクトで必要な内容の精査・優先度づけ
3 要件の定義

しかし、今回ChatGPTに3までの案を10秒程度で作成してもらうことができた。あとは、記載内容の正確さと要否や優先度のチェックをすれば良いだけだ。

ポイントとしては、最終的な案を作ってもらう前に以下の質問を投げかけたことだ。

IPAが定めている非機能要件の大項目以下6つと、それぞれの中項目をリストアップして表にまとめてください。

可用性
性能・拡張性
運用・保守性
移行性
セキュリティ
システム環境・エコロジー

これによって、そもそもの検討の大枠についての認識を合わせることができた。これがないと、質問するたびに検討の大枠が変わってしまっていた。

認識のすり合わせは人間相手でも機械相手でも関係なく必要ということだ。

まとめ

ChatGPTに要件定義を手伝ってもらった経緯を紹介した。

ChatGPTと作業分担を行うことで、人間がすべき部分と機械が得意な部分が明確になり、人間のリソースをより集中させることができ気がする。

特に、スイムレーンの作成や非機能要件の特定など機械的に行える部分についてはChatGPTに叩き台を出してもらいつつ、それに対してレビューをし案をブラッシュアップしていくというのが良さそうだということがわかった。

この記事がChatGPTを使いこなしてより効率的な業務の進行に寄与できたら幸いだ。

  • このエントリーをはてなブックマークに追加