ここからが本題です。要件定義書を手元に置き、次の5つの手順で基本設計書を作っていきます。要件定義書のどの章が、基本設計書のどの章に置き換わるのかを示したものが以下の図です。

手順1 要件一覧に番号を振り、設計の起点にする
最初に、要件定義書の機能要件を「要件一覧」として1行1要件の表にし、番号を振ります。基本設計書のあらゆる記述は、この番号のどれかから来ている状態を目指します。
番号を振る理由は、レビューを機械的にできるようにするためです。どの要件にもつながらない設計は「頼まれていない機能」、どの設計にもつながらない要件は「設計漏れ」です。番号があれば、この2つを一覧の突き合わせだけで見つけられます。
案件Bの要件一覧は、7つの種別に分けて14行で書かれていました。たとえば「起案申請・承認」の種別には、「起案申請できること」「階層は5階層まで指定できること」「差戻しができること」の3行が並んでいます。1行は短くてかまいません。「〜できること」で終わる、できたかどうかを確かめられる形で書くのがコツです。
手順2 現行の帳票から項目を抜き出し、マスタとトランに分ける
次に、データの入れ物を設計します。出発点は、いま使っている帳票の実物です。帳票に印字されている欄を1つずつ書き出すと、それがほぼそのまま項目の候補になります。
書き出した項目は、2種類の入れ物に分けます。1つは、取引先や商品のように何度も繰り返し参照される情報を持つ「マスタ」です。もう1つは、伝票1枚ごとに1件ずつ発生する情報を持つ「トラン」(トランザクションデータの略で、伝票データのことです)です。案件Bでは、取引先、支店、得意先、商品、勘定科目の5つをマスタとし、確認書や伝票ごとのデータを5つのトランに分けました。

分け方の判断基準は、「同じ値を、複数の伝票に何度も書いているか」です。毎回同じ取引先名を手で打っているなら、それはマスタに切り出す候補です。マスタにしておけば、伝票側ではコードを選ぶだけで名称や単価が自動で入り、表記のゆれもなくなります。案件Bの特価承認申請書では、商品を選ぶと品名・規格・色・仕入単価が自動で入り、手で入力するのは数量と特価の単価だけになる設計にしました。
ただし、すべてをマスタにする必要はありません。外装リフォームの検証では、元請や施工店の名称を当面は文字列のまま持ち、設計書の備考に「マスタ化を検討?」と書いて判断を先送りしています。登録する件数が少ないうちは、マスタを保守する手間のほうが大きくなることがあるためです。
また、1枚の伝票に明細の行が複数ある場合は、伝票の見出し部分(鑑)と明細を別のデータに分けるかどうかも、この手順で決めます。案件Bでは、明細の行数が伝票によって変わる特価承認申請書は鑑と明細を分け、明細が最大3行で決まっている確認書は1つのデータに3行分の項目を並べる形にしました。行数が決まっているかどうかが、分け方の分かれ目です。
手順3 項目ごとに型・桁数・値域を決める
項目が出そろったら、1項目ずつ「型」を決めます。型とは、その項目に入る値の種類のことで、文字列、整数、小数、日付、選択肢、ファイル、自動採番などがあります。案件Aでは、使う型を8種類に絞り、設計書の冒頭に「項目タイプ」として一覧で定義していました。型の種類を先に決めておくと、項目ごとの判断がぶれにくくなります。
項目定義は、次のような表で書きます。2件の設計書から抜粋し、一般化したものです。
| # |
項目名 |
型 |
参照先 |
桁数・値域 |
備考 |
| 1 |
見積番号 |
自動採番 |
- |
- |
重複を防ぐため登録時に自動で振る |
| 2 |
見積日 |
日付 |
- |
- |
|
| 3 |
数量 |
文字列 |
- |
- |
「一式」など単位付きで書くため整数にしない |
| 4 |
単価 |
整数 |
- |
- |
|
| 5 |
消費税金額 |
整数 |
- |
- |
計算式で小数を扱えないため手入力 |
| 6 |
見積有効期限 |
選択肢 |
- |
1か月〜3か月 |
選択式で入力 |
| 7 |
取引先コード |
参照 |
取引先マスタ |
5桁 |
選ぶと取引先名が自動で入る |
| 8 |
金額 |
整数 |
- |
1〜9,999,999 |
3桁区切り、円記号あり |
| 9 |
発注番号 |
文字列 |
- |
仮置き7桁 |
桁数は未確認。判明したら見直す |
出典:導入前検証で作成した基本設計書(2件)から抜粋・一般化
ポイントは、型を「項目名から想像して」決めないことです。3の数量は、名前だけを見れば整数にしたくなります。しかし案件Aの見積書の実物には「一式」「2ライセンス」といった書き方があったため、文字列にしています。型は、帳票の実物に書かれている値を見て決めてください。
桁数と値域も同じです。8の金額の上限は、現行の伝票の欄に収まる桁から決めています。「念のため大きめに」ではなく、実物の欄と過去のデータを根拠にすると、後から利用者に説明しやすくなります。
一方で、9の発注番号のように、どうしても桁数が確認できない項目もあります。案件Bの設計書では、こうした項目に「★何ケタ?、仮置き7桁」と書き、仮の値を入れて設計を先に進めていました。空欄にしておくより、印を付けて仮置きしておくほうが、後から探しやすく、構築も止まりません。この印の付いた項目は、手順5で未決事項として引き継ぎます。
手順4 データのつなぎ方と、次の工程へ渡すきっかけを決める
データの入れ物と項目が決まったら、データ同士のつなぎ方を決めます。要件定義書の業務フローに「見積から納品、納品から請求へ」と書かれていれば、それを、どの番号でつなぐかという設計に置き換えます。
案件Aでは、見積・納品・請求の3つの伝票データを見積番号でつなぎました。納品データは見積番号を、請求データは見積番号と納品番号を引き継ぎます。前の工程のデータを引き継ぐので、取引先名や明細を書き写す必要がなくなります。
あわせて決めておきたいのが、「いつ、次の工程にデータを渡すか」というきっかけです。案件Aでは、見積データに「納品書データへ連携」という選択式の項目を置き、初期値を「0:未連携」としました。担当者が内容を確かめて「1:連携」に切り替えたときだけ、納品データが作られます。
自動で次の工程に流す設計にすることもできましたが、あえて人が切り替える形にしています。確認していない見積がそのまま請求まで流れることを防ぎ、誰がいつ次の工程に進めたのかを記録に残すためです。どこを自動にし、どこを人の判断に残すかは、要件定義書には書かれていないことが多いため、基本設計の段階で決めて理由を残してください。
見積書・納品書・請求書の転記を見積番号でなくす取り組みは、PoCで整理した課題や、次の工程へ渡す操作をあえて手作業に残した判断とあわせて、業務カタログで紹介しています。

手順5 帳票・承認・連携を設計し、未決事項を引き継ぐ
最後に、帳票、権限と承認、外部連携の3つを設計し、未決事項を整理します。どれも要件定義書に「〜できること」と書かれている要件を、具体的な設定に置き換える作業です。
帳票は、出力する書類ごとに様式を用意し、帳票の欄と項目の対応を決めます。案件Aでは、見積書、注文書、受領書・納品書、請求書、検収書の様式を、それぞれ1シートずつ設計書に収めていました。要件の「出力したPDFを保存できること」は、伝票データの中にファイル型の項目を設け、出力したPDFをそこに保存する形に置き換えています。要件の1行が、設計では項目1つに対応している例です。
権限と承認は、要件の数字を「設定できる上限」と「いまの運用」に分けて書きます。案件Bの要件は「階層は5階層まで指定できること」でしたが、実際の承認は上長、支店長、仕入責任者、本社の業務部門の4段です。設計書には両方を書き、組織変更で1段増えてもシステムを直さずに済むようにしました。あわせて、取引先には社内の承認状況を見せないこと、帳票出力用のデータは一部の項目を除いて読み取り専用にして承認後の書き換えを防ぐことも、権限の設計として決めています。
外部連携は、要件定義の時点で相手側の仕様が分かっていないことがよくあります。案件Bでも、基幹システムへのデータ連携は要件として確定していましたが、連携方式の詳細は基本設計の段階でも決まりませんでした。そこで、基幹システムへ渡すデータをどこに置くかだけを先に決め、方式は未決事項として残しています。
ここまでの手順で出てきた未決事項は、要件定義書の未決事項一覧と1つにまとめます。要件定義書で未決だった項目は消さずに引き継ぎ、手順3の「仮置き」のように設計で新たに生まれた未決を追加します。案件Bの設計書には、桁数の確認待ち、連番のルールの検討中、マスタの持ち方の要検討といった印が複数残っていました。未決が残っていること自体は問題ではありません。どこに残っているかが一覧で分かる状態にしておくことが大切です。
手書きの伝票と取引先の署名を一続きにする取り組みは、伝票から伝票への書き写しや紙の回覧をどう減らしたのか、システム化しなかった範囲とあわせて業務カタログで紹介しています。
