設計レビューとは、設計書を書いた人以外の目で読み、漏れ・誤り・あいまいな記述を実装の前に見つけて直す活動です。 見る観点は工程で変わります。基本設計では「利用者や他システムから見た振る舞いが決まっているか」、詳細設計では「その記述だけで同じプログラムが書けるか」を確かめます。

この記事では、観点を基本設計・詳細設計の2工程 × 画面・テーブル・バッチ・インターフェースの4成果物に分けたチェックリストにし、すべての観点に指摘文の例と修正後の書き方を添えました。あわせて、表計算ソフトに貼れるレビュー記録票(タブ区切り)と記入例、記録票から分類別の件数と指摘密度を集計するPythonコードを実行結果つきで載せます。例は架空の「社内備品予約システム」です。

確認環境:Ubuntu 24.04、Python 3.11.15(集計コードはこの環境で実行した出力を掲載)。

設計レビュー観点の早見表

成果物 基本設計で見ること 詳細設計で見ること
画面 項目と操作が要件を満たすか、画面遷移、権限、メッセージの方針 項目ごとの型・桁・必須・初期値、入力チェックの順序、イベントごとの処理
テーブル エンティティの過不足、主キー、テーブル間の関係、保存期間 列の型・桁・NULL可否・既定値、制約、インデックス、排他の方法
バッチ 起動条件、入力と出力、処理件数の見込み、異常時の方針 処理の順序、コミット単位、再実行の手順、終了コード、ログの項目
インターフェース 相手先、方式、項目の意味、頻度、障害時の取り決め 項目の型・桁・文字コード、タイムアウト、再送、エラーコードの対応表
共通 要件との対応、用語の統一、他の設計書との整合 基本設計との対応、共通部品の使い方、数値や条件の境界
決めておくこと 内容
指摘の分類 漏れ・誤り・不整合・あいまい・表記の5種類
重要度 高(後工程の作り直しにつながる)・中(読む人によって解釈が分かれる)・低(体裁や表記)
記録票の列 指摘番号・対象文書・対象箇所・分類・重要度・指摘内容・対応・確認
完了の条件 重要度「高」「中」の指摘がすべて確認済みになっていること

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「設計レビューの観点チェックリスト|基本設計・詳細設計別と記録票」

基本設計と詳細設計でレビューの観点はどう変わるか

同じ「画面」の設計書でも、工程によって問いが違います。基本設計のレビューは「何を作るかが決まっているか」、詳細設計のレビューは「どう作るかが一通りに決まるか」を確かめます。

比べる点 基本設計のレビュー 詳細設計のレビュー
主な読み手 利用部門、他システムの担当、テスト担当 実装する人、単体テストを書く人
照らし合わせる相手 要件定義書 基本設計書、共通の設計ルール
中心になる問い 要件がすべて設計に現れているか 2人が別々に実装しても同じ動きになるか
見つけたい指摘 機能や項目の漏れ、設計書どうしの不整合 条件の境界、異常時の動き、型や桁の誤り
参加してほしい人 業務を知る人、連携先の担当、運用の担当 実装の担当、テストの担当、共通部品の担当

工程を取り違えると、基本設計のレビューで変数名の議論が始まったり、詳細設計のレビューで画面の構成が見直されたりして、時間が足りなくなります。レビューの冒頭に「今日はどの工程の、どの観点を見るか」を伝えるだけで、指摘の粒がそろいます。

工程に共通する観点

成果物別の表に入る前に、どの設計書にも当てはまる観点を確認します。

観点 指摘文の例 修正後の書き方
要件との対応 要件 F-07「予約の取消」に対応する機能が設計書に見当たりません 機能一覧に「予約取消」を追加し、要件番号 F-07 を対応欄に記入
用語の統一 「備品」「機材」「物品」が同じ意味で混在しています 用語集に「備品」を定義し、全体を「備品」に統一
主語と条件 「必要に応じて通知する」の、誰に・どの条件でが読み取れません 「返却予定日の前日 8:00 に、予約者へメールで通知する」
数値の単位と境界 「7日以内」が7日目を含むかどうかが決まっていません 「利用開始日を1日目として7日目の 23:59 まで」
他の設計書との整合 画面の項目名「利用者」とテーブルの列「予約者」が別物に見えます 画面項目とテーブル列の対応表を追加し、名称を「予約者」に統一
変更の履歴 前回のレビューからどこが変わったかがわかりません 改訂履歴に版・日付・変更箇所・理由を記入

基本設計レビューのチェックリスト

画面(基本設計)

観点 指摘文の例 修正後の書き方
画面の過不足 予約の変更を行う画面が画面一覧にありません 画面一覧に「予約変更画面(SC-05)」を追加
画面遷移 登録完了後にどの画面へ進むかが遷移図にありません 「登録完了 → 予約一覧画面(登録した行を先頭に表示)」と記入
表示項目と入力項目 予約登録画面に「利用目的」がなく、要件 F-03 を満たしません 入力項目に「利用目的(任意・200字まで)」を追加
権限 管理者以外が他の人の予約を取り消せるかが書かれていません 権限表に「取消:本人と管理者のみ」の行を追加
メッセージの方針 入力エラーを項目の横に出すのか、画面上部にまとめるのかが未定です 「項目の直下に赤字で表示し、上部に件数を表示」と方針を記入
一覧の並び順と件数 予約一覧の並び順と1ページの件数が決まっていません 「利用開始日時の昇順、1ページ20件」

テーブル(基本設計)

観点 指摘文の例 修正後の書き方
エンティティの過不足 備品の分類(PC・プロジェクターなど)を持つ場所がありません 「備品分類」エンティティを追加し、備品から参照
主キーと一意性 予約を一意に決める項目が書かれていません 「予約ID(連番)を主キーとする」
テーブル間の関係 予約と備品の関係が1対多か多対多か読み取れません ER図に「備品 1 ― 多 予約」を記入
履歴の持ち方 取り消した予約を消すのか残すのかが決まっていません 「状態を『取消』に更新し、行は残す」
保存期間 過去の予約をいつまで保持するかがありません 「利用終了から3年保持し、その後は年次で削除」
データ量の見込み 件数の見込みがなく、インデックスの要否を判断できません 「予約は月 2,000 件、3年で約 72,000 件」

バッチ(基本設計)

観点 指摘文の例 修正後の書き方
起動条件 返却リマインドがいつ動くのかが書かれていません 「毎日 8:00 に起動。休日も実行」
入力と出力 何を読んで何を出すのかが文章だけで追えません 入力「予約テーブル」、出力「通知メール・実行ログ」を表で記入
処理件数と時間 想定件数と、終わらせたい時刻がありません 「最大 500 件、8:10 までに完了」
異常時の方針 途中で止まったときに誰が何をするかが未定です 「運用担当へ通知し、当日中に再実行する」
他の処理との順序 社員マスタ連携より先に動くと、退職者へ通知されます 「社員マスタ連携(7:00)の正常終了後に起動」

インターフェース(基本設計)

観点 指摘文の例 修正後の書き方
相手先と方向 どちらが呼び出す側かが図から読み取れません 「本システムが社員マスタ管理システムを呼び出す」と矢印つきで記入
方式と頻度 ファイル連携か API かが決まっていません 「HTTPS の API、1日1回 7:00 に全件取得」
項目の意味 「区分」が在籍区分なのか雇用区分なのか不明です 項目定義に「在籍区分(1:在籍 2:休職 9:退職)」
障害時の取り決め 相手先が止まっているときの動きがありません 「前日のデータで運用を続け、管理者画面に注意を表示」
合意の状態 相手先の担当者と合意済みかがわかりません 合意日・相手先の担当・確認した版を記入

詳細設計レビューのチェックリスト

画面(詳細設計)

観点 指摘文の例 修正後の書き方
項目の定義 「利用目的」の最大文字数と、改行を許すかが書かれていません 「全角・半角を問わず200字まで、改行可」
入力チェックの条件 利用終了日時のチェックが定義されていません 「必須。利用開始日時より後。開始から7日目の 23:59 まで」
チェックの順序 複数のエラーがあるとき、どれを先に出すかが不明です 「必須 → 形式 → 項目間 → 重複の順。同じ段のエラーはまとめて表示」
メッセージの文言 「適切なメッセージを表示する」となっており、文言がありません 「M-012:利用終了日時は利用開始日時より後を指定してください」
イベントごとの処理 「登録」ボタンを続けて2回押したときの動きがありません 「押下後はボタンを無効にし、応答を受けてから有効に戻す」
初期表示 画面を開いたときの初期値が未定です 「利用開始日時は現在時刻を30分単位に切り上げた値」

テーブル(詳細設計)

観点 指摘文の例 修正後の書き方
型と桁 社員番号が数値型で、先頭の0が落ちます 「CHAR(8)。先頭の0を保持」
NULL可否と既定値 status に NULL を許すかどうかがありません 「NOT NULL、既定値 'reserved'」
取りうる値 status の値の一覧がありません コード定義表を追加(reserved・in_use・returned・cancelled)
重複を防ぐ制約 同じ備品の時間帯が重なる予約を防ぐ仕組みがありません 排他制約を定義し、登録時にも重複チェックを行うと記入
インデックス 一覧画面の検索条件に合うインデックスがありません 「(equipment_id, start_at) に複合インデックス」
同時更新 2人が同じ予約を同時に変更したときの扱いが未定です 「version 列で楽観ロック。不一致なら M-020 を表示」

バッチ(詳細設計)

観点 指摘文の例 修正後の書き方
抽出条件 「明日返却の予約」の範囲が日時で書かれていません 「end_at が翌日 0:00 以上、翌々日 0:00 より前、かつ status = 'in_use'」
コミット単位 全件を1回でコミットするのか、1件ごとなのか不明です 「100件ごとにコミット」
再実行の手順 途中で止まったあとに再実行すると、通知が二重に送られます 「送信済みフラグを立て、未送信だけを対象にする」
終了コード 正常・警告・異常の終了コードが定義されていません 「0:正常 1:一部送信できず 9:異常終了」
ログの項目 何件処理したかがログから読み取れません 「開始・終了時刻、対象件数、送信件数、送信できなかった予約ID」
0件のとき 対象が0件の日の動きが書かれていません 「0件でも正常終了とし、ログに対象0件と出力」

インターフェース(詳細設計)

観点 指摘文の例 修正後の書き方
型・桁・文字コード 社員番号の桁数が相手先の仕様(8桁)と異なります 「8桁の半角英数字、UTF-8」
必須と省略時 部署コードが空で届いたときの扱いがありません 「空の場合は『未所属』として取り込み、警告ログを出力」
タイムアウトと再送 応答がないときの待ち時間と再送回数がありません 「10秒で打ち切り、30秒おきに3回まで再送。以降は運用担当へ通知」
エラーコードの対応 相手先のエラーコードごとの動きが決まっていません 対応表を追加(401 は再認証、429 は待機後に再送、500 番台は再送)
日時の表現 日時にタイムゾーンが付くのかが不明です 「ISO 8601 形式、+09:00 を付ける」
件数の上限 1回で取得できる件数と、続きの取り方がありません 「1回 500 件。次ページのトークンがなくなるまで繰り返す」

指摘の分類と重要度をそろえる

分類と重要度の定義を先に配っておくと、記録票の集計がそのまま改善の材料になります。

分類 定義 例
漏れ 書かれているべき内容がない 異常時の動きがない
誤り 書かれている内容が要件や事実と違う 桁数が相手先の仕様と違う
不整合 設計書の中、または設計書どうしで食い違う 画面とテーブルで項目名が違う
あいまい 読む人によって解釈が分かれる 「適切に」「必要に応じて」
表記 意味は通じるが体裁がそろっていない エラーコードの書式が混在
重要度 判断の目安 対応の期限の例
高 そのまま進むと実装やテストの作り直しになる 次の工程に入る前
中 実装する人が質問しないと進められない 次回のレビューまで
低 読みやすさ・体裁の話で、動きは変わらない 次の改訂のとき

指摘文は「どこが」「どう読めて」「何が決まるとよいか」の3点を入れると、書いた人がすぐ直せます。

伝わりにくい書き方 伝わる書き方
エラー処理が足りない 5.2 に、相手先が応答しない場合の待ち時間と再送回数の記載がありません。値を決めて追記をお願いします
わかりにくい 3.2 の「7日以内」は7日目を含むかどうかで2通りに読めます。境界の日時を明記してください
前と違う 3.4 の並び順(登録順)が、2.1 の画面遷移図の説明(利用開始日時順)と異なります。どちらかに統一してください

レビュー記録票のテンプレートと記入例

記録票は、指摘を1行ずつ書き、対応と確認まで同じ行で追える形にします。列は次の8つです。

列 書くこと
指摘番号 R-001 のような通し番号。会話や修正の履歴で参照する
対象文書 設計書の名前。密度の集計に使う
対象箇所 章番号と見出し。ページ番号は改訂でずれるので章番号を主にする
分類 漏れ・誤り・不整合・あいまい・表記
重要度 高・中・低
指摘内容 事実を1文で。直し方の提案は対応欄に書く
対応 どう直したか、または直さない理由
確認 レビューした人が修正を見て「済」を記入。それまでは「未」

次のブロックはタブ区切りです。そのまま表計算ソフトのセル A1 に貼り付けると、列に分かれます。1行目が見出し、2行目以降が記入例です。

指摘番号    対象文書    対象箇所    分類  重要度 指摘内容    対応  確認
R-001   画面設計書   3.2 予約登録画面 項目一覧 漏れ  高   利用終了日時の入力チェックが定義されていない  必須・開始日時より後・最長7日を追記  済
R-002   画面設計書   3.2 予約登録画面 メッセージ    あいまい    中   「適切なメッセージを表示する」の文言が決まっていない  メッセージID M-012 と文言を明記    済
R-003   画面設計書   3.4 予約一覧画面  不整合 中   一覧の並び順が画面遷移図の説明と異なる 利用開始日時の昇順に統一    済
R-004   テーブル定義書 2.1 reservation 誤り  高   同じ備品の時間帯重複を防ぐ制約がない  排他制約と登録時の重複チェックを追記  済
R-005   テーブル定義書 2.1 reservation 漏れ  中   更新日時の列がなく楽観ロックの条件が書けない  updated_at と version を追加    済
R-006   テーブル定義書 2.3 equipment   あいまい    低   status の取りうる値が書かれていない   コード定義表を追加   済
R-007   バッチ設計書  4.1 返却リマインド 漏れ  高   途中で止まったあとの再実行手順がない  処理済みフラグと再実行手順を追記    未
R-008   バッチ設計書  4.1 返却リマインド 不整合 中   起動時刻が運用スケジュール表と1時間ずれている 毎日 8:00 に統一 済
R-009   インターフェース設計書 5.2 社員マスタ連携 漏れ  高   相手先が応答しないときのタイムアウトと再送回数がない  10秒・3回・以降は通知と明記 未
R-010   インターフェース設計書 5.2 社員マスタ連携 誤り  中   社員番号の桁数が相手先仕様(8桁)と異なる   6桁を8桁に修正    済
R-011   インターフェース設計書 5.3 エラー応答   表記  低   エラーコードの表記が E001 と E-001 で混在 E-001 形式に統一 済
R-012   画面設計書   3.5 権限  漏れ  中   管理者以外が他人の予約を取り消せるかが書かれていない  権限表に取消の行を追加 未

空の記録票として使うときは、2行目以降を消して1行目だけ残します。開催日・参加者・対象の版・ページ数は、シートの上部か別シートに書いておくと、あとで密度を計算できます。

記録票から分類別の件数と指摘密度を集計する

記録票を review.tsv(タブ区切り)または review.csv(カンマ区切り、UTF-8)として保存し、次のコードで集計します。標準ライブラリだけで動きます。

"""レビュー記録票(CSV)から、分類別の件数と指摘密度(件/ページ)を集計する。"""
import csv
import sys
from collections import Counter

# 文書ごとのページ数(レビュー対象として配布した版のページ数を入れる)
PAGES = {
    "画面設計書": 24,
    "テーブル定義書": 10,
    "バッチ設計書": 8,
    "インターフェース設計書": 12,
}

path = sys.argv[1] if len(sys.argv) > 1 else "review.csv"
delimiter = "\t" if path.endswith((".tsv", ".txt")) else ","
with open(path, encoding="utf-8-sig", newline="") as f:
    rows = list(csv.DictReader(f, delimiter=delimiter))

print(f"指摘の総数: {len(rows)} 件")

print("\n[分類別]")
by_class = Counter(r["分類"] for r in rows)
for name, n in by_class.most_common():
    print(f"  {name:<6} {n:>2} 件  {n / len(rows):6.1%}")

print("\n[重要度別]")
by_sev = Counter(r["重要度"] for r in rows)
for name in ("高", "中", "低"):
    print(f"  {name}  {by_sev[name]:>2} 件")

print("\n[文書別の指摘密度]")
by_doc = Counter(r["対象文書"] for r in rows)
total_pages = 0
for doc, pages in PAGES.items():
    n = by_doc[doc]
    total_pages += pages
    print(f"  {doc:<12} {n:>2} 件 / {pages:>2} ページ = {n / pages:.2f} 件/ページ")
print(f"  {'全体':<12} {len(rows):>2} 件 / {total_pages:>2} ページ = {len(rows) / total_pages:.2f} 件/ページ")

print("\n[確認が済んでいない指摘]")
open_rows = [r for r in rows if r["確認"] != "済"]
for r in open_rows:
    print(f"  {r['指摘番号']} [{r['重要度']}] {r['対象文書']} {r['対象箇所']}")
high_open = sum(1 for r in open_rows if r["重要度"] == "高")
print(f"\n未完了 {len(open_rows)} 件(うち重要度「高」 {high_open} 件)")
print("判定:", "レビュー完了" if not open_rows else "再確認が必要")

実行結果(上の記入例12件を review.tsv に保存して実行):

$ python3 review_stats.py review.tsv
指摘の総数: 12 件

[分類別]
  漏れ      5 件   41.7%
  あいまい    2 件   16.7%
  不整合     2 件   16.7%
  誤り      2 件   16.7%
  表記      1 件    8.3%

[重要度別]
  高   4 件
  中   6 件
  低   2 件

[文書別の指摘密度]
  画面設計書         4 件 / 24 ページ = 0.17 件/ページ
  テーブル定義書       3 件 / 10 ページ = 0.30 件/ページ
  バッチ設計書        2 件 /  8 ページ = 0.25 件/ページ
  インターフェース設計書   3 件 / 12 ページ = 0.25 件/ページ
  全体           12 件 / 54 ページ = 0.22 件/ページ

[確認が済んでいない指摘]
  R-007 [高] バッチ設計書 4.1 返却リマインド
  R-009 [高] インターフェース設計書 5.2 社員マスタ連携
  R-012 [中] 画面設計書 3.5 権限

未完了 3 件(うち重要度「高」 2 件)
判定: 再確認が必要

読み方のポイントは3つです。

  • 分類別:「漏れ」が12件中5件(41.7%)で最も多いので、次回は設計書のひな形に「異常時の動き」「権限」の欄を足す、といった手が打てます。
  • 文書別の指摘密度:テーブル定義書が 0.30 件/ページで最も高く、ページあたりの指摘が集まっています。密度は文書どうしや過去の回と比べるための数字で、高い文書から優先して見直します。
  • 確認が済んでいない指摘:重要度「高」が2件残っているため、判定は「再確認が必要」です。早見表の完了の条件に沿って、次の工程へ進む前に確認を終えます。

密度が極端に低いときは、設計書の品質が高い場合と、読む時間が足りなかった場合の両方がありえます。レビューにかけた時間と読んだページ数を一緒に記録しておくと、どちらなのかを判断できます。

レビューの進め方

段階 すること 目安
準備 工程と成果物に合うチェックリストを選び、対象の版とページ数を記録 開催の2営業日前までに配る
個別の確認 参加者がそれぞれ読み、記録票に直接書き込む 会議の前日まで
会議 重要度「高」「中」から順に、事実の確認と重要度の合意だけを行う 1回 60〜90分
修正 書いた人が直し、対応欄に内容を記入 期限は重要度の表に従う
確認 指摘した人が修正後の版を読み、確認欄を「済」にする 重要度「高」は全件
集計 分類別・文書別に集計し、多かった分類をひな形やチェックリストに反映 レビューの完了時

会議の時間は、直し方を議論する場にすると足りなくなります。会議では「指摘が事実かどうか」と「重要度」だけを決め、直し方は書いた人に任せると、予定の時間で終わります。

よくある質問

Q. チェックリストの項目が多くて、1回で見きれません。 A. 成果物ごとに回を分け、1回に見る表を1〜2個に絞ります。参加者ごとに担当する観点を割り振る方法も有効です(例:1人は権限と異常時、もう1人は項目の定義)。

Q. 基本設計のレビューで、詳細設計の内容の指摘が出たらどうしますか? A. 記録票に書き、対応欄に「詳細設計で定義」と記入して確認欄を「済」にします。指摘そのものは次の工程への申し送りとして残るので、内容が消えません。

Q. 重要度の判断が人によって分かれます。 A. 「そのまま実装するとどうなるか」で決めます。作り直しになるなら高、実装する人が質問すれば解決するなら中、動きが変わらないなら低です。迷ったら高いほうにして、会議で合意します。

Q. 指摘密度はいくつなら合格ですか? A. 文書の種類や書き手の経験で変わるため、一律の値は置けません。同じチームの過去の回と比べ、大きく外れた文書を見直す使い方が向いています。

まとめ

  • 基本設計のレビューは「何を作るかが決まっているか」、詳細設計のレビューは「どう作るかが一通りに決まるか」を確かめる
  • 観点は成果物別(画面・テーブル・バッチ・インターフェース)に分けると、参加者と時間を割り振りやすい
  • 指摘文は「どこが・どう読めて・何が決まるとよいか」を書き、修正後の書き方を具体的な値で示す
  • 分類は5種類(漏れ・誤り・不整合・あいまい・表記)、重要度は3段階にそろえる
  • 記録票は指摘から対応・確認までを1行で追える形にし、タブ区切りで表計算ソフトに貼って使う
  • 分類別の件数と指摘密度を集計し、多かった分類を次回のひな形とチェックリストに反映する

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「設計レビューの観点チェックリスト|基本設計・詳細設計別と記録票」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?