新人教育用に「ハンバーガー注文サイト」を実装してもらっているのですが、その設計書づくりが非常に面倒くさい。きっちりと設計書を作るのか、アジャイル開発風にチケットで作るのかと思いつつ、3年程経ってしまっている。
サンプルプロジェクト
以下に拙著「システム開発者のための仕様書の基本と仕組み」のサンプルプロジェクトの仕様書があります。実際のプロジェクトを模倣して、要件定義書や設計書などを作成しています。
https://github.com/moonmile/specification-samples/tree/master/samples/ハンバーガー注文サイト
各仕様書・設計書の内容は書籍のほうをみてください。従来型のウォーターフォール開発≒計画駆動を想定した設計作りなので、官庁の受注や100名程度の大手プロジェクトに参加されたことがある方は、なんとなく想像がつくと思います。
- 要求定義書(要件定義書) いわゆる発注側が作るRFP
- システム概要設計書 RFPを受けて受注側が作成する
- システム構造設計書 システム開発をするための構造設計
- 各種外部設計書 ユーザーインターフェースを記述
- 内部設計書は省略
- 結合試験仕様書 構造設計に従い試験を行う
要求定義書(要件定義書)の作成
おおむね発注元のコンサルタントか発注先の会社が代筆することが多いので、ChatGPTを使うところと言えば、
- おおまかなシステム要件を ChatGPT に提案して、機能要件を煮詰めて貰う
- 機能要件にいくつかの具体的な要件を加えてブレークダウンさせる
と言う形で文章を広げていくおように ChatGPT を使っています。この場合は
- ハンバーガー注文サイトを作るときの要件を書いて。
- 制限事項を書いて
- 機能要件をまとめて
- システム機能外要件をまとめて
のようなプロンプトを ChatGPT に食わせます。プロンプトを喰わせたあとに、文章が短い場合は、
- 制限事項を2000文字位で書いて
のように文字数を指定すると多めに書いてくれます(実際には文字数ではなくて、トークン数になっているはずです)。
よくプロンプトエンジニアリングである「あなたは○○のプロフェッショナルで~」という文章はいりません。だいたいデフォルトの数値で大丈夫です。以前の入力候補(compiletion)ではなく、チャット型式(chat completion)なので、ちょこちょこと情報を追加していって、少しずつ文章を組み立てていきます。
AIのレスポンスが長くてうっとおしい&時間が掛かるかもしれませんが、いずれOpenAIの日本語版が出てくればスピードがアップするので、将来的にレスポンスが問題になることはないでしょう。
文字数を指定して長めに書いたあとに、余分なところを削っていくほうがうまくいきます。
概要設計にChatGPTを活用する
要件定義を作るときには最初のアイデア出し、つまり ChatGPT へのインプットを試行錯誤することになるので結構大変なのですが、概要設計の場合は「要件定義書」に書かれているものインプットにできるので比較的楽です。
先の要件定義書の「はじめに」の部分に、いくつかの要件がまとめられています。

ここの3点を、そのまま ChatGPT に喰わせて、概要設計をしてみます。

「概要設計を作って」と書いたあとに、要件定義の箇条書きを貼り付けるだけで ok です。要件定義書が長い場合には、あらかじめ ChatGPT を使って要件定義の「要約」を作って貰うといいでしょう。
概要設計の中に構造設計(具体的なテーブル構造やフレームワーク名)などが出てきますが、適宜、「概要設計」と「構造設計」を分けながら文書を組み立てていきます。開発プロジェクトによって、は概要設計(Outline design)と構造設計(Structural design)を区別しないことがあるので、これは開発プロジェクト(というか会社の形式)にあわせてください。PMBOKやSWEBOKに合わせるのがベターです。
要件定義の項目を少しずつ掘り込んでいくと、システムを構築する際の足りない部分を概要設計で補うことができます。分厚い要件定義書を作ってしまうよりも、目的のはっきりした要件定義書を作っておいて概要設計で地盤を固めるほうが無難です。まあ、ゼネコンの関係から「分厚い要件定義書」をコンサルタントが作ってしまことが多いのですが。そのあたりは、現実にあわせるのがよいでしょう。
数枚の要件定義ですが、概要設計では以下のような目次ができあがります。

適宜増やしておきたいところ(販売レポート、クーポンシステムなど)を追加して概要設計書をボリュームアップしていきます。実際には、プロジェクト予算と期間は限られているので、それに見合うように概要設計を作ります。あるいは、要件定義を受けて予算と期間を見積もるときに概算としての概要設計(本来はそのような作り方をするべきです)をさっくりと作成します。
従来であれば、要件定義を読み解いて概要設計を作るのはかなり人手と時間が掛かってしまうところですが、ChatGPTの機能を使うと(これは他の生成AIでも同じことができるでしょう)、
- 適宜、要件定義から「要約」を抜き出す
- 要件定義の「要約」から、概要設計に落としていく。
- 要件定義のキーワードや、システム開発で必須なもの(経験上あるいは社内での知見)を含めて、概要設計を膨らませる
のように比較的短期間で概要設計を作ることができます。完璧なものでなくても、少なくとも概算が出る程度まで作れればよいのです。