今から紹介する情報で、設計書作成に役立ててください。また、すでにシステムエンジニアとして機能設計書を作成している技術者の方々は、ここで得た知識を今後のスキルアップに活用してください。
機能設計書はシステム開発において重要なので、理解を深め、質の高い設計書を作成することが成功への鍵です。
プログラマー(PG)経験 3年 システムエンジニア(SE)経験 8年 プロジェクトマネージャー(PM)経験 7年 過去の開発システム ・ロケット飛行安全システム ・魚雷発射評価シミュレーションシステム ・船舶電話システム ・NHK番組管理システム ・IBM生産管理システム(データベース設計) ・学習塾管理システムパッケージソフト開発 ・6軸アームロボット開発 ・露光装置監視システム その他多数システム開発にかかわってきました。 39歳で独立して、アフィリエイトシステム開発と運営を3年ほど行い、 ライター業務を始めて現在に至ります。
機能設計書とは?

システム全体の構造が把握しやすくしてくれます。機能設計書の種類、AI時代における機能設計書の新しいあり方、誰が作成するのかについて解説します。また、AIを活用した設計書の作成がどのように変化をもたらすかについても説明します。
機能設計書の種類
最初に行うのが機能概要設計書の作成です。この設計書では、システム全体の機能を高レベルでまとめ、顧客との打ち合わ基準に、システムエンジニアがユーザーインターフェース、内部設計、そしてデータベースを作成します。
特に大規模なシステムでは、複数のエンジニアが役割を分担し、それぞれの設計書を並行して作成することがあります。この場合、設計書同士の整合性を保つために、定期的に全体のすり合わせを行います。すり合わせでは、各設計書の内容が互いに矛盾しないか、全体としての一貫性が保たれているかを確認します。
最終的に、整合性が取れた設計書が完成することで、システム開発がスムーズに進行し、顧客の期待に応える高品質な成果物を提供できるようになります。このプロセスを経ることで、チーム全体の理解が深まり、開発の効率も向上します。
AI時代の機能設計書のあり方
近年、AIの発展に伴い、機能設計書の作成にAIを活用する機会が増えています。AIは、大量の過去データや現在の要件をもとに、必要な機能を洗い出し、提案してくれる特徴があります。AIが正確な機能設計書を作成するためには、ユーザーからの正確な情報や、設計チームが必要としているデータをしっかり提供することが重要です。
このようにして、AIの能力を活かして、機能設計書を作成し、結果的に効果的かつ信頼性の高いシステム開発が実現します。AIの活用は、設計プロセスの効率化と品質向上に大いに寄与するでしょう。
機能設計書は誰が作成するのか
機能設計書の作成は基本的にシステムエンジニアが行いますが、大規模なシステム開発では役割が変わることがあります。この場合、顧客との打ち合わせに参加し、要件定義書を作成するのはシステムマネージャーが一般的です。システムマネージャーは、その後、機能概要設計書を作成し、各機能担当のシステムエンジニアに設計を依頼します。
このように、プロジェクトの規模や複雑さによって、機能設計書の作成者は変わる可能性があります。小規模プロジェクトでは、システムエンジニアが単独で作成することが一般的ですが、大規模プロジェクトでは、システムマネージャーやビジネスアナリストなど、複数の専門家が協力して設計書を作成することが求められます。各担当者が異なる視点から情報を提供することで、高品質な設計書作成ができ、システム全体の整合性が保たれます。
機能設計書がなぜ必要なのか?
非常に重要なのがシステム開発において機能設計書の作成で、その理由は主に2点あります。
2開発メンバー間の混乱を防ぐ
1つ目の開発コストの削減につながるというのは、具体的に開発メンバー間で考え方を統一し、共通の目標に向かって効率的に作業を進められるため、無駄な手戻りやコミュニケーションコストが減少するということです。
2つ目の開発メンバー間の混乱を防ぐというのは、機能設計書がプロジェクト全体の整合性を保ち、各機能の役割を確かにするものだからです。
このように、機能設計書はプロジェクトの成功に不可欠な要素であり、円滑な開発プロセスを支える重要文書となります。
ここでは、機能設計書を書く理由を解説します。
開発コストの削減につながる
開発コストを削減するためには、機能設計書が非常に重要な役割を果たします。顧客との打ち合わせで得た情報を明確に文書化することで、顧客にもわかりやすく説明でき、理解を深めることができます。また、開発者側にとっても、機能設計書はシステムの要件を把握するためには重要です。
これにより、顧客の意向に沿った開発が可能となり、手戻りや修正が少なくなります。その結果、プロジェクトはよりスムーズに進行し、開発コストの抑制につながります。このように、機能設計書は効率的で高品質なシステム開発を実現するための不可欠なツールです。
開発メンバー間の混乱を防ぐ
機能設計書は、その後の設定書やプログラミングなどの開発工程において、混乱を防ぐために重要な役割を果たします。顧客からの要件を機能設計書に整理することで、開発メンバー全員がどのようなシステム機能を実装すべきかをはっきりと把握できます。
この設計書があれば、誤解や不明点が生じることもなくなります。また、機能設計書はプロジェクトの全体像を示すため、開発者は自分の担当以外の機能についても理解しやすくなります。このように、機能設計書は、開発工程が円滑に進み、各メンバーが効率的に作業を進めることが可能となります。
機能設計書に含まれる要素

システムの要件次第で作成内容は大きく変わります。基本的なものとして機能概要・非機能要件・システム構成・インターフェス設計などがあります。これにケースバイケースですが、データーを蓄積したり表示させたりするのに必要なのがデータベース設計です。
- 機能要件
 - 非機能要件
 - システム構成
 - データベース設計
 - インターフェース設計
 
機能要件
機能要件は、開発するシステムの全体像を形成するものであり、顧客からのレビューを忠実に反映させます。具体的には、顧客と開発者の双方が理解できる設計書の作成が重要です。顧客の要件を基にして作成された基本設計書をもとに、機能全体を詳細に説明するのが機能要件の役割です。
このようにして、両者の理解を深めることで、円滑な開発が進められ、最終的なシステムの品質向上に寄与します。
非機能要件
開発するシステムの全体像を表すもので、顧客からのレビューを忠実に反映させます。具体的には、顧客と開発者の双方が理解できる設計書の作成が重要です。顧客の要件を基にして作成された基本設計書をもとに、機能全体を詳細に説明するのが機能要件の役割です。
このようにして、両者の理解を深めることで、円滑な開発が進められ、最終的なシステムの品質向上に寄与します。
システム構成
システム運用において必要なインプットやアウトプット、さらには外部とのやり取りを考慮して作成するのがシステム構成です。システム構成は、顧客と十分なレビューを行った上で、顧客とシステムエンジニアが共に検討していくプロセスです。この構成は最終的に顧客の確認を経て決定されます。
顧客の意見を取り入れる過程で、システムでは実現できない要望が生じることもあります。その際、システムエンジニアは代替案を提案し、問題解決に向けた提案を行わなければいけません。このように、顧客との密なコミュニケーションを通じて、より効果的なシステム運用が実現されます。
データベース設計
顧客データや社員データ、商品管理情報などの個人情報を蓄積し、必要なときにアクセスするためにはデータベースが必要不可欠です。データベース設計を行う際は、まず顧客がどのような情報を管理したいのか、またどのようにその情報を表示したいのかを十分に理解しておかなければいけません。
その後、具体的なデータベース設計に進み、管理すべき情報の項目や表示可能な情報を顧客に確認してもらいます。顧客からの承認を得られれば、データベースの開発は他の開発工程に先行して行われます。このように、初期段階での顧客とのコミュニケーションが、スムーズなデータベース構築につながります。
インターフェース設計
インターフェース設計は顧客の運用に直結するため、非常に注意深く行う必要があります。この作業では、設計書を作成した後に顧客と何度ものすり合わせが不可欠です。顧客の運用ニーズに合った設計がなければ、システムは価値を失ってしまいます。
さらに、社内ではデータベースとのインターフェース部分の統一も重要です。開発者全員が同じレベルでデータにアクセスできるように工夫し、一貫性のあるデータ操作を実現しなければいけません。これにより、システム全体の効率性が向上し、運用時のトラブルを減少させられます。
詳細設計書や基本設計書との違い
| 項目 | 基本設計書 | 詳細設計書 | 
| 目的 | システム全体の概要を把握するため | 機能ごとにモジュール別の設計 | 
| やること | 要件概要、機能分割 データ設計 | インタフェース仕様、アルゴリズム | 
| 対象者 | 顧客、機能毎のリーダー | 担当者、プログラマー | 
| 開発段階 | 開発初期段階 | 開発中盤 | 
| 難易度 | 非常に高難度の知識が必要 | 中程度の知識とプログラミング知識が必要 | 
基本設計書と詳細設計書は目的や対象者において大きな違いがあります。基本設計書の主な目的は、顧客にシステムの概要を伝えることです。一方、詳細設計書は開発者がシステムを正しく理解できるようにすることを重視しています。
基本設計書は全体像を把握させるためのものであり、詳細設計書は具体的な実装や技術的な詳細を提供することに焦点を当てています。このように、それぞれの文書は異なる視点と目的を持っているのです。
機能設計書の書き方

システムの機能を明確にするために重要な役割を果たすのが機能設計書です。この文書では、顧客の要望を忠実に反映させることが重要です。まず、システムの目的と開発範囲を明確にし、その範囲に沿った機能の洗い出しを行います。
そして、それらの機能を具体的に記述して設計書としてまとめるのが機能設計書の主な役割です。これにより、開発チーム全体が共通の理解を持ち、円滑なシステム開発が可能になります。ここでは、下記7つの機能設計書の詳細を記述します。
- 要件定義の確認
 - 必要な機能の洗い出し
 - 設計書の種類と数を決める
 - テンプレートの準備や作成
 - 機能要件のワークフローや対応をまとめる
 - 非機能要件の対応をまとめる
 - 設計書のレビュー
 
要件定義の確認
最初に行うべきなのが要件定義の確認作業です。顧客の要件を正確に把握しない限り、その後の開発に進むことはできません。顧客との十分な打ち合わせを通じて、要件を洗い出し、明確化を図ります。
あいまいな要求については、詳細なディスカッションを行い、顧客が何を求めているのかを具体的に理解します。このプロセスを経て、要件が明確になった段階で、要件定義書を作成し、顧客からの承認を得る必要があります。これにより、開発の基盤が確立され、スムーズなプロジェクト進行が可能となります。
必要な機能の洗い出し
顧客の要件が明確になった後は、必要な機能を具体的に洗い出していく段階に入ります。このプロセスでは、洗い出した機能が本当に顧客にとって必要なものであるかどうかを、必ず確認することが重要です。不必要な機能を追加してしまうと、コストが増加し、開発期間の遅延にもつながる可能性があります。
顧客と密にコミュニケーションを取りながら、必要な機能を正確に特定し、無駄を省くことが、プロジェクトの成功に寄与します。適切な機能リストを作成することで、スムーズな開発が実現できるでしょう。
設計書の種類と数を決める
機能の洗い出しが完了したら、次はどの設計書が必要かを見極める重要なステップに入ります。この段階では、洗い出した機能がどのように実装されるかを考え、必要な設計書を明確にしていきます。具体的には、各機能に対してユーザーインターフェース(UI)が必要かどうか、データベースが必要か、また機能間のインターフェースが必要かを検討します。
このプロセスでは、機能の具体的な定義を行うことが不可欠です。
これらを通じて、各機能がどのように連携し、全体として一つのシステムを形成するかを明確にすることが目指されます。これにより、後の設計作業がスムーズに進むための基盤を築けます。
テンプレートの準備や作成
各種設計書を作成する際には、書く人と読む人が意識を統一できるよう、テンプレートを用意することが重要です。読む人が設計書の内容を理解できなければ、意味がありません。そのため、テンプレートに含める項目をあらかじめ決めておくことで、誤解を避けることができます。
設計書作成においては、HIPO(Hierarchy Input Process Output)手法がよく使用されます。HIPOは、情報を階層的に整理し、入力、処理、出力を明確に示すための基本形として役立ちます。この方法を採用することで、設計書の一貫性が保たれ、誰が見ても理解しやすい文書を作成することが可能になります。
機能要件のワークフローや対応をまとめる
機能要件をワークフローにまとめることは、開発者が正確に理解するために非常に効果的です。このプロセスでは、まず最も重要な機能と、それほど意識する必要のない機能を明確に分けなければいけません。その後、これに基づいて設計書を作成していきます。
さらに、最終的にテストまでのフローを整備することで、システム開発を円滑に進められます。この一連の作業は、プロジェクトの成功に向けて欠かせない要素となります。
非機能要件の対応をまとめる
システムの精度を高めるためには、非機能要件を適切に扱う必要があります。その中でも特に重要なのがレスポンス速度です。顧客が期待するレスポンス時間はシステムの成功に直結していて、どれだけ機能が充実していても、レスポンスが遅ければユーザーの満足度は低下します。このため、開発段階から迅速な応答を実現するための最適化が必要です。
また、障害発生時の対応策も重要な非機能要件です。システムの可用性を確保するには、障害時に迅速に復旧できる仕組みを整えておかなければいけません。これには、冗長構成や定期的なバックアップ、そして事前に策定した障害対応手順が含まれます。
これら二つの要素、レスポンス速度と障害対応を意識してシステム開発を進めることで、最終的に高品質なシステムを構築することが可能になります。
設計書のレビュー
完成した設計書は、都度レビューを行うことが不可欠です。特に、顧客とのレビューと開発チーム内でのレビューの両方が必要です。レビューの過程で誤りを発見することもあります。最初に社内レビューを実施し、システム全体の流れに沿った開発が行われているか確認します。
その後、顧客とのレビューに進み、顧客からの承認を得られれば、実際の開発に着手できます。このプロセスにより、設計書の精度を高め、顧客の期待に応えるシステム構築が可能です。
機能設計書を作成する時のポイント

機能設計書を作成する際には、いくつかの重要なポイントに注意する必要があります。書き方ひとつでその後の作業が失敗するリスクがあるため、特に慎重に進めなければいけません。開発コストや期間を最小限に抑えるには、まず、明確で具体的な要件定義を行うことが不可欠です。次に、関係者全員が理解しやすい表現を用いることが重要です。
開発のコスト、期間を最小限にするためには最低限以下の3つは注意しなければいけないポイントになります。
- プログラマーの裁量に任せるべきところまでは書かないこと
 - 簡潔に分かりやすく書くこと
 - 設計書作成ツールやアプリを活用すること
 
プログラマーの裁量に任せるべきところまでは書かないこと
機能設計書を作成する際には、プログラマーが実際に行うべき作業まで詳細に書きすぎることは避けるべきです。設計書はあくまで最低限の機能に基づいた設計を提供し、プログラマーには自ら考え、工夫してプログラミングを行ってもらう必要があります。
このようにすることで、彼らの専門性を活かし、より効果的なソリューションを生み出すことが可能です。ただし、プログラマーの技術レベルに応じた設計書の作成も重要になります。彼らが理解しやすい内容にすることで、スムーズな開発を促進し、全体の生産性を向上させられます。このバランスを意識することが、成功するプロジェクトの鍵となります。
簡潔に分かりやすく書くこと
機能設計書を作成する際は、機能担当者やプログラマーが理解しやすいように、難解な日本語を避ける必要があります。特に、詳細設計やプログラミングを担当する開発者の技術レベルを考慮し、その理解度に合った内容にしなければいけません。
また、設計書の書き方に関しては、IPO(入力・処理・出力)形式やフローチャートなど、適切な形式を選ぶ必要があります。これにより、情報が整理され、関係者がよりスムーズに理解できる設計書が完成します。このような配慮を行うことで、プロジェクト全体の円滑な進行が期待できるでしょう。
設計書作成ツールやアプリを活用すること
最近の設計書の作成にはツールやアプリなど、非常に優秀なものがあります。これらを活用することで、開発期間の短縮、コストカットが可能です。ここでは、以下の2つのツールについて解説します。
Jitera

Jitera社は、システム開発の効率化とコスト削減を実現する革新的な企業として、最近注目を集めています。AIを駆使し、開発プロセスの設定から実装までを自動化することで、最適なシステムを迅速に提供しています。これにより、開発段階で自動化できる部分を徹底的に自動化し、開発スケジュールの短縮とコストカットを実現しています。
Miro

Miroはオンラインホワイトボードツールで、フローチャートやマインドマップの作成が可能です。自由に図形を描くこともでき、視覚的な情報整理に役立ちます。また、複数のメンバーが同時に作業できるため、リアルタイムでのコラボレーションが実現できる点も大きな魅力です。
Draw.io

フローチャートやダイアグラムを作成する際には、Draw.ioが便利です。直感的な操作でさまざまな図形やテンプレートを利用でき、複雑なシステムを視覚的にわかりやすい形で表現できます。これにより、情報の整理や共有がスムーズになり、理解を深めることが可能です。
機能設計書のまとめ

これまで、機能設計書の概念やその種類について詳しく解説してきました。また、実際に機能設計書をどのように作成していくかについても具体的な手順を紹介しました。機能設計書は、システム化します。そのため、これらの情報をしっかりと参考にし、設計書の作成に役立ててください。特に内部開発を行う際には、機能設計書の正しい書き方を学ぶことが重要です。
明確で分かりやすい設計書を作成することで、チーム全体の理解が深まり、開発プロセスが円滑に進行します。今後のプロジェクトにおいて、この知識を活かし、質の高い機能設計書を作成していくことを目指しましょう。
株式会社Jiteraは、豊富な専門知識とAI技術を駆使したシステム開発やAI導入支援を行っています。AIに関する質問やプロジェクトのご相談がありましたら、ぜひ株式会社Jiteraにご連絡ください。

  
                
                
