コンテンツにスキップ

2. システム仕様の書き方ガイド

このドキュメントは、システム仕様書テンプレート を使用して、プロジェクトのシステム仕様(要求仕様)を記述するための具体的な方法とベストプラクティスを解説します。

1. 基本的な考え方

システム仕様書は、開発するプロダクトが「何を(What)」実現すべきかを定義する、プロジェクトの最も重要なドキュメントの一つです。このドキュメントに基づいて、後続のユースケース、設計、テストが作成されます。

  • 明確かつ測定可能に: 「使いやすいUI」のような曖昧な表現ではなく、「主要な操作は3クリック以内で完了できること」のように、具体的で検証可能な記述を心がけます。
  • 「なぜ」を記述する: 可能であれば、その要件が必要となった背景や目的を追記することで、設計者がより適切な技術的判断を下す助けとなります。

2. テンプレートの使い方

  1. ファイルの作成:
    • Docs/00_はじめに/02_ドキュメント作成ガイド/テンプレート/から01_システム仕様書テンプレート.mdをコピーします。
    • Docs/01_システム仕様/配下の適切な場所に、[章番号]_[仕様名].mdという形式で配置します。(例: 01_機能要件.md
  2. 各セクションの記述:
    • テンプレート内のコメント(<!-- ... -->)を参考に、各セクションを埋めていきます。不要なセクションは削除しても構いません。

3. 要求IDの採番ルール

プロジェクト内のすべての要求、仕様、制約などを一意に識別し、トレーサビリティを確保するために、要求IDを付与します。

3.1. フォーマット

[種別]-[カテゴリ]-[メジャー番号]-[マイナー番号]

  • 種別 (Prefix):
    • 要件の性質を表す、3〜5文字のプレフィックスです。以下のリストから最も適切なものを選択します。
種別 説明
FUNC 機能要件。 システムが提供すべき機能。 FUNC-AUTH-1-1
UI UI/UX要件。 画面の見た目や操作性に関する要件。 UI-LOGIN-1-0
API API仕様。 APIのI/Fに関する要件。 API-USER-2-1
PERF パフォーマンス要件。 応答時間、スループットなど。 PERF-RESP-1-0
SEC セキュリティ要件。 認証、暗号化、脆弱性対策など。 SEC-DATA-1-0
OPS 運用・保守要件。 ログ、監視、バックアップなど。 OPS-LOG-1-1
CONST 設計・実装上の制約。 使用言語、フレームワークなど。 CONST-FW-1-0
... (その他、必要に応じて追加)
  • カテゴリ (Category):
    • 機能のドメインを表す、3〜4文字の大文字略称です。(例: AUTH (認証), USER (ユーザー), POST (投稿))
  • メジャー番号 (Major):
    • カテゴリ内の大きな機能の塊を表す番号です。(例: 1
  • マイナー番号 (Minor):
    • メジャー番号に属する、より詳細な個別の要件を表す番号です。(例: 1, 2
    • 0は、そのメジャー番号全体の概要を示す要件に使用することを推奨します。

3.2. 採番の具体例

  • FUNC-AUTH-1-0: 認証機能全体の要件
  • FUNC-AUTH-1-1: パスワードポリシーに関する詳細要件
  • FUNC-AUTH-1-2: アカウントロックに関する詳細要件
  • SEC-AUTH-2-0: 認証に関するセキュリティ要件
  • SEC-AUTH-2-1: 多要素認証(MFA)をサポートすること

3.3. ドキュメント内での記述方法

要求IDを定義する際は、Markdownの見出しに アンカー ({ #... }) を付与します。これにより、他のドキュメントから直接その要件にリンクできるようになります。

例:

#### FUNC-AUTH-1-1: パスワードポリシー { #FUNC-AUTH-1-1 }

- **要件:** パスワードは、最低8文字以上で、大文字、小文字、数字、記号をそれぞれ1文字以上含む必要がある。

4. トレーサビリティの確保

作成した要求IDは、後続のドキュメントで必ず参照します。これにより、「この設計(またはテスト)は、どの要求を実現(検証)するためのものか」を追跡できます。

  • ユースケース: 「関連する機能要件」セクションに要求IDを記載します。
  • 設計仕様書: 「関連する要件」セクションに要求IDを記載します。
  • テスト仕様書: 各テストケースに、検証対象の要求IDを記載します。
  • ソースコード/テストコード: コミットメッセージやコメントに要求IDを記載します。

例 (設計仕様書での参照):

このパスワード検証モジュールは、要件 [FUNC-AUTH-1-1](./01_機能要件.md#FUNC-AUTH-1-1) を満たすために設計される。