見出し画像

基本設計書のテンプレート

※ 設計書に関する本文およびテンプレートは制限無く公開しておりますので、当該記事をご購入頂かなくても設計書テンプレートの利用は可能です。応援いただける方のみご購入頂けますと幸甚です。

こんにちは。

フリーランスエンジニアの山口です。

私は元々SIer企業の会社員エンジニアでしたが、2019年3月よりフリーランスエンジニアとして活動を始めました。

フリーになってから参画先のプロジェクトで経験したのは、意外と設計書のテンプレートは整備されていないということです。

そもそも設計書が存在していないとか、メンテ不能なPDF版で存在するとか、設計書のフォーマットがばらばらでメモ書きのような雑なものだったりなど。

そのような現場に入った際に利用可能なテンプレートがあると便利だと思いませんか?

書籍でも設計書の書き方や設計書として揃えるべきドキュメントの種類を学ぶことは可能です。むしろ、書籍のほうがまとまっており、初めての方が書き方を学ぶのであれば書籍のほうが良いかもしれません。

しかしながら、それらの書籍の付録として配布されている設計書テンプレートにおいて、実際に現場で使えるテンプレートは今のところ出会ったことがありません。

表紙と目次、見出しがちょっと記載されているだけで、何も無いに等しい状態のものがほとんどです。

例えば以下のようなものです。

名ばかりのテンプレート

上記の状態では結局ゼロから書くのと変わらないですよね。

設計書を書くのが初めての人は書籍等で書かなければならない要素について学べても、フォーマットを一からそろえるのは大変だと思っております。

ということで本noteにて現場で使える設計書テンプレートを提供できれば、以下のような方々にとって有益なものになるのではと考えております。

・フリーランスエンジニアとして独立しようと考えている方
・設計書を初めて書く方
・会社内でまだ決まったテンプレートが無い方
・ほかのエンジニアはどういう設計書を利用しているのか気になる方

もちろんテンプレートだけ提供しても基本設計の全体像がわからないと思いますので、簡易的なものではありますが説明を加えつつ提供していきたいと思います。

基本設計書のテンプレートはExcelかWordか

ITエンジニアが記述する設計書の多くはExcelが多い印象です。

Excelファイルのセル幅を縮めたいわゆるExcel方眼紙ベースの設計書ですね。

というのも画面項目やDBのテーブル項目など、何かと表形式で書くものが多いため、Excelのほうが扱いやすいという背景があります。

また、画面のスクリーンショットもExcelのほうが比較的添付しやすいです。

しかしながら、お客様環境毎にプリンターが異なるため、Excelで記述すると印刷範囲のズレが生じ、それらの体裁を整えるのに非常に手間がかかるデメリットがあります。

また、セルに記述した文章が印刷してみると隠れてしまっていて印刷されないということも起きやすいです。

実際に過去の経験上、以下のような問題が生じ、最後に設計書全体の体裁を修正するだけで1週間程度時間をかけることがありました。

・列幅のズレを修正
・セル内の文章が印刷範囲外へ飛び出しているのを折り返しに修正
・セル内の文章が印刷すると隠れてしまう箇所の修正
・上述の修正に伴う行幅の調整と、それに伴う1ページ辺りの印刷範囲の修正
・Excel関数で参照している箇所のリンク切れ修正(シート追加、削除を行っていると発生しがち)

ということで今回は印刷時の体裁面で悩まされることが無いように、Word文書でテンプレートを用意しようと考えております。

※ 一部、印刷することがあまりなく、画面上でフィルターしながら参照することが多いものについてはExcelファイルを利用します。

基本設計書に必要な各種仕様書

基本設計書に必要な仕様書は以下の通りです。

・命名規則
・機能一覧
・処理機能記述
・画面一覧
・画面仕様書
・画面遷移図
・項目ラベル名一覧
・エラーメッセージ一覧
・帳票一覧
・帳票仕様書
・ファイル一覧
・ファイル仕様書
・外部インターフェース一覧
・外部インターフェース仕様書
・バッチ処理一覧
・バッチ処理仕様書
・システムメール一覧
・システムメール定義書
・DBテーブル一覧
・DBテーブル定義書
・DBビュー一覧
・DBビュー定義書
・ER図
・コード一覧 ※ 各種区分値
・セキュリティ仕様書 ※ XSS対策など
・ワークフロー一覧 ※ ワークフローのあるシステムの場合
・ワークフロー定義 ※ ワークフローのあるシステムの場合
・アプリケーション仕様 ※ログ出力方式、文字コード、実行環境等々

おおよそ上記が書ければ大抵のシステム開発において必要な情報が揃うと思います。

予算が限られている、あるいは非常に小規模なシステム開発においては最低限以下の設計書があれば十分だと個人的には考えております。

・命名規則
・機能一覧
・画面一覧
・画面仕様書
・画面遷移図
・帳票一覧
・ファイル一覧
・外部インターフェース一覧
・外部インターフェース仕様書
・バッチ処理一覧
・バッチ処理仕様書
・システムメール一覧
・システムメール定義書
・DBテーブル一覧
・DBテーブル定義書
・ER図
・コード一覧
・アプリケーション仕様

※ 帳票仕様、ファイル仕様は実ファイルのイメージで管理
※ ビューが存在する場合はDBテーブル定義書内に記述
※ セキュリティ対策、ワークフロー等のビジネスルールはアプリケーション仕様にまとめる

昨今ではフロントエンド開発とサーバーサイド開発の分業が進んでいることもあり、基本設計時にある程度API設計まで済ませているケースもありますが、どちらかというと詳細設計に近いものですので当該記事では割愛します。

命名規則

システムの機能や画面、帳票などに識別IDを付与する際のIDの付け方や、DBのテーブル名、項目名の付け方(IDはXXX_id、コードはやXXX_code、名称はXXX_nameなど)などを定義します。

画像2

画像3

機能一覧

社員情報一覧、社員情報詳細、組織情報一覧、組織情報詳細・・・といったシステム内で登場する機能を一覧表に列挙します。

記述する粒度としては、一つの画面として成立するような機能、メニューの単位になるような大枠の機能で記述します。

社員情報を一覧表示する画面単位の機能として、例えば社員情報を登録する画面で組織情報を入力する際に、入力補助機能として組織情報検索のポップアップ画面を表示する機能などがありますが、このようなポップアップ画面も一つの機能として機能一覧に記載します。

しかしながら、社員情報一覧画面内にある社員情報の検索機能や出力結果の並び替え機能など、そのような細かい機能の単位で記述することはほとんどありません。

画像4

処理機能記述

機能一覧に記載した「機能」の処理の流れをフローチャートなどの図や説明を用いて記述します。

例えば社員情報一覧であれば「画面を初期表示する」、「検索をする」、「検索条件をクリアする」、「検索結果を並び替える」、「検索結果の一覧表からデータを選択して詳細画面を表示する」などといった当該機能で起きるアクションに基づく「処理」それぞれの説明を記述します。

初期表示であれば、メニューから当該画面に遷移して、デフォルトの検索条件である〇〇で社員情報マスタからデータを取得し、社員情報一覧に結果を描画する、あるいは初期表示時は検索結果を表示せず、検索条件の入力欄を描画するなど、処理の流れを記述します。

画像5

画像6

画面一覧

システムで登場する画面を一覧表にまとめます。

例えば社員情報一覧画面、社員情報詳細画面、社員情報入力補助画面、組織情報一覧画面、組織情報詳細画面、組織情報入力補助画面などを一覧にまとめます。

社員情報の詳細情報を表示するような「詳細画面」は、照会画面、入力画面、入力内容確認画面、登録完了画面など、同一レイアウトで項目の入力可否の違いだけの画面パターンがあることが多いです。

これらは一つ一つの画面として定義する場合もありますが、モードの違いとして一つの仕様書にまとめられることが多いです。

レイアウトが大きく異なる場合や、わけたほうが記述しやすい場合もありますので、記述する粒度はプロジェクトや案件によって少し異なります。

画像7

画面仕様書

画面一覧に記述した画面ひとつひとつの項目の並びや画面で発生するイベント、入力チェック仕様にDBの保存先など細かな定義を記述します。

画面がユーザーインターフェースの中心となっている以上、当該仕様書が基本設計の大半を占めています。

画面仕様書とDB設計があればシステム機能のほとんどを構築できると言っても過言ではないほど重要な仕様書です。

画面仕様書を見ればどのような入力項目があり、どのようにデータベースへ保存するのかがわかります。

画像8

画像9

画像10

画像11

画面遷移図

画面と画面のつながりを表した図になります。

例えば共通メニューから社員情報一覧画面や組織情報一覧画面へ遷移し、一覧画面から社員情報詳細や組織情報詳細などの個々の詳細情報画面へ遷移するといった情報を図で記述します。

よくある図としてはオートシェイプの四角と矢印を使って、四角を画面、矢印を遷移先の画面への繋ぎとして記述するものです。

画像12

項目ラベル名一覧

全画面で利用する項目名の一覧になります。

例えば担当者名であったり担当者氏名だったり、同じ項目に対して似たような別の名称をつけてしまうことがありますが、一覧にまとめることでこのような表記揺れを防ぐことができます。

また、実装面において多言語対応されるケースも多いと思います。昨今のフレームワークにおいては項目名にIDを指定すると、指定言語に応じて紐づくラベル名に自動変換してくれます。

上記のような機能を利用する場合にも日本語の項目名と英語の項目名を同じIDに紐づけて一覧で定義します。

画像13

エラーメッセージ一覧

エラーコードとエラーメッセージを一覧で定義します。

こちらも項目ラベル名一覧と同様に日本語エラーメッセージ、英語エラーメッセージを同一のIDに紐づけて定義します。

ワーニングも当該一覧に定義します。

画像14

帳票一覧

システムで発行する帳票の一覧になります。

帳票とは例えば申請書のような主に印刷して利用する固定レイアウトのものになります。

画像15

帳票仕様書

帳票一覧に記載した帳票のレイアウトを定義するものになります。

画面仕様書と同じように項目の並びや、DBのどのテーブルからどのように値を出力するのかの定義に加え、印刷する際の用紙サイズや余白の定義も記載します。

画像16

画像17

画像18

画像19

ファイル一覧

システムで出力するファイルの一覧になります。

主にユーザ操作によって出力するファイルを記述するものであり、ログファイルなどシステムの裏側で作られるファイルは含まれません。

例えばCSVファイルのようなデータ出力を主としたファイルを一覧に記述します。

画像20

ファイル仕様書

ファイル一覧に定義したファイルの詳細を定義するものになります。

ファイルがテキストファイルなのかバイナリファイルなのか、テキストファイルであれば文字コードが何かなどを含め定義します。

画像21

画像22

画像23

外部インターフェース一覧

連携する外部システムの一覧になります。

例えばGoogle Driveとの連携、クラウドサインといった外部サービスとの連携、自社の基幹システムとの連携等々、別のシステムとの連携を行う場合に記載します。

画像24

外部インターフェース仕様書

外部インターフェース一覧に記載した外部システムとの連携方法や連携するデータの項目レイアウトなどを定義します。

バッチ処理で実装されることもあり、その場合はバッチ処理仕様書に詳細処理を記述し、連携するデータの項目レイアウトのみを外部インターフェース仕様書に記載します。

画像25

画像26

画像27

画像28

バッチ処理一覧

システムで実行するバッチ処理の一覧になります。

例えば日次でシステムから案内メールを送信したり、バックアップ処理を行ったり、比較的多量のデータを処理するプログラムをメインのシステムサービスとは別に独立実行します。

処理に時間のかかるものが多いため、基本的にはユーザアクセスの少ない時間帯に実行することが多いです。

画像29

バッチ処理仕様書

バッチ処理一覧に記載されたバッチ処理の詳細を記述します。

日次なのか週次なのか月次なのかといった実行タイミングと、どのような処理を実行するのかを記述します。

画像30

画像31

画像32

システムメール一覧

システムから送信する通知メールの一覧になります。

画像33

システムメール定義書

システムメールの宛先、件名、本文について記述します。

宛先はメールアドレス固定のケースよりも例えばログインユーザであったり、申請者や承認者といった何かしらの「ユーザ」を示す言葉で定義することが多いです。

本文についても、固定の文章部分と差し替えて利用する部分がわかるように記述します。

画像34

画像35

画像36

DBテーブル一覧

データベース(DB)のテーブル名一覧です。

社員情報テーブルや組織情報テーブル、それらを紐づける所属組織テーブルなどシステムに必要なデータを保存するテーブルを列挙します。

画像37

DBテーブル定義書

DBテーブル一覧に記載したテーブルの項目レイアウトを定義します。

レコードを一意に特定するためのキー項目は何か、項目のデータ型は数値なのか文字なのか日付なのかといった情報を記述します。

このDBテーブル定義書をもとにCREATE TABLE文などを生成するため、重要な設計書の一つになります。

画像38

画像39

DBビュー一覧

DBのビューの一覧です。

ビューとは簡単に説明しますと、テーブルとテーブルを予め結合して、一つのテーブルのように見せるのがビューになります。

画像40

DBビュー定義書

DBビュー一覧に記述したビューの詳細を記述します。

ビューを構成するテーブル名、それらの結合条件、および項目名を列挙します。

画像41

画像42

ER図

DBテーブルの関連図になります。

例えば社員情報と組織の関連を表す場合、「社員」からみて所属する「組織」は複数あります。(例えばaさんがA部とB部を兼務するケース)

「組織」からみて所属する「社員」も複数ですね。(例えば、A部にはaさん、bさん、cさんと複数の方がいます。B部にもaさん(兼務)、dさん、eさんと複数の方がいます。)

上記のような関係を四角と線を用いてデータのつながりを表すのがER図です。

データ1つに対して同じくデータが1つ紐づくのか1対1の関係、複数紐づく場合は1対多の関係になります。

「多」を表す場合は、専用の記号あるいは「*」を利用します。

例えば【社員】1-*【所属組織】*-1【組織】のようにオートシェイプなどで図を構築していきます。

この図があるとテーブル間の関連が理解でき、データをどのように管理するかを把握することができるため、重要な設計書の一つになります。

画像43

画像44

コード一覧

システム全体で利用するフラグや区分の値を一覧化したものになります。

例えば社員の分類として1:社員、2:契約社員、3:ビジネスパートナーのように区分を設けることがあります。

これらの区分の値を一意に示すコード(1,2,3)とコードの名称(社員、契約社員、ビジネスパートナー)を記載します。

画像45

セキュリティ仕様書

システム全体のセキュリティ方針を記載します。

XSS対応、パスワードソルト、社員情報の暗号化、社員情報一覧を表示するページのキャッシュ化無効等々どんな対策を実施するのかを記述します。

画像46

画像47

画像48

ワークフロー一覧

システムで利用するワークフローを一覧にまとめたものになります。社内IT機器の利用申請や研修申込申請などといった申請処理と承認処理を行う機能が必要な場合に記述します。

画像49

ワークフロー定義

ワークフロー一覧に記載したワークフローの詳細を記述します。ワークフロー機能が無ければ記述することはありません。

例えば、PCの外部モニタを追加調達する際に、利用者がPCモニタの利用申請を行い、部門長が承認し、総務の機器調達チームのリーダーが承認するといった流れを定義します。

誰が申請を行い、誰が承認するのか、申請する際、承認する際におけるシステムメールの有無、購入金額等によって承認者のルートが変わるのか否かなどを記述します。

画像50

画像51

画像52

画像53

アプリケーション仕様

アプリケーション仕様はシステムを構築する上での基本ルールを定義したものになります。

例えば以下のような事柄を記述します。

・システム構成(Webサーバ、DBサーバ、帳票サーバ等々の構成)
・ファイル配置方式(ソースファイルのフォルダ階層)
・開発モデル(利用するプログラミング言語、フレームワークなど)
・処理フロー方式(画面とサーバ間の処理の流れ)
・メッセージ方式(多言語対応の有無、メッセージの表示方法)
・文字コード
・ログ出力方式
・例外処理方式
・入力チェック方式(入力チェック時のエラー表示方法など)
・制御方式(多重リクエストの防止、ブラウザの戻るボタン制御等)
・認証方式
・認可方式
・セッション管理
・DBアクセス方式
・採番方式
・排他制御方式
・ファイルアップロード、ダウンロード方式
・メール送信方式

フレームワークを採用する場合は基本的にはフレームワークの仕様にあわせた動きとなりますので、利用するフレームワークにおける特徴や注意事項を中心に記載します。

画像54

画像55

画像56

画像57

画像58

基本設計書のテンプレートサンプルについて

簡単ですが基本設計書の構成につきましては上述にて説明いたしました。

設計書のテンプレートにつきまして、ひとまずは以下、画面仕様書のテンプレートおよび命名規則のテンプレートをご参考ください。

上記のようなフォーマットで記載した計28ファイルのテンプレートをzipにまとめたものが以下になります。

なお、ご自由に使っていただいて問題ありませんが、当該テンプレートをもとに自作テンプレートと称して他で販売したりするのはおやめください。

copyright部分を書き換えてご自身のプロジェクト内でご利用されるのは問題ありません。

また、あくまでもテンプレートであり、こちらを利用したからといって設計書に過不足が無いことを保障するものではありません。

プロジェクトによっては不必要なもの、足りないものがあるかもしれませんので、これらのテンプレートを有効活用して頂きながらカスタマイズして頂ければと存じます。

最後に、当該記事を公開してから全テンプレート公開まで半年以上かかっており申し訳ございません。

記事を読んでみたらテンプレートが全然揃っておらず期待外れという方もいらっしゃったのではないかと思います。

もしもテンプレートがお役に立ったという方がいらっしゃいましたらサポート機能から応援あるいは当該記事を購入頂けますと大変幸甚に存じます。

※ 設計書に関する本文およびテンプレートは制限無く公開しておりますので、当該記事をご購入頂かなくても設計書テンプレートの利用は可能です。この先に本文はありませんのでご注意ください。

ここから先は

0字

¥ 980

期間限定 PayPay支払いすると抽選でお得に!

もしよろしければサポート頂けますと大変幸甚に存じます。 今後ともエンジニア経験から何かお役にたてる内容を発信できればと思料しております。