画面設計書とは、システムの画面ごとに「何を表示し、何を入力でき、操作すると何が起きるか」を決めて書き残す文書です。 画面定義書とも呼ばれ、作る人・テストする人・確認する人が同じ画面を思い浮かべられるようにするのが目的です。

画面設計書は1枚の資料ではなく、画面一覧・画面遷移図・画面レイアウト・項目定義・イベント定義・メッセージ一覧・権限の7つの書類の組み合わせとして考えると、書く順番も抜けも整理できます。この記事では、それぞれの目的を表にまとめたうえで、コピペで使えるMarkdownテンプレートと、架空の会員管理機能(会員一覧・会員登録・会員詳細)の記入例を載せます。画面遷移図は mermaid-cli 12.0.0 で実際に描画を確認したMermaidコードです。最後に、エラー時・0件のとき・権限がないときの表示漏れを見つけるレビュー用チェックリストもまとめました。

画面設計書を構成する7つの書類の早見表

書類 目的 主な記載内容 主に使う人
画面一覧 システムにある画面を漏れなく数える 画面ID、画面名、概要、利用者、URL 全員(目次として)
画面遷移図 画面のつながりと移動の条件を示す どのボタンでどこへ、条件・分岐 設計・テスト
画面レイアウト 見た目と配置をそろえる 領域の配置、部品の位置、ワイヤーフレーム デザイン・実装
項目定義 1つ1つの入力・表示項目の仕様を決める 項目名、I/O、型、桁、必須、初期値、入力チェック、表示条件 実装・テスト
イベント(アクション)定義 操作したときの処理を決める きっかけ、処理内容、成功・失敗時の動き 実装・テスト
メッセージ一覧 表示する文言をそろえる メッセージID、種類、文言、表示場所 実装・テスト・文言確認
権限 だれが何を見て、何を操作できるかを決める ロール別の表示・操作の可否 設計・実装・テスト

書く順番は「画面一覧 → 画面遷移図 → 画面レイアウト → 項目定義 → イベント定義 → メッセージ一覧 → 権限」がおすすめです。先に全体(一覧と遷移)を固めると、あとの細かい定義で「この画面はどこから来るのか」に迷わなくなります。

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

(記載例)出典:株式会社RJC「画面設計書の書き方|項目一覧・テンプレート・記入例まとめ」

画面一覧の書き方(テンプレートと記入例)

画面一覧は、画面設計書全体の目次です。画面IDを振っておくと、遷移図・項目定義・メッセージ・テスト仕様書から同じIDで参照できます。

コピペ用テンプレートです。

| 画面ID | 画面名 | 概要 | 利用者(ロール) | URL | 種別 | 備考 |
|---|---|---|---|---|---|---|
| SCR-xxx | | | | | 一覧/登録/詳細/確認/ダイアログ | |

記入例(会員管理機能)です。

画面ID 画面名 概要 利用者(ロール) URL 種別 備考
SCR-000 メニュー 各機能への入口 全ロール /menu その他 ログイン後の最初の画面
SCR-010 会員一覧 会員を検索して一覧表示する 管理者、担当者、閲覧者 /members 一覧 20件ずつ表示
SCR-020 会員登録 会員を新しく登録する 管理者、担当者 /members/new 登録 確認画面あり
SCR-021 登録確認 入力内容を確認して登録する 管理者、担当者 /members/new/confirm 確認
SCR-030 会員詳細 会員1人の情報を表示する 管理者、担当者、閲覧者 /members/{id} 詳細 削除は管理者のみ

画面IDは「SCR-010」のように番号を10刻みにしておくと、あとで画面が増えても間に挿入できます。 ダイアログ(確認ダイアログなど)も画面として数えるか、イベント定義に書くかを最初に決めておくと、一覧の粒度がそろいます。

画面遷移図をMermaidで書く

画面遷移図は、画面どうしのつながりと「どの操作で、どんな条件のときに移動するか」を示す図です。Mermaid(テキストで図を書く記法)で書くと、Gitで差分を確認でき、Markdownの中にそのまま置けます。

flowchart LR
    MENU["SCR-000 メニュー"] -->|会員管理| LIST["SCR-010 会員一覧"]
    LIST -->|新規登録ボタン| REG["SCR-020 会員登録"]
    LIST -->|行のリンク| DTL["SCR-030 会員詳細"]
    REG -->|確認ボタン 入力チェックOK| CONF["SCR-021 登録確認"]
    REG -->|入力チェックNG| REG
    CONF -->|戻るボタン 入力値を保持| REG
    CONF -->|登録ボタン 成功| DTL
    CONF -->|登録ボタン メール重複| REG
    DTL -->|一覧へ戻る 検索条件を保持| LIST
    DTL -->|削除ボタン 確認ダイアログOK| LIST

矢印のラベルに「ボタン名+条件」を書くのがポイントです。「登録ボタン 成功」と「登録ボタン メール重複」のように、同じボタンでも結果で行き先が変わる分岐を図に残せます。「戻る」で入力値や検索条件を保持するかどうかも、遷移図に書いておくと実装とテストで解釈がそろいます。

mermaid-cliで描画を確認する

GitHubやエディタのプレビューで表示が崩れないか、コマンドで事前に確認できます(Node.js 22.22、@mermaid-js/mermaid-cli 12.0.0 で確認)。

npm i -D @mermaid-js/mermaid-cli
# flow.mmd に上のコードを保存して実行
npx mmdc -i flow.mmd -o flow.svg
Generating single mermaid chart

出力された flow.svg には、5つの画面(SCR-000、SCR-010、SCR-020、SCR-021、SCR-030)のノードがすべて描画されていました。

ラベルに括弧を入れたときのエラーと直し方

画面名に括弧を入れると、そのままでは構文エラーになります。

flowchart LR
    LIST[SCR-010 会員一覧] -->|新規登録| REG[SCR-020 会員登録(入力)]
Error: Parse error on line 2:
...登録| REG[SCR-020 会員登録(入力)]
-----------------------^
Expecting 'SQE', 'DOUBLECIRCLEEND', 'PE', '-)', 'STADIUMEND', 'SUBROUTINEEND', 'PIPE', 'CYLINDEREND', 'DIAMOND_STOP', 'TAGEND', 'TRAPEND', 'INVTRAPEND', 'UNICODE_TEXT', 'TEXT', 'TAGSTART', got 'PS'

Mermaidでは ( が「角の丸い四角」の記号として読まれるためです。ラベルを " で囲むと描画できます。

flowchart LR
    LIST["SCR-010 会員一覧"] -->|新規登録| REG["SCR-020 会員登録(入力)"]

画面名は最初から " で囲んでおくと、括弧や記号を含む名前でも安心です。 Mermaidの図の種類ごとの書き方は「Mermaid記法一覧|全図種のコピペ用コードと描画結果まとめ」の記事にまとめています。

画面レイアウトの書き方

画面レイアウトは、画面をいくつかの領域に分け、どこに何を置くかを示すものです。細かい見た目はFigmaなどのデザインツールに任せ、設計書には「領域」と「部品の並び」を書くと、変更に強くなります。テキストで書く場合の例です。

SCR-010 会員一覧
+--------------------------------------------------------------+
| [A] ヘッダー:サービス名 / ログインユーザー名 / ログアウト     |
+--------------------------------------------------------------+
| [B] 検索条件:氏名 [________]  会員種別 [すべて v]  [検索]     |
+--------------------------------------------------------------+
| [C] 操作:                                    [新規登録]       |
+--------------------------------------------------------------+
| [D] 一覧:会員番号 | 氏名 | メールアドレス | 会員種別 | 登録日  |
|      M000123     | 山田 太郎 | taro@example.com | 一般 | 2026/10/01 |
+--------------------------------------------------------------+
| [E] ページ送り:< 前へ  1 / 5  次へ >   全98件                |
+--------------------------------------------------------------+
領域 内容 補足
A ヘッダー 共通ヘッダー 共通部品として別の書類で定義し、ここでは参照のみ
B 検索条件 氏名(部分一致)、会員種別 検索ボタンで一覧を再表示
C 操作 新規登録ボタン 閲覧者には表示しない(権限の章を参照)
D 一覧 5列の表 登録日の新しい順。氏名は詳細画面へのリンク
E ページ送り 前へ・次へ・件数 20件ずつ

共通ヘッダーやページ送りのように複数の画面で使う部品は「共通部品」として1回だけ定義し、各画面からは参照すると、修正が1か所で済みます。

項目定義の書き方(テンプレートと記入例)

項目定義は、画面にある1つ1つの項目の仕様を表にしたもので、画面設計書の中でいちばん実装とテストに直結する部分です。列の意味は次のとおりです。

列 書くこと 書き方の例
項目名 画面に出る名前 メールアドレス
I/O I=入力、O=表示のみ、I/O=初期値を表示して変更可 I
型 文字列、数値、日付、選択(ラジオ・プルダウン)、チェック、ボタン、リンク 文字列
桁 最大文字数・桁数(全角半角の扱いも) 254
必須 ○ / - ○
初期値 画面を開いたときの値 空欄、システム日付、ログインユーザー
入力チェック 形式、範囲、重複、ほかの項目との関係 メール形式、登録済みでないこと
表示条件 表示・非表示・入力不可になる条件 管理者のみ表示
備考 データの出どころ、補足 members.email

コピペ用テンプレートです。

### SCR-xxx 画面名 項目定義

| No | 項目名 | I/O | 型 | 桁 | 必須 | 初期値 | 入力チェック | 表示条件 | 備考 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | | | | | | | | | |

記入例1:SCR-020 会員登録

No 項目名 I/O 型 桁 必須 初期値 入力チェック 表示条件 備考
1 氏名(姓) I 文字列 20 ○ 空欄 全角・半角とも1文字=1桁 常に表示 前後の空白は除去
2 氏名(名) I 文字列 20 ○ 空欄 同上 常に表示
3 氏名カナ I 文字列 40 ○ 空欄 全角カタカナと空白のみ 常に表示 半角カナは全角に変換して保存
4 メールアドレス I 文字列 254 ○ 空欄 メール形式。登録済みでないこと(登録時に確認) 常に表示 ログインIDを兼ねる
5 生年月日 I 日付 10 - 空欄 1900/01/01〜今日 常に表示 YYYY/MM/DD
6 会員種別 I 選択(ラジオ) - ○ 一般 一般・プレミアムのどちらか 常に表示
7 利用規約に同意する I チェック - ○ オフ オンであること 常に表示 規約へのリンクを横に置く
8 確認ボタン - ボタン - - - - 常に表示 EVT-020-01
9 キャンセルボタン - ボタン - - - - 常に表示 EVT-020-02

記入例2:SCR-010 会員一覧

No 項目名 I/O 型 桁 必須 初期値 入力チェック 表示条件 備考
1 検索:氏名 I 文字列 40 - 空欄(戻ったときは前回値) なし 常に表示 姓・名・カナの部分一致
2 検索:会員種別 I 選択(プルダウン) - - すべて 一覧の値のみ 常に表示
3 新規登録ボタン - ボタン - - - - 管理者・担当者のみ EVT-010-02
4 会員番号 O 文字列 7 - - - 1件以上のとき M+6桁
5 氏名 O リンク 41 - - - 1件以上のとき 姓+空白+名。詳細へ
6 メールアドレス O 文字列 254 - - - 1件以上のとき 長い場合は末尾を省略表示
7 会員種別 O 文字列 - - - - 1件以上のとき
8 登録日 O 日付 10 - - - 1件以上のとき YYYY/MM/DD
9 0件メッセージ O 文字列 - - - - 0件のとき MSG-I001
10 件数・ページ送り O 文字列 - - - - 21件以上のとき 20件ずつ

記入例3:SCR-030 会員詳細

No 項目名 I/O 型 桁 必須 初期値 入力チェック 表示条件 備考
1 会員番号 O 文字列 7 - - - 常に表示
2 氏名・氏名カナ O 文字列 41 / 40 - - - 常に表示
3 メールアドレス O 文字列 254 - - - 常に表示
4 生年月日 O 日付 10 - - - 常に表示 未登録なら「-」
5 会員種別 O 文字列 - - - - 常に表示
6 登録日時・更新日時 O 日時 16 - - - 常に表示 YYYY/MM/DD HH:mm
7 一覧へ戻るボタン - ボタン - - - - 常に表示 EVT-030-01
8 削除ボタン - ボタン - - - - 管理者のみ EVT-030-02

「表示条件」の列を空けずに埋めることが、表示漏れを防ぐいちばんの近道です。一覧画面なら「1件以上のとき」「0件のとき」、ボタンなら「どのロールに表示するか」を必ず書きます。また、「桁」は全角・半角をどう数えるかまで決めておくと、実装とDBの桁数がずれにくくなります。

イベント(アクション)定義の書き方

イベント定義は、ボタンを押す・画面を開くといった操作のきっかけごとに、処理と結果を書く表です。画面を開いたとき(初期表示)もイベントとして書くのがポイントです。

| イベントID | きっかけ | 処理内容 | 成功時 | 失敗時 |
|---|---|---|---|---|
| EVT-xxx-01 | | | | |

記入例(会員登録と会員詳細)です。

イベントID きっかけ 処理内容 成功時 失敗時
EVT-020-00 SCR-020 初期表示 確認画面から戻った場合は入力値を復元 入力欄を表示 -
EVT-020-01 確認ボタン 項目定義の入力チェックを全項目に実行 SCR-021へ エラー項目の下にメッセージ(MSG-E001〜E004)、最初のエラー項目にフォーカス
EVT-020-02 キャンセルボタン 入力があれば破棄確認ダイアログ(MSG-C002) SCR-010へ -
EVT-021-01 登録ボタン メール重複を確認し会員を登録。ボタンは処理中押せなくする SCR-030へ、MSG-S001 を表示 重複はSCR-020へ戻りMSG-E004、その他はMSG-E099
EVT-030-01 一覧へ戻るボタン 前回の検索条件とページを復元 SCR-010へ -
EVT-030-02 削除ボタン 確認ダイアログ(MSG-C001)でOKなら削除 SCR-010へ、MSG-S002 を表示 既に削除済みならMSG-E005

「処理中はボタンを押せなくする」のような二重送信への備えも、イベント定義に1行書いておくと実装で漏れにくくなります。

メッセージ一覧の書き方

メッセージ一覧は、画面に出す文言をIDで管理する表です。同じ意味の文言が画面ごとに少しずつ違う、という状態を防げます。

メッセージID 種類 文言 表示場所 使う画面
MSG-E001 エラー {0}を入力してください。 項目の下 SCR-020
MSG-E002 エラー {0}は{1}文字以内で入力してください。 項目の下 SCR-020
MSG-E003 エラー メールアドレスの形式で入力してください。 項目の下 SCR-020
MSG-E004 エラー このメールアドレスは既に登録されています。 項目の下 SCR-020
MSG-E005 エラー この会員は既に削除されています。 画面上部 SCR-030
MSG-E099 エラー 処理を完了できませんでした。時間をおいてもう一度お試しください。 画面上部 全画面
MSG-I001 情報 条件に合う会員はいません。 一覧の位置 SCR-010
MSG-S001 完了 会員を登録しました。 画面上部(数秒で消える) SCR-030
MSG-S002 完了 会員を削除しました。 画面上部(数秒で消える) SCR-010
MSG-C001 確認 {0}さんを削除します。よろしいですか? ダイアログ SCR-030
MSG-C002 確認 入力内容を破棄して一覧に戻りますか? ダイアログ SCR-020

{0} のような差し込み部分を使うと、似た文言を1つにまとめられます。 エラーの文言は「何が起きたか」と「どうすればよいか」をセットにすると、利用者が次の操作に進みやすくなります。

権限(ロール別の表示と操作)の書き方

権限の表は、ロールを列、画面と操作を行にした表にすると、表示条件と照らし合わせやすくなります。

画面・操作 管理者 担当者 閲覧者
SCR-010 会員一覧の表示 ○ ○ ○
SCR-010 新規登録ボタン ○ ○ 非表示
SCR-020 / SCR-021 会員登録 ○ ○ URL直接入力時は権限エラー画面
SCR-030 会員詳細の表示 ○ ○ ○
SCR-030 削除ボタン ○ 非表示 非表示

「ボタンを隠す」だけでなく、URLを直接開いたときの動きまで書くのがポイントです。画面で隠しても、サーバー側でも同じ権限を確認する前提で設計しておくと安心です。

状態別の表示を決める(空・エラー・権限なし・読み込み中)

画面は「データがそろっている状態」だけを設計しがちです。状態ごとの表示を1つの表にしておくと、表示漏れを見つけやすくなります。 会員一覧の例です。

状態 表示 項目定義・メッセージ
読み込み中 一覧の位置に読み込み中の表示。検索ボタンは押せない -
1件以上 一覧とページ送り No.4〜8、No.10
0件(検索結果なし) 一覧の代わりにメッセージ MSG-I001
0件(会員がまだいない) メッセージと新規登録ボタン 0件と同じ文言でよいか確認
通信・サーバーエラー 画面上部にエラー、再読み込みの案内 MSG-E099
権限なし 新規登録ボタンを表示しない 権限の表
文字が長い メールアドレスは末尾を省略表示、詳細で全文 No.6 備考

何で書くか:Figma・Excel・Markdown・HTMLモックの選び方

画面設計書を書く道具に正解は1つではありません。「見た目を決めたいのか」「仕様を正確に残したいのか」で使い分けると選びやすくなります。

道具 向いていること 気をつけること 選ぶ目安
Figma 見た目・余白・色・操作の流れ(プロトタイプ) 項目の桁や入力チェックのような細かい仕様は書きにくい デザイナーがいて、見た目の合意が重要
Excel 項目定義などの大きな表、印刷・受け渡し 差分が見えにくく、複数人の同時編集でずれやすい 書式が決まっている、表で受け渡す
Markdown 項目定義・イベント・メッセージの表、Mermaidの遷移図 見た目の表現は得意でない Gitで管理し、コードと一緒にレビューしたい
HTMLモック 実際の画面幅・操作感の確認 仕様の文書としては別に表が必要 動きや画面幅ごとの表示を確かめたい

よく使われる組み合わせは「見た目はFigma(またはHTMLモック)、仕様はMarkdownかExcelの表」です。レイアウト図の画像に仕様を書き込むより、仕様を表に分けておくほうが、変更の差分を追いやすくなります。

基本設計書・詳細設計書との関係

画面設計書は、多くの場合基本設計書の一部として書かれます。画面一覧・画面遷移図・画面レイアウト・項目定義・メッセージは利用者にも見える約束なので基本設計で決め、内部の処理(どのテーブルをどう更新するか、どのAPIを呼ぶか)は詳細設計書に書く、という分け方が一般的です。

内容 書く場所の目安
画面一覧・遷移図・レイアウト・項目定義・メッセージ・権限 基本設計書(画面設計)
入力チェックの順番、エラー時のログ、呼び出すAPIやSQL 詳細設計書
画面が呼ぶAPIの入出力 API設計書

全体の書き分けは「基本設計書の書き方|項目・記入例とレビューの観点」「詳細設計書の書き方|基本設計との違いと記入例」の記事で解説しています。画面設計書の「備考」列に、対応するAPIやテーブルの項目名を書いておくと、ほかの設計書とのつながりを追いやすくなります。

画面設計書のレビュー用チェックリスト

分類 確認すること
画面一覧 すべての画面とダイアログに画面IDがあり、遷移図と一致している
遷移 すべての画面に「入る道」と「出る道」がある
遷移 同じボタンで結果が分かれる場合(成功・失敗)の行き先がある
遷移 戻ったときに入力値や検索条件を保持するかが書かれている
項目 すべての項目に I/O・型・桁・必須・初期値がある
項目 桁の数え方(全角・半角)と前後の空白の扱いが決まっている
項目 項目どうしの関係(開始日と終了日など)のチェックが書かれている
表示条件 0件のとき、データがないとき(未登録の項目)の表示がある
表示条件 通信・サーバーエラーのときの表示がある
表示条件 文字が長いとき・数が多いときの表示(省略、折り返し、ページ送り)がある
表示条件 読み込み中の表示と、処理中に押せなくするボタンが決まっている
権限 ロールごとの表示・非表示と、URLを直接開いたときの動きがある
イベント 初期表示を含め、すべてのボタン・リンクにイベントIDがある
イベント 成功時と失敗時の両方の動きが書かれている
メッセージ 画面で使う文言がすべてメッセージ一覧にある
メッセージ エラー文に「どうすればよいか」が含まれている
共通 共通部品(ヘッダー、ページ送りなど)が1か所で定義されている
共通 日付・数値の表示形式が全画面でそろっている

よくある質問

Q. 画面設計書と画面定義書は違うものですか? A. 組織によって呼び方が違うだけで、ほぼ同じものを指すことが多いです。画面レイアウトや遷移を含む全体を「画面設計書」、項目の仕様の表を「画面定義書(項目定義書)」と呼び分ける場合もあるので、最初に用語をそろえておくと混乱しません。

Q. 画面レイアウトはどこまで細かく書けばよいですか? A. 設計書には「領域」と「部品の並び」までを書き、色・余白などの見た目はFigmaなどのデザインやスタイルガイドに任せるのがおすすめです。見た目の細部を設計書に書くと、デザインを直すたびに設計書も直す必要が出てきます。

Q. アジャイル開発でも画面設計書は必要ですか? A. すべてを最初に書き切る必要はありませんが、項目定義・メッセージ・権限のように実装とテストで参照する情報は、短い表でも残しておくと役立ちます。作る画面の分だけ、この記事のテンプレートを埋めていく使い方ができます。

まとめ

  • 画面設計書は、画面一覧・遷移図・レイアウト・項目定義・イベント定義・メッセージ一覧・権限の7つで考える
  • 書く順番は全体(一覧・遷移)から細部(項目・イベント・メッセージ)へ
  • 遷移図はMermaidで「ボタン名+条件」をラベルに。画面名は " で囲むと括弧があっても描画できる
  • 項目定義はI/O・型・桁・必須・初期値・入力チェック・表示条件を空欄なく埋める
  • 0件・エラー・権限なし・読み込み中の表示を状態別の表にすると、表示漏れが見つかる
  • 道具は見た目はFigmaやHTMLモック、仕様はMarkdownやExcelの表と役割で分ける
  • レビューはチェックリストで、遷移の出入りと表示条件を中心に確認する

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

(記載例)出典:株式会社RJC「画面設計書の書き方|項目一覧・テンプレート・記入例まとめ」

株式会社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で一緒に開発しながら、 成長を楽しみませんか?