ChatGPTで要件定義書のチェックツールを作成し、開発未経験者でも自己レビューができるようにしたお話し
みなさんこんにちは。
リンクアンドモチベーションのタカオと申します。
プログラマーとシステムエンジニアを10年、
ウェブ関連の業務に17年間従事してまいりました。
現在は他部署から寄せられる様々なDX課題の対応を行なっております。
課題に対する技術検討、実現可能な要件の整理、エンジニアへの要件説明や整理、開発実装後の納品/検収対応をしております。
今回はそのDX課題対応における「ChatGPTを使用した要件定義書チェックツールの開発についての振り返り」をさせていただきます。
どうか最後までお付き合いくださいませ🙇🏻♂️
要件定義書を依頼者に書いてもらうようにした
弊社ではDX課題を行う際、要件定義書を必ず依頼者に記載いただくようお願いをしております。目的は以下の通りです。
完成物や目的のイメージのズレを発生させない
現状で困られていることをしっかりと把握し技術検討したい
対応期間の短縮化をはかりたい(0からこちらがヒアリングしドキュメントを書き起こす時間が勿体ない)
この要件定義書を書いてもらうにあたり、用意したものがあります。
要件定義書のテンプレートを用意した
要件定義書を初めて作成される方にも記載ポイントが分かるようにテンプレートも工夫しました。
⇣テンプレート内の項目は以下の通りです。
Purpose:得られる価値、現状、目指す姿、課題
Target:成果物(スコープのもの、スコープ外のものそれぞれ)
Role&Judgement:関連する方(必要に応じて承認ルートも記載)
Evaluation indexdgment:評価内容(定量/定性でそれぞれ)
Timebound:スケジュール
User Story:現状行なっていることや今後変えていきたいこと
しかしいざ運用してみると困ったことが起きました。
要件定義書がそのままでは活用できない
要件定義書なのですが、そのまま使用することが難しい状態でした。発生していた代表的な内容は以下の通りです。
依頼者にしか分からない単語で記載されており確認が必須
目的、目標が目先の「工数削減」や「営業効率向上」に言及されており、真の目的が記載されていない。
要件定義書の手戻りが多い。例えば「メール送信したい」とだけ記載されていた場合、送信元は?文面は?運用はどこが?などの別要件の確認で出戻りが発生する
開発時に必要な情報が不足している。
使用しているファイルのリンクが記載されていない
改修対象のプログラムの場合、起動トリガー情報が記載されていない
そもそもファイルを共有いただけてない
などなど。
精査が必要な状態で渡される状態なので、レビュー対応を行うことにしました。しかし今度はそのレビュー対応時に問題が発生します。
レビューに多くの時間を割くことになった
レビューの準備にも対応にも時間がかかる状態になってしまいました。
実施していた内容ですが以下の通りです。
事前準備
ドキュメントの精査を事前に行い、不明な単語や目的や用途について、質問できるよう事前にまとめておく
一回目のMTG
書いてある内容の確認を行う
二回目のMTG
精査した内容で再度MTGを実施し、要件の確認を実施
三回目のMTG
二回目のMTGで確認しきれなかった要件を再度確認
1つのDX課題におおよそ10時間程度のレビュー工数を割く状態になってしまいました。
「DX課題対応部署」と謳っているにもかかわらず、根本箇所のDX対応に注力できていなかったため、抜本的な改善を実施することにしました。
ChatGPTを使った要件定義書のレビューツールを作る
レビューの工数削減を行うため、
「要件定義書を作ったら、作成した本人がセルフチェックできるツール 」を開発したいと思い、ChatGPTを活用できないか検討し、要件を立てました。
ゴールは以下の通りです。
【定性】
・依頼者がレビュー前に自身で要件定義書をチェックできるようにし、その状態で開発の要件をおおよそ把握できること
※100%の状態を目指すのは不可能と判断し「おおよそ」としました
・対応側が要件定義書のレビューで費やしていた時間を削減する
【定量】
・10時間要していたレビューおよびMTG時間を半分にする
いざ実装
使用イメージはこんなものを考えてました。
依頼者が、要件定義書のテンプレート項目に従って入力する
ChatGPTが入力内容をチェックし、フィードバックを返す
フィードバック内容を確認し、入力内容を加筆修正する
1〜4を繰り返し行い要件定義書の精度を上げる
また、開発を行うにあたり重要視したのは以下の内容です。
・プロンプトの設計
(プロンプト:ChatGPTがフィードバックを生成するための指令文や文章のこと)
・チェック観点の精査
・ツールの使いやすさ
(弊社にChatGPTの開発専任チームがあったおかげでとてもスムーズに開発できました。ありがとうございます!)
作成完了したものがこれです。
プロンプトを作成するにあたり心がけたのは、
「ChatGPTからのフィードバックが、私達からのフィードバックであるかのように見せたい」というものでした。
例えば入力されている単語が一般的な単語でない場合、
「〇〇という単語はもっと一般的な単語を用いた方が伝わりやすいかと思います」
とフィードバックします。
また、「工数を削減したい」とザックリした目的が記載されていた場合も
「削減され新しく創出された工数でどういったことを実現したいかを記載しましょう」
とフィードバックします。
私達が直接MTGで個別に確認しヒアリングや質問していたことを、ChatGPTがその場で確認/返答してくれるようになりました。
リリース後の振り返り
結果的に定量も定性も実現することができました。
GoodとMoreで振り返ります。
Good
Google Spreadsheetを採用したことで、プロンプトやチェック観点をセル内に設け編集/加筆が容易になり開発スピードが向上したことに加え、GAS(Google Apps Script)を交えた設計が可能となり、機能に柔軟性を持たせることができたし、UI/UXを含めた設計が可能になった。
要件定義書のチェック以外にも他の課題に応用可能な多彩な使い方がある。
チェックを行いたい行をのみを指定しチェックできるため、必要のないtokenの使用を避けることができる。
More
利用者から「フィードバックがとても細かい」とご指摘いただいた。プロンプトの精度向上は良い塩梅を探しだすのがとても難しく、永遠に終わらないので、一定のクオリティの担保を実現することが大切。
まとめ
ありがたいことに要件定義書を作成したことが無いメンバーからも、
「書くべき内容、確認ポイントが明確なので、とても作成しやすい」
「フィードバックが適切なので、過不足の入力要素に素早く気付ける」
と評価をいただけました。
要件定義書のレビューの工数時間削減に悩んでいる方に、この記事が何かしらのお役に立てることができれば幸いです。