AOAIで設計書生成をやってみた

2024/02/18に公開1

概要

AOAIで要件定義書、非機能要件、DB設計書の叩きを作成してもらうように頼んでみた。

要件定義

#命令・指示###
あなたは優秀なITエンジニアです。

#背景・文脈###
ユーザー管理画面を作成しようとしている
必要となる要件を全て洗い出して要件定義書を作成してください

#出力形式###
マークダウン形式のコードで書き出してください

出力結果

## ユーザー管理画面 要件定義書

### 概要
ユーザー管理画面は、システムのユーザーを管理するための機能を提供するものです。以下に、ユーザー管理画面の要件を詳細に記述します。

### ユーザー登録
- ユーザーはユーザー名、メールアドレス、パスワードを入力して新規アカウントを登録できる。
- メールアドレスは一意である必要があり、重複するメールアドレスでの登録は許可されない。
- パスワードは安全な形式で保存される必要があり、最低限の文字数や文字種の制約がある。

### ユーザー認証
- 登録済みのユーザーはユーザー名とパスワードを入力してログインできる。
- ログインに成功した場合、セッションが生成され、セッションが有効な間はログイン状態が維持される。
- ログインに失敗した場合、適切なエラーメッセージが表示される。

### ユーザー管理
- 管理者ユーザーは他のユーザーのアカウント情報を閲覧、編集、削除できる。
- ユーザー一覧を表示し、各ユーザーの詳細情報を確認できる。
- ユーザーの権限やロールを変更できる。
- ユーザーを新規に登録できる。

### セキュリティ
- パスワードは安全なハッシュ形式でデータベースに保存される。
- セッション管理は適切に行われ、セッション固定攻撃などのセキュリティリスクを回避する。

### アクセス制御
- 特定の機能やページは管理者ユーザーのみがアクセスできるように制限される。
- ログインしていないユーザーは一部の機能にアクセスできないようにする。

### ログ管理
- ユーザーのログインやアカウント操作に関するログが記録される。
- ログは適切に保存され、必要に応じて管理者が閲覧できる。

以上がユーザー管理画面の要件定義書です。必要に応じて追加の要件を考慮してください。

非機能要件

#命令・指示###
あなたは優秀なITエンジニアです。

#背景・文脈###
ユーザー管理画面を作成しようとしている
必要となる要件を全て洗い出して非機能要件を作成してください

#出力形式###
マークダウン形式のコードで書き出してください

出力結果

## ユーザー管理画面 非機能要件

### パフォーマンス
- ユーザー管理画面の読み込み速度は迅速であり、ユーザーの待ち時間を最小限に抑える。
- データベースへのアクセスは効率的であり、大量のユーザーデータでもパフォーマンスが低下しないようにする。

### セキュリティ
- ユーザーのパスワードは安全なハッシュ形式で保存される。
- ユーザー認証はセキュアな方法で行われ、不正アクセスやセッション固定攻撃などのリスクを最小限に抑える。
- ユーザー情報の取り扱いには厳重なアクセス制御が適用され、機密性が保たれる。

### 可用性
- ユーザー管理画面は24時間365日利用可能であり、定期メンテナンスの際でも事前に通知される。
- システムの障害時にも適切なエラーメッセージが表示され、ユーザーに影響が最小限に留まるようにする。

### ユーザビリティ
- ユーザー管理画面は直感的で使いやすいインターフェースを提供する。
- ユーザーが必要な機能や情報に迅速にアクセスできるように、ナビゲーションやメニューが適切に設計される。

### スケーラビリティ
- システムは将来的な拡張に備えて設計され、新機能の追加やユーザー数の増加に柔軟に対応できるようにする。
- ユーザー管理画面はモジュール化され、独立して拡張や変更が可能である。

### テスト性
- ユーザー管理画面の機能は適切にテストされ、バグやエラーが最小限に抑えられる。
- ユーザー操作やシステムの動作に関するテストケースが適切に設計され、網羅的なテストが行われる。

### ドキュメンテーション
- ユーザー管理画面の機能や操作方法に関するドキュメントが作成され、新規ユーザーやメンテナンス担当者が簡単に理解できるようにする。
- システムの設計やアーキテクチャに関するドキュメントが整備され、開発者や運用チームがシステムを効果的に管理できるようにする。

以上がユーザー管理画面の非機能要件です。これらの要件を満たすように設計および実装を行ってください。

DB設計書

#命令・指示###
あなたは優秀なITエンジニアです。

#背景・文脈###
ユーザー管理画面を作成しようとしている
DB設計書を作成してください
ユーザー権限も必要になります

#出力形式###
マークダウン形式のコードで書き出してください

出力結果

## ユーザーテーブル(Users)

| Column          | Type     | Description                               |
| --------------- | -------- | ----------------------------------------- |
| id              | INT      | ユーザーID(主キー)                       |
| username        | VARCHAR  | ユーザー名                                 |
| password        | VARCHAR  | パスワード(ハッシュ化して保存)             |
| email           | VARCHAR  | メールアドレス                             |
| created_at      | DATETIME | 作成日時                                   |
| updated_at      | DATETIME | 更新日時                                   |

## 権限テーブル(Roles)

| Column          | Type     | Description               |
| --------------- | -------- | ------------------------- |
| id              | INT      | 権限ID(主キー)           |
| name            | VARCHAR  | 権限名                     |
| created_at      | DATETIME | 作成日時                   |
| updated_at      | DATETIME | 更新日時                   |

## ユーザー権限テーブル(User_Roles)

| Column          | Type     | Description               |
| --------------- | -------- | ------------------------- |
| user_id         | INT      | ユーザーID(外部キー)     |
| role_id         | INT      | 権限ID(外部キー)         |
| created_at      | DATETIME | 作成日時                   |
| updated_at      | DATETIME | 更新日時                   |
この設計では、ユーザーテーブル(Users)で各ユーザーを管理し、権限テーブル(Roles)で権限を管理し、ユーザー権限テーブル(User_Roles)でユーザーとその権限を関連付けています。ユーザー権限テーブルはユーザーと権限の間に多対多の関係があるため必要です。

所感

必要となりそうな要件の洗い出しもしっかり行ってくれ、またそれを要件定義書にまで落とし込めていて、実際の業務としてもかなり役立ちそうな気がする。
DB設計書に関してもたたき台としては素晴らしいと感じ、あらかじめ必要と決まっているカラムをプロンプトに指示しておけばもっと精度の高いDB設計書を仕上げてくれると感じた。

ヘッドウォータース

Discussion

まっきーまっきー

設計書と要件定義書も 表形式とかで出すと分かりやすそう!