内部設計と外部設計の違いは?工程の流れや必要なスキルも解説!
公開日:2024年02⽉27⽇最終更新日:2024年03⽉05⽇
初心者エンジニアのなかには、内部設計と外部設計の違いがわからなかったり、内部設計で何をすればよいのかわからなかったりする人もいるでしょう。
内部設計は、外部設計と共にプロダクトの完成度を左右する重要な工程です。内部設計ができるようになると、エンジニアとしてのキャリアアップ・スキルアップにつながるほか、報酬アップも期待できるでしょう。
この記事では、内部設計と外部設計の違いから、内部設計の工程や設計書を書くときのポイントなどを、内部設計にフォーカスして解説します。
内部設計について知りたい方は、ぜひ最後までご覧ください。
内部設計と外部設計の違い
内部設計も外部設計も、プロダクトの完成度を大きく左右する非常に重要なものです。しかしこの2つの違いがわからないという人もいるでしょう。
まずは内部設計と外部設計の違いを解説します。
内部設計とは
内部設計とは、外部設計で決めた仕様ともとに、ユーザーから見えない部分の仕様を決めていくことをいいます。
たとえばデータ処理のしかたやデータの初期値など、ユーザーが触れることはないが機能を実装するためには決めておかなければならないことを決定し、設計書に起こすのが内部設計です。
内部設計は一般的に、次の3つのフェーズに分けて行われます。
・機能分割
・物理データの設計
・入出力の詳細設計
外部設計とは
外部設計とは、内部設計とは対照的にユーザーが実際に触れる部分を設計することをいいます。
要件定義書をもとに、操作方法や操作画面などをユーザーの使いやすさを優先して設計するのが外部設計です。
外部設計は、一般的に次の3つのフェーズに分けて行われます。
・方式設計
・機能設計
・そのほかの設計
内部設計と外部設計は開発する場所が違う
内部設計と外部設計の違いは、開発する場所の違いです。
内部設計は、そのソフトやシステムを使う人が直接触れることがない部分を設計します。一方、外部設計は使う人が触れる場所を設計します。
いくら外部設計でユーザーが使いやすいシステムを設計したとしても、内部設計がきちんと行われていなければシステムの開発は難航します。
内部設計では、データフロー図やデータベース物理設計書、機能仕様書などが作成されますが、これらはユーザーやクライアントに共有されることはありません。基本的に開発に携わるエンジニア内部でのみ共有されます。
内部設計は、ユーザーからは見えないものの、システム開発には必要不可欠なものです。言い換えるなら縁の下の力持ち、大道具や衣装など舞台の裏方といえるでしょう。
内部設計の工程
ここからは、内部設計の工程を詳しく解説します。
内部設計の工程は
・機能分割
・物理データの設計
・入出力の詳細設計
の3工程に分けて行われるのが一般的です。
それぞれの工程でどのようなことをするのか押さえておくことで、内部設計への理解が深まるでしょう。
機能分割
機能分割とは、開発するソフト・システムを機能ごとに分割する工程を指します。
ECサイトを構築する場合は、
・商品の表示
・カート機能
・決済機能
など開発するものを機能ごとに分割し、設計するのが「機能分割」です。
機能ごとに分割して、仕様や設計を明確にするとプログラミングやシステムのメンテナンスがしやすくなるというメリットがあります。
物理データの設計
物理データの設計は、設計バグを防ぐうえで重要な工程です。
ユーザーに見えない部分で行われるデータの処理やデータの流れを設計します。
データフロー設計
データフロー設計は、データの流れを設計することです。
線や図形を使ってデータの流れを表した「データフロー図」を用いて、機能間でどういったデータのやり取りが行なわれるかを設計します。
データフロー設計をきちんと行わずに開発に着手してしまうと、バグが発生しやすくなってしまいます。
データベース設計
データベース設計では、データの格納方法や格納場所を決めるためにテーブルやインデックスを定義する(物理設計)ほか、データの整理・選択(論理設計)を行います。
データベース設計には、データベースの性能向上のための設計(索引設計)も含まれます。
入出力の設計
入出力の設計では、外部設計で決めたことをどのように実装するかをより詳細に設計します。
たとえばエラーの処理方法やデータの初期値、デフォルト値の定義、入力されたデータのチェック方法、画面に表示するメッセージなどを設計するのがこの工程です。
内部設計書に盛り込むべき内容
内部設計では内部設計書(技術仕様書)を作成するのが一般的です。
内部設計書に含まれるものは現場によって異なりますが、基本的に次の6つが含まれます。
・データベース物理設計書
データの格納方法や格納場所の設計書
・データフロー図
機能間でのデータのやり取り・処理を示した図
・クラス図
プログラムのなか含まれるクラスや、クラス間の関係を示した図
・モジュール構造図
図形や矢印を用いてモジュールの構造を示した図
・シーケンス図
システムの概要や仕様、データ処理の流れを示した図
・アクティビティ図
システム実行の流れと条件分岐を図や矢印で示した図
内部設計書を書く際のポイント
内部設計書は、基本的に開発に携わるエンジニア間でのみ共有されるもので、ユーザーやクライアントに共有されることはありません。
しかし、開発のしやすさを大きく左右する物なので、書く際は次のポイントを意識してみましょう。
外部設計書に沿った内容にする
内部設計書を書く際は、外部設計書をよく確認して、それに沿った内容にしましょう。
外部設計書をもとに開発するソフト・システムを機能ごとに分け、重複する部分を統一化したり、プラットフォームに合わせたりすると外部設計書に沿ったわかりやすい内部設計書が作れます。
読みやすい書き方を心がける
読みやすい書き方を心がけることも重要です。
文章は一文一意(ひとつの文章で述べることはひとつに留める)を意識し、簡潔に記述することを意識しましょう。
専門用語を使う場合は、読む人の間で認識に齟齬が出ないように、適宜補足を入れてください。
設計書のボリュームが大きくなるときは、見出しを設けると読みやすさが向上します。
誤字脱字や表記ゆれにも気を配れればベストです。
読みやすい設計書かどうかは、書いた本人にはわかりません。設計書が書きあがったらチーム内で回覧して校正・推敲を行いブラッシュアップしていくとよいでしょう。
チーム内で内部設計書のレビューを行うことは、設計書の属人化を防ぐのにも役立ちます。
開発の現場では、内部設計書があってもそれを書いた人しか内容をきちんと理解しておらず、開発に支障が出てしまうことがあります。
設計書の書き方にはルールがないため書き方は人によって異なり、それが認識の齟齬や理解不足を生んでいることが少なくありません。かといって、設計書の書き方に全世界共通のルールを設けるのは容易ではなく、ほぼ不可能です。
開発はチームで行うものだからこそ、携わるすべてのエンジニアが理解できるような設計書になるよう努力を惜しむべきではありません。
曖昧な表現を避ける
曖昧な表現を避けることも、誰もがわかりやすい内部設計書を書くうえで重要です。
数字で表せるところは数字で表し、決まった表現を使いましょう。
設計書は、小説のように叙情的である必要はありません。誰が見てもわかりやすく、認識に齟齬が出ない者である必要があります。
曖昧な表現は読み手によって受け取り方が変わってしまうので、設計書では用いないようにしましょう。
積極的に図表を用いる
わかりやすい設計書を書くには、積極的に図表を用いるのも効果的です。
内部設計書では、主に次のような図表が用いられます。
・クラス図
・モジュール構成図
・アクティビティ図
・シーケンス図
どの図にもある程度決まったフォーマットがあるので、それに則って作成しましょう。
クラス図やシーケンス図の書き方については、こちらの講座で詳しく学べます。
内部設計に必要な知識やスキル
ここからは、内部設計に必要な知識やスキルを解説します。上流工程に関わって、エンジニアとしてスキルアップしたい・報酬アップにつなげたいという人は、次の知識・スキルを学んでみましょう。
ITに関する専門知識
内部設計などの上流工程にかかわるには、ITに関する専門知識が必要不可欠です。IT技術は日々進歩しているので、常に最新の知識を身につけるよう自己研鑽を続けましょう。
上流工程に関わりたいなら、特定の分野に限った知識を身につけるのではなく、IT技術全般の知識を高いレベルで身につけている必要があります。
すべての知識を高いレベルで身につけるのは容易ではありませんが、日々勉強を続け、知識のアップデートを続けてください。
高い技術力・提案スキル
高い技術力・提案スキルも重要なスキルです。
内部設計は、基本的に外部設計に沿って行います。しかし、そのなかで改善できることが見つかったなら、ぜひクライアントに提案してみましょう。それがクライアントの満足度向上につながることもあります。
システムの改善点を見つけ、クライアントが納得できるように提案するには、確かな技術力と提案スキルが欠かせません。
提案の際は、プレゼンテーションのテクニックなどが使えます。ぜひプレゼンテーションのコツなどについても学んでみましょう。
コミュニケーションスキル
内部設計の担当者がクライアントと直接やり取りをする機会は多くはありませんが、最低限のコミュニケーションスキルは必要です。
多くの場合、ソフトやシステムの開発はチームで行われます。そのなかでメンバーをまとめたり、設計内容をほかのエンジニアに正しく伝えたりするには、コミュニケーションが欠かせません。
コミュニケーションに苦手意識を持っている人も多いでしょうが、まずは相手の話を聞くことからはじめてみましょう。
ヒアリングスキル
クライアントの求めるものが何かを聞き出す「ヒアリング能力」もエンジニアに求められる能力です。
ヒアリングスキルを高めれば、クライアントのニーズがつかみやすくなるため、より効果的な提案ができるようになります。
マネジメントスキル
チームでシステム開発を行っていると、予期せぬトラブルや開発の遅れなどに見舞われることもあるでしょう。そのようなときに必要になるのが、マネジメントスキルです。
限られたリソースと時間で、期限内に開発を完了させるには、一人ひとりが自分自身の進捗状況を管理することが重要です。
普段からタスク管理・セルフマネジメントができているなら問題ありませんが、セルフマネジメントができていないと感じる人はこの機会にマネジメントスキルを学んでみてはいかがでしょうか。
内部設計の知識やスキルを習得する方法
ここまで内部設計について解説してきましたが、
「いまいちわからない」
「どうすれば内部設計に必要な知識やスキルが身につくかわからない」
という人もいるでしょう。
そのような方におすすめしたいのが東京ITスクールの『「内部設計(詳細設計)」講座』です。
こちらの講座を受講すると、内部設計の基礎が学べるほか、フォーマットを使って内部設計書が書けるようになります。
1日で効率的に内部設計について学べる講座ですので、エンジニアとしてスキルアップ・キャリアアップを目指す方はぜひこの機会に受講をご検討ください。
内部設計のスキルを身につけてステップアップしよう!
内部設計では、ユーザーやクライアントから見えない部分を設計します。外部設計と違ってユーザーやクライアントの目に留まることはありませんが、ソフト・システム開発には必要不可欠な工程です。
内部設計ができるスキルを身につけることは、エンジニアとしてキャリアアップ・報酬アップにつながります。
内部設計のスキルを身につけたい人は、ぜひ東京ITスクールの『「内部設計(詳細設計)」講座』をご活用ください。
東京ITスクールではこのほかにもたくさんの講座・研修を開催しています。ニーズに合わせたカスタマイズ研修も承っていますので、興味を持たれた方はお気軽にお問い合わせください。
関連記事
現場SEとして活躍する傍ら、IT研修講師として多数のIT未経験人材の育成に貢献。
現在は中小企業を中心としたDX、リスキリングを支援。
メンターとして個々の特性に合わせたスキルアップもサポートしている。
趣味は温泉と神社仏閣巡り。