Vol.02

仕様書が全てを決める

はじめに

前回のコラムで、「コードを読まないシステム開発」について紹介しました。今回は、その成功の鍵を握る「仕様書」について深掘りします。AI開発において、仕様書は単なるドキュメントではありません。それは開発の成否を決定づける最重要要素です。

なぜ仕様書がすべてなのか

1. AIは仕様書の通りに動く

AIは与えられた指示に忠実に従います。曖昧な指示には曖昧な結果が、明確な指示には明確な結果が返ってきます。仕様書の品質が、そのまま成果物の品質になります。

2. 人間同士の認識合わせにも使える

仕様書は、開発者とビジネス側の認識を合わせるためのツールでもあります。「こういうものを作りたい」という抽象的なイメージを、具体的な形にする役割を果たします。

3. 変更管理の基盤になる

仕様書があれば、何が変わったのか、なぜ変わったのかを追跡できます。これは、システムの長期的な保守において非常に重要です。

良い仕様書の条件

条件1:具体的であること

抽象的な表現は避け、具体的な数値や条件を記載します。

✗ 悪い例:「高速に動作すること」
◯ 良い例:「ページの読み込み時間が2秒以内であること」

✗ 悪い例:「使いやすいUI」
◯ 良い例:「主要な操作が3クリック以内で完了できること」

条件2:網羅的であること

正常系だけでなく、異常系やエッジケースも含めて記載します。

記載すべき項目:
- 正常な入力に対する動作
- 不正な入力に対する動作(バリデーション)
- 境界値の扱い
- エラー時の挙動
- タイムアウト時の処理

条件3:一意であること

複数の解釈ができる表現は避けます。

✗ 悪い例:「適切な時間にメールを送信する」
◯ 良い例:「毎日9:00 JSTにメールを送信する」

仕様書のテンプレート

私たちが使用している仕様書のテンプレートを紹介します:

# 機能名

## 1. 概要
この機能の目的と背景を簡潔に記載

## 2. 要件
### 2.1 機能要件
- 具体的な機能の一覧

### 2.2 非機能要件
- パフォーマンス要件
- セキュリティ要件

## 3. 詳細仕様
### 3.1 入力
- 必須項目と任意項目
- データ型と制約

### 3.2 処理
- 処理フローの詳細

### 3.3 出力
- 出力形式と内容

## 4. エラー処理
- エラーケースと対処方法

## 5. テスト方法
- 確認すべき項目

実践のコツ

  1. 書きながら考える:仕様書を書く過程で、考えが整理される
  2. レビューを受ける:第三者の目で曖昧な点を発見
  3. 更新を怠らない:実装と仕様書の乖離を防ぐ
  4. バージョン管理する:変更履歴を追跡可能に

まとめ

AI開発において、仕様書は「あれば便利なもの」から「なければ開発できないもの」へと位置づけが変わりました。仕様書の品質に投資することは、開発全体の品質に投資することと同義です。


次回:「データベース設計の重要性 - システムの土台を作る」